From f6cc172d06e605c98ec243154507a8c2452fe82e Mon Sep 17 00:00:00 2001
From: Leandro Melo <leandro.melo@nokia.com>
Date: Tue, 27 Apr 2010 16:33:40 +0200
Subject: [PATCH] Initial code for the generic highlighter.

---
 .../genericeditor/GenericEditor.mimetypes.xml |  123 +
 .../genericeditor/GenericEditor.pluginspec    |   20 +
 src/plugins/genericeditor/XML/alert.xml       |   61 +
 src/plugins/genericeditor/XML/c.xml           |  198 +
 src/plugins/genericeditor/XML/cpp.xml         |  343 +
 src/plugins/genericeditor/XML/css.xml         |  699 ++
 src/plugins/genericeditor/XML/doxygen.xml     |  483 ++
 src/plugins/genericeditor/XML/fortran.xml     |  569 ++
 src/plugins/genericeditor/XML/html.xml        |  207 +
 src/plugins/genericeditor/XML/java.xml        | 3864 ++++++++++
 src/plugins/genericeditor/XML/javadoc.xml     |  108 +
 src/plugins/genericeditor/XML/javascript.xml  |  503 ++
 src/plugins/genericeditor/XML/objectivec.xml  |  128 +
 src/plugins/genericeditor/XML/perl.xml        |  833 +++
 src/plugins/genericeditor/XML/php.xml         | 6583 +++++++++++++++++
 src/plugins/genericeditor/XML/python.xml      |  373 +
 src/plugins/genericeditor/XML/ruby.xml        |  915 +++
 src/plugins/genericeditor/XML/sql.xml         |  951 +++
 src/plugins/genericeditor/XML/tcl.xml         |  536 ++
 src/plugins/genericeditor/context.cpp         |  156 +
 src/plugins/genericeditor/context.h           |  110 +
 src/plugins/genericeditor/dynamicrule.cpp     |   67 +
 src/plugins/genericeditor/dynamicrule.h       |   64 +
 src/plugins/genericeditor/genericeditor.cpp   |  102 +
 src/plugins/genericeditor/genericeditor.h     |   79 +
 src/plugins/genericeditor/genericeditor.pri   |    3 +
 src/plugins/genericeditor/genericeditor.pro   |   48 +
 src/plugins/genericeditor/genericeditor.qrc   |   23 +
 .../genericeditor_dependencies.pri            |    2 +
 .../genericeditor/genericeditorconstants.h    |   62 +
 .../genericeditor/genericeditorfactory.cpp    |   72 +
 .../genericeditor/genericeditorfactory.h      |   71 +
 .../genericeditor/genericeditorplugin.cpp     |  191 +
 .../genericeditor/genericeditorplugin.h       |  101 +
 .../genericeditor/highlightdefinition.cpp     |  189 +
 .../genericeditor/highlightdefinition.h       |  131 +
 .../highlightdefinitionhandler.cpp            |  470 ++
 .../highlightdefinitionhandler.h              |  107 +
 src/plugins/genericeditor/highlighter.cpp     |  386 +
 src/plugins/genericeditor/highlighter.h       |  144 +
 .../genericeditor/highlighterexception.h      |   41 +
 .../genericeditor/includerulesinstruction.cpp |   50 +
 .../genericeditor/includerulesinstruction.h   |   56 +
 src/plugins/genericeditor/itemdata.cpp        |  127 +
 src/plugins/genericeditor/itemdata.h          |   69 +
 src/plugins/genericeditor/keywordlist.cpp     |   61 +
 src/plugins/genericeditor/keywordlist.h       |   53 +
 .../languagespecificfactories.cpp             |  143 +
 .../genericeditor/languagespecificfactories.h |  195 +
 src/plugins/genericeditor/progressdata.cpp    |   82 +
 src/plugins/genericeditor/progressdata.h      |   72 +
 src/plugins/genericeditor/reuse.h             |   91 +
 src/plugins/genericeditor/rule.cpp            |  292 +
 src/plugins/genericeditor/rule.h              |  160 +
 src/plugins/genericeditor/specificrules.cpp   |  467 ++
 src/plugins/genericeditor/specificrules.h     |  288 +
 src/plugins/plugins.pro                       |    5 +
 57 files changed, 22327 insertions(+)
 create mode 100644 src/plugins/genericeditor/GenericEditor.mimetypes.xml
 create mode 100644 src/plugins/genericeditor/GenericEditor.pluginspec
 create mode 100644 src/plugins/genericeditor/XML/alert.xml
 create mode 100644 src/plugins/genericeditor/XML/c.xml
 create mode 100644 src/plugins/genericeditor/XML/cpp.xml
 create mode 100644 src/plugins/genericeditor/XML/css.xml
 create mode 100644 src/plugins/genericeditor/XML/doxygen.xml
 create mode 100644 src/plugins/genericeditor/XML/fortran.xml
 create mode 100644 src/plugins/genericeditor/XML/html.xml
 create mode 100644 src/plugins/genericeditor/XML/java.xml
 create mode 100644 src/plugins/genericeditor/XML/javadoc.xml
 create mode 100644 src/plugins/genericeditor/XML/javascript.xml
 create mode 100644 src/plugins/genericeditor/XML/objectivec.xml
 create mode 100644 src/plugins/genericeditor/XML/perl.xml
 create mode 100644 src/plugins/genericeditor/XML/php.xml
 create mode 100644 src/plugins/genericeditor/XML/python.xml
 create mode 100644 src/plugins/genericeditor/XML/ruby.xml
 create mode 100644 src/plugins/genericeditor/XML/sql.xml
 create mode 100644 src/plugins/genericeditor/XML/tcl.xml
 create mode 100644 src/plugins/genericeditor/context.cpp
 create mode 100644 src/plugins/genericeditor/context.h
 create mode 100644 src/plugins/genericeditor/dynamicrule.cpp
 create mode 100644 src/plugins/genericeditor/dynamicrule.h
 create mode 100644 src/plugins/genericeditor/genericeditor.cpp
 create mode 100644 src/plugins/genericeditor/genericeditor.h
 create mode 100644 src/plugins/genericeditor/genericeditor.pri
 create mode 100644 src/plugins/genericeditor/genericeditor.pro
 create mode 100644 src/plugins/genericeditor/genericeditor.qrc
 create mode 100644 src/plugins/genericeditor/genericeditor_dependencies.pri
 create mode 100644 src/plugins/genericeditor/genericeditorconstants.h
 create mode 100644 src/plugins/genericeditor/genericeditorfactory.cpp
 create mode 100644 src/plugins/genericeditor/genericeditorfactory.h
 create mode 100644 src/plugins/genericeditor/genericeditorplugin.cpp
 create mode 100644 src/plugins/genericeditor/genericeditorplugin.h
 create mode 100644 src/plugins/genericeditor/highlightdefinition.cpp
 create mode 100644 src/plugins/genericeditor/highlightdefinition.h
 create mode 100644 src/plugins/genericeditor/highlightdefinitionhandler.cpp
 create mode 100644 src/plugins/genericeditor/highlightdefinitionhandler.h
 create mode 100644 src/plugins/genericeditor/highlighter.cpp
 create mode 100644 src/plugins/genericeditor/highlighter.h
 create mode 100644 src/plugins/genericeditor/highlighterexception.h
 create mode 100644 src/plugins/genericeditor/includerulesinstruction.cpp
 create mode 100644 src/plugins/genericeditor/includerulesinstruction.h
 create mode 100644 src/plugins/genericeditor/itemdata.cpp
 create mode 100644 src/plugins/genericeditor/itemdata.h
 create mode 100644 src/plugins/genericeditor/keywordlist.cpp
 create mode 100644 src/plugins/genericeditor/keywordlist.h
 create mode 100644 src/plugins/genericeditor/languagespecificfactories.cpp
 create mode 100644 src/plugins/genericeditor/languagespecificfactories.h
 create mode 100644 src/plugins/genericeditor/progressdata.cpp
 create mode 100644 src/plugins/genericeditor/progressdata.h
 create mode 100644 src/plugins/genericeditor/reuse.h
 create mode 100644 src/plugins/genericeditor/rule.cpp
 create mode 100644 src/plugins/genericeditor/rule.h
 create mode 100644 src/plugins/genericeditor/specificrules.cpp
 create mode 100644 src/plugins/genericeditor/specificrules.h

diff --git a/src/plugins/genericeditor/GenericEditor.mimetypes.xml b/src/plugins/genericeditor/GenericEditor.mimetypes.xml
new file mode 100644
index 00000000000..e474c30d80f
--- /dev/null
+++ b/src/plugins/genericeditor/GenericEditor.mimetypes.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
+    <mime-type type="text/css">
+        <sub-class-of type="text/plain"/>
+        <comment>CSS file</comment>
+        <glob pattern="*.css"/>
+    </mime-type>    
+	<mime-type type="text/x-fortran">
+        <sub-class-of type="text/plain"/>
+        <comment>Fortran file</comment>
+        <glob pattern="*.f90"/>
+    </mime-type>
+    <mime-type type="text/html">
+        <sub-class-of type="text/plain"/>
+        <comment>HTML file</comment>
+        <glob pattern="*.htm"/>
+		<glob pattern="*.html"/>
+		<glob pattern="*.shtml"/>
+    </mime-type>	
+    <mime-type type="text/x-java">
+        <sub-class-of type="text/plain"/>
+        <comment>Java file</comment>
+        <glob pattern="*.java"/>
+    </mime-type>
+    <mime-type type="application/x-javascript">
+        <sub-class-of type="text/plain"/>
+        <comment>Javascript file</comment>
+        <glob pattern="*.js"/>
+    </mime-type>
+    <mime-type type="application/x-perl">
+        <sub-class-of type="text/plain"/>
+        <comment>Perl file</comment>
+        <glob pattern="*.pl"/>
+		<glob pattern="*.pm"/>
+    </mime-type>
+    <mime-type type="application/x-php">
+        <sub-class-of type="text/plain"/>
+        <comment>PHP file</comment>
+        <glob pattern="*.php"/>
+    </mime-type>	
+    <mime-type type="text/x-python">
+        <sub-class-of type="text/plain"/>
+        <comment>Python file</comment>
+        <glob pattern="*.py"/>
+    </mime-type>
+    <mime-type type="text/x-ruby">
+        <sub-class-of type="text/plain"/>
+        <comment>Ruby file</comment>
+        <glob pattern="*.rb"/>
+    </mime-type>
+    <mime-type type="text/x-sql">
+        <sub-class-of type="text/plain"/>
+        <comment>SQL file</comment>
+        <glob pattern="*.sql"/>
+    </mime-type>
+    <mime-type type="application/x-tcl">
+        <sub-class-of type="text/plain"/>
+        <comment>TCL file</comment>
+        <glob pattern="*.tcl"/>
+    </mime-type>
+	
+	
+	
+    <mime-type type="text/x-csrc">
+        <sub-class-of type="text/plain"/>
+        <comment>C Source file</comment>
+        <glob pattern="*.c"/>
+        <!-- NVIDIA CUDA files are like C -->
+        <glob pattern="*.cu"/>
+    </mime-type>
+
+    <!-- A C Header file is virtually undistinguishable from the C++ header  -->
+    <mime-type type="text/x-chdr">
+        <sub-class-of type="text/x-csrc"/>
+        <comment>C Header file</comment>
+        <glob pattern="*.h"/>
+    </mime-type>
+
+    <!-- Those are used to find matching headers by the CppTools plugin,
+         so, they should match -->
+    <mime-type type="text/x-c++hdr">
+        <sub-class-of type="text/x-chdr"/>
+        <comment>C++ Header file</comment>
+        <comment>C++ header</comment>
+        <glob pattern="*.h"/>
+        <glob pattern="*.hh"/>
+        <glob pattern="*.hxx"/>
+        <glob pattern="*.h++"/>
+        <glob pattern="*.H"/>
+        <glob pattern="*.hpp"/>
+        <glob pattern="*.hp"/>
+        <!-- Find include guards of header files without extension, for
+             example, STL ones like <string> -->
+        <magic priority="50">
+           <match value="#ifndef" type="string" offset="0:1000"/>
+        </magic>
+    </mime-type>
+
+    <mime-type type="text/x-c++src">
+        <comment>C++ Source file</comment>
+        <sub-class-of type="text/x-csrc"/>
+        <comment>C++ source code</comment>
+        <glob pattern="*.cpp"/>
+        <glob pattern="*.cp"/>
+        <glob pattern="*.cc"/>
+        <glob pattern="*.cxx"/>
+        <glob pattern="*.c++"/>
+        <glob pattern="*.C"/>
+        <glob pattern="*.inl"/>
+        <glob pattern="*.moc"/>
+        <glob pattern="*.qdoc"/>
+    </mime-type>
+	
+    <mime-type type="text/x-objcsrc">
+         <comment>Objective-C source code</comment>
+         <sub-class-of type="text/x-csrc"/>
+         <magic priority="30">
+         <match value="#import" type="string" offset="0"/>
+         </magic>
+         <glob pattern="*.m"/>
+         <glob pattern="*.mm"/>
+    </mime-type>	
+</mime-info>
diff --git a/src/plugins/genericeditor/GenericEditor.pluginspec b/src/plugins/genericeditor/GenericEditor.pluginspec
new file mode 100644
index 00000000000..f064af79c63
--- /dev/null
+++ b/src/plugins/genericeditor/GenericEditor.pluginspec
@@ -0,0 +1,20 @@
+<plugin name="GenericEditor" version="1.3.84" compatVersion="1.3.84">
+    <vendor>Nokia Corporation</vendor>
+    <copyright>(C) 2010 Nokia Corporation</copyright>
+    <license>
+Commercial Usage
+
+Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Nokia.
+
+GNU Lesser General Public License Usage
+
+Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation.  Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+    </license>
+    <category>Qt Creator</category>
+    <description>Generic editor with highlighting for a variety of languages.</description>
+    <url>http://qt.nokia.com</url>
+    <dependencyList>
+        <dependency name="Core" version="1.3.84"/>
+        <dependency name="TextEditor" version="1.3.84"/>
+    </dependencyList>
+</plugin>
diff --git a/src/plugins/genericeditor/XML/alert.xml b/src/plugins/genericeditor/XML/alert.xml
new file mode 100644
index 00000000000..f18d94dbc38
--- /dev/null
+++ b/src/plugins/genericeditor/XML/alert.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  This file is part of KDE's kate project.
+
+  copyright   : (C) 2004 by Dominik Haumann
+  email       : dhdev at gmx dot de
+
+ **********************************************************************
+ * This library is free software; you can redistribute it and/or      *
+ * modify it under the terms of the GNU Library General Public        *
+ * License as published by the Free Software Foundation; either       *
+ * version 2 of the License, or (at your option) any later version.   *
+ *                                                                    *
+ * This library is distributed in the hope that it will be useful,    *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
+ * Library General Public License for more details.                   *
+ *                                                                    *
+ * You should have received a copy of the GNU Library General Public  *
+ * License along with this library; if not, write to the              *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,   *
+ * Boston, MA  02110-1301, USA.                                       *
+ **********************************************************************
+
+ This file is included in every file that highlights the "alerts" keywords.
+ That's why extensions and mimetype are empty.
+-->
+<language version="1.08" kateversion="2.3" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL" hidden="true">
+  <highlighting>
+    <list name="alerts">
+      <item> ### </item>
+      <item> ALERT </item>
+      <item> BUG </item>
+      <item> DANGER </item>
+      <item> DEPRECATED </item>
+      <item> FIXME </item>
+      <item> HACK </item>
+      <item> NOTE </item>
+      <item> NOTICE </item>
+      <item> SECURITY </item>
+      <item> TASK </item>
+      <item> TEST </item>
+      <item> TESTING </item>
+      <item> TODO </item>
+      <item> WARNING </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
+        <keyword attribute="Alert" context="#stay" String="alerts" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Alert" defStyleNum="dsAlert"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1"/>
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/c.xml b/src/plugins/genericeditor/XML/c.xml
new file mode 100644
index 00000000000..ee0e90fa809
--- /dev/null
+++ b/src/plugins/genericeditor/XML/c.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="C" section="Sources"
+          version="1.42" kateversion="2.4"
+          indenter="cstyle"
+          extensions="*.c;*.C;*.h"
+          mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
+          priority="5">
+<!--
+##########################################################################
+## Fixes by Sebastian Pipping (webmaster@hartwork.org)
+##
+## NOTE: Keep in sync with C++ highlighter! (cpp.xml)
+##########################################################################
+-->
+  <highlighting>
+    <list name="keywords">
+      <item> break </item>
+      <item> case </item>
+      <item> continue </item>
+      <item> default </item>
+      <item> do </item>
+      <item> else </item>
+      <item> enum </item>
+      <item> extern </item>
+      <item> for </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> inline </item>
+      <item> return </item>
+      <item> sizeof </item>
+      <item> struct </item>
+      <item> switch </item>
+      <item> typedef </item>
+      <item> union </item>
+      <item> while </item>
+    </list>
+    <list name="types">
+      <item> auto </item>
+      <item> char </item>
+      <item> const </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> register </item>
+      <item> restrict </item>
+      <item> short </item>
+      <item> signed </item>
+      <item> static </item>
+      <item> unsigned </item>
+      <item> void </item>
+      <item> volatile </item>
+      <item> int8_t </item>
+      <item> int16_t </item>
+      <item> int32_t </item>
+      <item> int64_t </item>
+      <item> uint8_t </item>
+      <item> uint16_t </item>
+      <item> uint32_t </item>
+      <item> uint64_t </item>
+      <item> wchar_t </item>
+      <item> _Imaginary </item>
+      <item> _Complex </item>
+      <item> _Bool </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces />
+	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="PP" firstNonSpace="true" />
+        <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <DetectIdentifier />
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Int attribute="Decimal" context="#stay" >
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <LineContinue attribute="Comment" context="#stay"/>
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="AfterHash">
+        <!-- define, elif, else, endif, error, if, ifdef, ifndef, include, include_next, line, pragma, undef, warning -->
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"    defStyleNum="dsOthers"/> <!--,Qt::darkYellow,Qt::yellow,false,false)); -->
+      <itemData name="Alert"        defStyleNum="dsAlert" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+      <itemData name="Error"        defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" additionalDeliminator="'&quot;" />
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/cpp.xml b/src/plugins/genericeditor/XML/cpp.xml
new file mode 100644
index 00000000000..8de4b8dc66c
--- /dev/null
+++ b/src/plugins/genericeditor/XML/cpp.xml
@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="C++" section="Sources"
+          version="1.44" kateversion="2.4"
+          indenter="cstyle"
+          mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
+          extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.moc"
+          priority="9">
+<!--
+##########################################################################
+## Fixes by Sebastian Pipping (webmaster@hartwork.org)
+##
+## NOTE: Keep in sync with C highlighter! (c.xml)
+##########################################################################
+-->
+  <highlighting>
+    <list name="keywords">
+      <item> asm </item>
+      <item> break </item>
+      <item> case </item>
+      <item> catch </item>
+      <item> class </item>
+      <item> const_cast </item>
+      <item> continue </item>
+      <item> default </item>
+      <item> delete </item>
+      <item> do </item>
+      <item> dynamic_cast</item>
+      <item> else </item>
+      <item> enum </item>
+      <item> explicit </item>
+      <item> export </item>
+      <item> extern </item>
+      <item> false </item>
+      <item> friend </item>
+      <item> for </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> inline </item>
+      <item> namespace </item>
+      <item> new </item>
+      <item> operator </item>
+      <item> private </item>
+      <item> protected </item>
+      <item> public </item>
+      <item> qobject_cast </item>
+      <item> reinterpret_cast </item>
+      <item> return </item>
+      <item> sizeof </item>
+      <item> static_cast </item>
+      <item> struct </item>
+      <item> switch </item>
+      <item> template </item>
+      <item> this </item>
+      <item> throw </item>
+      <item> true </item>
+      <item> try </item>
+      <item> typedef </item>
+      <item> typeid </item>
+      <item> type_info </item>
+      <item> typename </item>
+      <item> union </item>
+      <item> using </item>
+      <item> virtual </item>
+      <item> while </item>
+
+      <item> and </item>
+      <item> and_eq </item>
+      <item> bad_cast </item>
+      <item> bad_typeid </item>
+      <item> bitand </item>
+      <item> bitor </item>
+      <item> compl </item>
+      <item> not </item>
+      <item> not_eq </item>
+      <item> or </item>
+      <item> or_eq </item>
+      <item> xor </item>
+      <item> xor_eq </item>
+      <item> except </item>
+      <item> finally </item>
+      <item> xalloc </item>
+    </list>
+    <list name="extensions">
+      <item> K_DCOP </item>
+      <item> Q_ARG </item>
+      <item> Q_ASSERT </item>
+      <item> Q_ASSERT_X </item>
+      <item> Q_CHECK_PTR </item>
+      <item> Q_CLASSINFO </item>
+      <item> Q_CLEANUP_RESOURCE </item>
+      <item> Q_D </item>
+      <item> Q_DECLARE_FLAGS </item>
+      <item> Q_DECLARE_FLAGS </item>
+      <item> Q_DECLARE_INTERFACE </item>
+      <item> Q_DECLARE_METATYPE </item>
+      <item> Q_DECLARE_OPERATORS_FOR_FLAGS </item>
+      <item> Q_DECLARE_PRIVATE </item>
+      <item> Q_DECLARE_PUBLIC </item>
+      <item> Q_DECLARE_SHARED </item>
+      <item> Q_DECLARE_TYPEINFO </item>
+      <item> Q_DISABLE_COPY </item>
+      <item> Q_ENUMS </item>
+      <item> Q_EXPORT </item>
+      <item> Q_FLAGS </item>
+      <item> Q_FOREACH </item>
+      <item> Q_FOREVER </item>
+      <item> Q_GADGET </item>
+      <item> Q_GLOBAL_STATIC </item>
+      <item> Q_GLOBAL_STATIC_WITH_ARGS </item>
+      <item> Q_INIT_RESOURCE </item>
+      <item> Q_INTERFACES </item>
+      <item> Q_INVOKABLE </item>
+      <item> Q_NOREPLY </item>
+      <item> Q_OBJECT </item>
+      <item> Q_OVERRIDE </item>
+      <item> Q_PRIVATE_SLOT </item>
+      <item> Q_PROPERTY </item>
+      <item> Q_Q </item>
+      <item> Q_RETURN_ARG </item>
+      <item> Q_SCRIPTABLE </item>
+      <item> Q_SETS </item>
+      <item> Q_SIGNALS </item>
+      <item> Q_SLOTS </item>
+      <item> Q_UNUSED </item>
+      <item> SIGNAL </item>
+      <item> SLOT </item>
+      <item> TRUE </item>
+      <item> FALSE </item>
+      <item> connect </item>
+      <item> disconnect </item>
+      <item> emit </item>
+      <item> signals </item>
+      <item> slots </item>
+      <item> foreach </item>
+      <item> forever </item>
+
+      <item> qint8 </item>
+      <item> qint16 </item>
+      <item> qint32 </item>
+      <item> qint64 </item>
+      <item> qlonglong </item>
+      <item> qptrdiff </item>
+      <item> qreal </item>
+      <item> quint8 </item>
+      <item> quint16 </item>
+      <item> quint32 </item>
+      <item> quint64 </item>
+      <item> quintptr </item>
+      <item> qulonglong </item>
+    </list>
+    <list name="types">
+      <item> auto </item>
+      <item> bool </item>
+      <item> char </item>
+      <item> const </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> mutable </item>
+      <item> register </item>
+      <item> short </item>
+      <item> signed </item>
+      <item> static </item>
+      <item> unsigned </item>
+      <item> void </item>
+      <item> volatile </item>
+      <item> uchar </item>
+      <item> uint </item>
+      <item> int8_t </item>
+      <item> int16_t </item>
+      <item> int32_t </item>
+      <item> int64_t </item>
+      <item> uint8_t </item>
+      <item> uint16_t </item>
+      <item> uint32_t </item>
+      <item> uint64_t </item>
+      <item> wchar_t </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces />
+        <RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="PP" firstNonSpace="true" />
+        <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Extensions" context="#stay" String="extensions" />
+        <keyword attribute="Data Type" context="#stay" String="types" />
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectIdentifier />
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+		  <AnyChar String="lL" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <Int attribute="Decimal" context="#stay">
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+		<Detect2Chars attribute="Comment 4" context="Commentar 4" char="/" char1="+" beginRegion="Comment"/>
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]{|}~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <LineContinue attribute="Comment" context="#stay"/>
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+		<Detect2Chars attribute="Inner Comment" context="Commentar 3" char="/" char1="#" beginRegion="Comment"/>
+      </context>
+	  
+      <context attribute="Comment 4" lineEndContext="#stay" name="Commentar 4">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment 4" context="#pop" char="+" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+		<Detect2Chars attribute="Inner Comment" context="Commentar 3" char="/" char1="#" beginRegion="Comment"/>
+      </context>	  
+	  
+	  <context attribute="Inner Comment" lineEndContext="#stay" name="Commentar 3">
+        <DetectSpaces />
+        <Detect2Chars attribute="Inner Comment" context="#pop" char="#" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="AfterHash">
+        <!-- define, elif, else, endif, error, if, ifdef, ifndef, include, include_next, line, pragma, undef, warning -->
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+		<!-- Not in Kate's -->
+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>		
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Extensions"   defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+	  <itemData name="Comment 4"      defStyleNum="dsOthers"/>
+	  <itemData name="Inner Comment" defStyleNum="dsString"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"    defStyleNum="dsFunction"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+      <itemData name="Error"        defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="" additionalDeliminator=""/>
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/css.xml b/src/plugins/genericeditor/XML/css.xml
new file mode 100644
index 00000000000..6b24dba0fff
--- /dev/null
+++ b/src/plugins/genericeditor/XML/css.xml
@@ -0,0 +1,699 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!--
+
+    Kate CSS syntax highlighting definition
+
+
+    Changelog:
+
+    - Version 2.02, by Rafał Miłecki:
+        - Added CSS 3 properties "border-*-image" and "border-*-radius".
+        - Added CSS values "clip", "ellipsis" and "ellipsis-word".
+        - Added CSS 3 properties "overflow-x", "overflow-y", "text-overflow", "box-shadow" and "outline-offset".
+        - Added CSS 3 color values: "rgba", "hsl" and "hsla".
+        - Added Gecko CSS properties: "-moz-border-*-colors".
+        - Added background size properties: "background-size" and prefixes: "-o-", "-webkit-" and "-khtml-".
+
+    - Version 2.01, by Mathieu Bonnet:
+        - Added CSS 3 property "border-radius".
+        - Added Gecko CSS properties "-moz-border-radius" and "-moz-box-flex".
+        - Added Gecko CSS value "-moz-box".
+        - Added Trident CSS functional notation "expression".
+        - Extended the id and class syntax specifications, as per CSS 2.1 grammar.
+
+-->
+
+<language name="CSS" version="2.02" kateversion="2.4" section="Markup" extensions="*.css" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+  <highlighting>
+    <list name="properties">
+      <!-- CSS2 -->
+      <item> azimuth </item>
+      <item> background </item>
+      <item> background-attachment </item>
+      <item> background-color </item>
+      <item> background-image </item>
+      <item> background-position </item>
+      <item> background-repeat </item>
+      <item> border </item>
+      <item> border-bottom </item>
+      <item> border-bottom-color </item>
+      <item> border-bottom-style </item>
+      <item> border-bottom-width </item>
+      <item> border-collapse </item>
+      <item> border-color </item>
+      <item> border-left </item>
+      <item> border-left-color </item>
+      <item> border-left-style </item>
+      <item> border-left-width </item>
+      <item> border-right </item>
+      <item> border-right-color </item>
+      <item> border-right-style </item>
+      <item> border-right-width </item>
+      <item> border-spacing </item>
+      <item> border-style </item>
+      <item> border-top </item>
+      <item> border-top-color </item>
+      <item> border-top-style </item>
+      <item> border-top-width </item>
+      <item> border-width </item>
+      <item> bottom </item>
+      <item> caption-side </item>
+      <item> clear </item>
+      <item> clip </item>
+      <item> color </item>
+      <item> content </item>
+      <item> counter-increment </item>
+      <item> counter-reset </item>
+      <item> cue </item>
+      <item> cue-after </item>
+      <item> cue-before </item>
+      <item> cursor </item>
+      <item> direction </item>
+      <item> display </item>
+      <item> elevation </item>
+      <item> empty-cells </item>
+      <item> float </item>
+      <item> font </item>
+      <item> font-family </item>
+      <item> font-size </item>
+      <item> font-size-adjust </item>
+      <item> font-stretch </item>
+      <item> font-style </item>
+      <item> font-variant </item>
+      <item> font-weight </item>
+      <item> height </item>
+      <item> left </item>
+      <item> letter-spacing </item>
+      <item> line-height </item>
+      <item> list-style </item>
+      <item> list-style-image </item>
+      <item> list-style-keyword </item>
+      <item> list-style-position </item>
+      <item> list-style-type  </item>
+      <item> margin </item>
+      <item> margin-bottom </item>
+      <item> margin-left </item>
+      <item> margin-right </item>
+      <item> margin-top </item>
+      <item> marker-offset </item>
+      <item> max-height </item>
+      <item> max-width </item>
+      <item> min-height </item>
+      <item> min-width </item>
+      <item> orphans </item>
+      <item> outline </item>
+      <item> outline-color </item>
+      <item> outline-style </item>
+      <item> outline-width </item>
+      <item> overflow </item>
+      <item> padding </item>
+      <item> padding-bottom </item>
+      <item> padding-left </item>
+      <item> padding-right </item>
+      <item> padding-top </item>
+      <item> page </item>
+      <item> page-break-after </item>
+      <item> page-break-before </item>
+      <item> page-break-inside </item>
+      <item> pause </item>
+      <item> pause-after </item>
+      <item> pause-before </item>
+      <item> pitch </item>
+      <item> pitch-range </item>
+      <item> play-during </item>
+      <item> position </item>
+      <item> quotes </item>
+      <item> richness </item>
+      <item> right </item>
+      <item> size </item>
+      <item> speak </item>
+      <item> speak-header </item>
+      <item> speak-numeral </item>
+      <item> speak-punctuation </item>
+      <item> speech-rate </item>
+      <item> stress </item>
+      <item> table-layout </item>
+      <item> text-align </item>
+      <item> text-decoration </item>
+      <item> text-decoration-color </item>
+      <item> text-indent </item>
+      <item> text-shadow </item>
+      <item> text-transform </item>
+      <item> top </item>
+      <item> unicode-bidi </item>
+      <item> vertical-align </item>
+      <item> visibility </item>
+      <item> voice-family </item>
+      <item> volume </item>
+      <item> white-space </item>
+      <item> widows </item>
+      <item> width </item>
+      <item> word-spacing </item>
+      <item> z-index </item>
+
+      <!-- CSS3 -->
+      <item> border-bottom-image </item>
+      <item> border-bottom-left-image </item>
+      <item> border-bottom-left-radius </item>
+      <item> border-bottom-right-image </item>
+      <item> border-bottom-right-radius </item>
+      <item> border-corner-image </item>
+      <item> border-image </item>
+      <item> border-left-image </item>
+      <item> border-radius </item>
+      <item> border-right-image </item>
+      <item> border-top-image </item>
+      <item> border-top-left-image </item>
+      <item> border-top-left-radius </item>
+      <item> border-top-right-image </item>
+      <item> border-top-right-radius </item>
+      <item> box-shadow </item>
+      <item> box-sizing </item>
+      <item> opacity </item>
+      <item> outline-offset </item>
+      <item> overflow-x </item>
+      <item> overflow-y </item>
+      <item> text-overflow </item>
+      <item> text-shadow </item>
+
+      <!-- Gecko rendering engine CSS property extensions -->
+      <item> -moz-border-bottom-colors </item>
+      <item> -moz-border-left-colors </item>
+      <item> -moz-border-radius </item>
+      <item> -moz-border-right-colors </item>
+      <item> -moz-border-top-colors </item>
+      <item> -moz-box-flex </item>
+
+      <!-- Opera rendering engine CSS property extensions -->
+      <item> -o-background-size </item>
+      <item> -o-text-overflow </item>
+
+      <!-- konq specific -->
+      <item> -khtml-background-size </item>
+      <item> konq_bgpos_x </item>
+      <item> konq_bgpos_y </item>
+
+      <!-- Webkit rendering engine CSS property extensions -->
+      <item> -webkit-background-size </item>
+
+      <!-- font properties in @font-face -->
+      <item> font-family </item>
+      <item> font-size </item>
+      <item> font-stretch </item>
+      <item> font-style </item>
+      <item> font-variant </item>
+      <item> font-weight </item>
+      <item> unicode-range </item>
+      <item> units-per-em </item>
+      <item> src </item>
+      <item> panose-1 </item>
+      <item> stemv </item>
+      <item> stemh </item>
+      <item> slope </item>
+      <item> cap-height </item>
+      <item> x-height </item>
+      <item> ascent </item>
+      <item> descent </item>
+      <item> widths </item>
+      <item> bbox </item>
+      <item> definition-src </item>
+      <item> baseline </item>
+      <item> centerline </item>
+      <item> mathline </item>
+      <item> topline </item>
+    </list>
+
+    <list name="types">
+      <item> inherit </item>
+      <item> none </item>
+      <item> hidden </item>
+      <item> dotted </item>
+      <item> dashed </item>
+      <item> solid </item>
+      <item> double </item>
+      <item> groove </item>
+      <item> ridge </item>
+      <item> inset </item>
+      <item> outset </item>
+      <item> xx-small </item>
+      <item> x-small </item>
+      <item> small </item>
+      <item> medium </item>
+      <item> large </item>
+      <item> x-large </item>
+      <item> xx-large </item>
+      <item> smaller </item>
+      <item> larger </item>
+      <item> italic </item>
+      <item> oblique </item>
+      <item> small-caps </item>
+      <item> normal </item>
+      <item> bold </item>
+      <item> bolder </item>
+      <item> lighter </item>
+      <item> light </item>
+      <item> 100 </item>
+      <item> 200 </item>
+      <item> 300 </item>
+      <item> 400 </item>
+      <item> 500 </item>
+      <item> 600 </item>
+      <item> 700 </item>
+      <item> 800 </item>
+      <item> 900 </item>
+      <item> transparent </item>
+      <item> repeat </item>
+      <item> repeat-x </item>
+      <item> repeat-y </item>
+      <item> no-repeat </item>
+      <item> baseline </item>
+      <item> sub </item>
+      <item> super </item>
+      <item> top </item>
+      <item> text-top </item>
+      <item> middle </item>
+      <item> bottom </item>
+      <item> text-bottom </item>
+      <item> left </item>
+      <item> right </item>
+      <item> center </item>
+      <item> justify </item>
+      <item> konq-center </item>
+      <item> disc </item>
+      <item> circle </item>
+      <item> square </item>
+      <item> box </item>
+      <item> decimal </item>
+      <item> decimal-leading-zero </item>
+      <item> lower-roman </item>
+      <item> upper-roman </item>
+      <item> lower-greek </item>
+      <item> lower-alpha </item>
+      <item> lower-latin </item>
+      <item> upper-alpha </item>
+      <item> upper-latin </item>
+      <item> hebrew </item>
+      <item> armenian </item>
+      <item> georgian </item>
+      <item> cjk-ideographic </item>
+      <item> hiragana </item>
+      <item> katakana </item>
+      <item> hiragana-iroha </item>
+      <item> katakana-iroha </item>
+      <item> inline </item>
+      <item> inline-block </item>
+      <item> block </item>
+      <item> list-item </item>
+      <item> run-in </item>
+      <item> compact </item>
+      <item> marker </item>
+      <item> table </item>
+      <item> inline-table </item>
+      <item> table-row-group </item>
+      <item> table-header-group </item>
+      <item> table-footer-group </item>
+      <item> table-row </item>
+      <item> table-column-group </item>
+      <item> table-column </item>
+      <item> table-cell </item>
+      <item> table-caption </item>
+      <item> auto </item>
+      <item> crosshair </item>
+      <item> default </item>
+      <item> pointer </item>
+      <item> move </item>
+      <item> e-resize </item>
+      <item> ne-resize </item>
+      <item> nw-resize </item>
+      <item> n-resize </item>
+      <item> se-resize </item>
+      <item> sw-resize </item>
+      <item> s-resize </item>
+      <item> w-resize </item>
+      <item> text </item>
+      <item> wait </item>
+      <item> help </item>
+      <item> above </item>
+      <item> absolute </item>
+      <item> always </item>
+      <item> avoid </item>
+      <item> below </item>
+      <item> bidi-override </item>
+      <item> blink </item>
+      <item> both </item>
+      <item> capitalize </item>
+      <item> caption </item>
+      <item> clip </item>
+      <item> close-quote </item>
+      <item> collapse </item>
+      <item> condensed </item>
+      <item> crop </item>
+      <item> cross </item>
+      <item> ellipsis </item>
+      <item> ellipsis-word </item>
+      <item> embed </item>
+      <item> expanded </item>
+      <item> extra-condensed </item>
+      <item> extra-expanded </item>
+      <item> fixed </item>
+      <item> hand </item>
+      <item> hide </item>
+      <item> higher </item>
+      <item> icon </item>
+      <item> inside </item>
+      <item> invert </item>
+      <item> landscape </item>
+      <item> level </item>
+      <item> line-through </item>
+      <item> loud </item>
+      <item> lower </item>
+      <item> lowercase </item>
+      <item> ltr </item>
+      <item> menu </item>
+      <item> message-box </item>
+      <item> mix </item>
+      <item> narrower </item>
+      <item> no-close-quote </item>
+      <item> no-open-quote </item>
+      <item> nowrap </item>
+      <item> open-quote </item>
+      <item> outside </item>
+      <item> overline </item>
+      <item> portrait </item>
+      <item> pre </item>
+      <item> pre-line </item>
+      <item> pre-wrap </item>
+      <item> relative </item>
+      <item> rtl </item>
+      <item> scroll </item>
+      <item> semi-condensed </item>
+      <item> semi-expanded </item>
+      <item> separate </item>
+      <item> show </item>
+      <item> small-caption </item>
+      <item> static </item>
+      <item> static-position </item>
+      <item> status-bar </item>
+      <item> thick </item>
+      <item> thin </item>
+      <item> ultra-condensed </item>
+      <item> ultra-expanded </item>
+      <item> underline </item>
+      <item> uppercase </item>
+      <item> visible </item>
+      <item> wider </item>
+      <item> break </item>
+      <item> serif </item>
+      <item> sans-serif </item>
+      <item> cursive </item>
+      <item> fantasy </item>
+      <item> monospace </item>
+      <item> border-box </item>
+      <item> content-box </item>
+      
+      <!-- Gecko rendering engine CSS value extensions -->
+      <item> -moz-box </item>      
+      
+    </list>
+
+
+    <list name="colors">
+      <item> aqua </item>
+      <item> black </item>
+      <item> blue </item>
+      <item> fuchsia </item>
+      <item> gray </item>
+      <item> green </item>
+      <item> lime </item>
+      <item> maroon </item>
+      <item> navy </item>
+      <item> olive </item>
+      <item> purple </item>
+      <item> red </item>
+      <item> silver </item>
+      <item> teal </item>
+      <item> white </item>
+      <item> yellow </item>
+      <item> ActiveBorder  </item>
+      <item> ActiveCaption  </item>
+      <item> AppWorkspace  </item>
+      <item> Background  </item>
+      <item> ButtonFace  </item>
+      <item> ButtonHighlight  </item>
+      <item> ButtonShadow  </item>
+      <item> ButtonText  </item>
+      <item> CaptionText  </item>
+      <item> GrayText  </item>
+      <item> Highlight  </item>
+      <item> HighlightText  </item>
+      <item> InactiveBorder  </item>
+      <item> InactiveCaption  </item>
+      <item> InactiveCaptionText  </item>
+      <item> InfoBackground  </item>
+      <item> InfoText  </item>
+      <item> Menu  </item>
+      <item> MenuText  </item>
+      <item> Scrollbar  </item>
+      <item> ThreeDDarkShadow  </item>
+      <item> ThreeDFace  </item>
+      <item> ThreeDHighlight  </item>
+      <item> ThreeDLightShadow  </item>
+      <item> ThreeDShadow  </item>
+      <item> Window  </item>
+      <item> WindowFrame  </item>
+      <item> WindowText  </item>
+    </list>
+
+    <list name="paren">
+      <item> url </item>
+      <item> attr </item>
+      <item> rect </item>
+      <item> rgb </item>
+      <item> rgba </item>
+      <item> hsl </item>
+      <item> hsla </item>
+      <item> counter </item>
+      <item> counters </item>
+
+      <!-- in @font-face -->
+      <item> local </item>
+      <item> format </item>
+      
+      <!-- Trident (a.k.a., MSHTML) rendering engine functional notation extensions -->
+      <item> expression </item>
+      
+    </list>
+
+    <list name="mediatypes">
+      <item> all </item>
+      <item> aural </item>
+      <item> braille </item>
+      <item> embossed </item>
+      <item> handheld </item>
+      <item> print </item>
+      <item> projection </item>
+      <item> screen </item>
+      <item> tty </item>
+      <item> tv </item>
+    </list>
+
+    <list name="pseudoclasses">
+      <item> hover </item>
+      <item> link </item>
+      <item> visited </item>
+      <item> active </item>
+      <item> focus </item>
+      <item> first-child </item>
+      <item> last-child </item>
+      <item> only-child </item>
+      <item> first-of-type </item>
+      <item> last-of-type </item>
+      <item> only-of-type </item>
+      <item> first-letter </item>
+      <item> first-line </item>
+      <item> before </item>
+      <item> after </item>
+      <item> selection </item>
+      <item> root </item>
+      <item> empty </item>
+      <item> target </item>
+      <item> enabled </item>
+      <item> disabled </item>
+      <item> checked </item>
+      <item> indeterminate </item>
+      <item> nth-child </item>
+      <item> nth-last-child </item>
+      <item> nth-of-type </item>
+      <item> nth-last-of-type </item>
+      <item> not </item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Base">
+        <LineContinue/>
+        <DetectSpaces/>
+	<IncludeRules context="FindRuleSets" />
+      </context>
+
+      <!-- to be included -->
+      <!-- finds rules and detects nesting -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindRuleSets">
+        <RegExpr attribute="Media" context="Media" String="@media\b" />
+	<RegExpr attribute="At Rule" context="Import" String="@import\b" />
+	<RegExpr attribute="At Rule" context="#stay" String="@(font-face|charset)\b" />
+        <DetectChar attribute="Property" context="RuleSet" char="{" beginRegion="ruleset" />
+        <!--parse selectors-->
+	<DetectChar attribute="Selector Attr" context="SelAttr" char="[" />
+	<RegExpr attribute="Selector Id" context="#stay" String="#([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+	<RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+	<RegExpr attribute="Selector Pseudo" context="#stay" String=":lang\([\w_-]+\)" />
+	<DetectChar attribute="Selector Pseudo" context="SelPseudo" char=":" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <!-- finds arguments to properties -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindValues">
+	<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+(em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz)\b" />
+	<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+[%]?" />
+	<RegExpr attribute="Normal Text" context="#stay" String="[\w\-]+" />
+      </context>
+
+      <!-- finds strings -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+	<DetectChar attribute="String" context="StringDQ" char="&quot;" />
+	<DetectChar attribute="String" context="StringSQ" char="'" />
+      </context>
+
+      <!-- finds comments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
+        <RegExpr attribute="Region Marker" context="#stay" String="/\*BEGIN.*\*/" beginRegion="UserDefined" />
+        <RegExpr attribute="Region Marker" context="#stay" String="/\*END.*\*/" endRegion="UserDefined" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
+      </context>
+
+      <!-- other contexts -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Media">
+        <DetectChar attribute="Media" context="Media2" char="{" beginRegion="media" />
+	<keyword attribute="Media" context="#stay" String="mediatypes" />
+	<DetectChar attribute="Media" context="#stay" char="," />
+	<IncludeRules context="FindComments" />
+	<RegExpr attribute="Error" context="#stay" String="\S+" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Media2">
+        <DetectChar attribute="Media" context="#pop#pop" char="}" endRegion="media" />
+	<IncludeRules context="FindRuleSets" />
+      </context>
+
+      <context attribute="Selector Attr" lineEndContext="#stay" name="SelAttr">
+	<DetectChar attribute="Selector Attr" context="#pop" char="]" />
+	<IncludeRules context="FindStrings" />
+      </context>
+
+      <context attribute="Selector Pseudo" lineEndContext="#pop" name="SelPseudo"
+      		fallthrough="true" fallthroughContext="#pop">
+	<keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Import">
+      	<DetectChar attribute="At Rule" context="#pop" char=";" />
+	<keyword attribute="Media" context="#stay" String="mediatypes" />
+	<IncludeRules context="FindValues" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Comment">
+	<DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />
+        <IncludeRules context="##Alerts" />
+	<DetectIdentifier/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="RuleSet">
+        <DetectChar attribute="Property" context="#pop" char="}" endRegion="ruleset" />
+        <keyword attribute="Property" context="Rule" String="properties" />
+	<RegExpr attribute="Unknown Property" context="Rule" String="-?[A-Za-z_-]+(?=\s*:)" />
+	<IncludeRules context="FindComments" />
+	<RegExpr attribute="Error" context="#stay" String="\S" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Rule">
+      	<DetectChar attribute="Property" context="Rule2" char=":" />
+	<RegExpr attribute="Error" context="#stay" String="\S" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Rule2">
+      	<DetectChar attribute="Property" context="#pop#pop" char=";" />
+	<DetectChar attribute="Property" context="#pop#pop#pop" char="}" endRegion="ruleset" />
+        <!-- parse property values -->
+	<keyword attribute="Value" context="#stay" String="types" />
+	<keyword attribute="Value" context="#stay" String="colors" />
+	<RegExpr attribute="Value" context="#stay" String="#([0-9A-Fa-f]{3}){1,4}\b" />
+	<keyword attribute="Value" context="PropParen" String="paren" />
+	<RegExpr attribute="Important" context="#stay" String="!important\b" />
+	<IncludeRules context="FindValues" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="PropParen">
+        <DetectChar attribute="Value" context="PropParen2" char="(" />
+	<IncludeRules context="FindComments" />
+	<RegExpr attribute="Error" context="#stay" String="\S" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="PropParen2">
+        <DetectChar attribute="Value" context="#pop#pop" char=")" />
+	<IncludeRules context="FindValues" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <!-- string contexts -->
+      <context attribute="String" lineEndContext="#stay" name="StringDQ">
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <IncludeRules context="InsideString" />
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="StringSQ">
+        <DetectChar attribute="String" context="#pop" char="'" />
+        <IncludeRules context="InsideString" />
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="InsideString">
+        <RegExpr attribute="String" context="#stay" String="\\[&quot;']" />
+	<DetectIdentifier/>
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Property"  defStyleNum="dsKeyword"/>
+      <itemData name="Unknown Property"  defStyleNum="dsKeyword" italic="1"/>
+      <itemData name="Media"  defStyleNum="dsDecVal" bold="1"/>
+      <itemData name="At Rule"  defStyleNum="dsDecVal" />
+      <itemData name="String"  defStyleNum="dsString" />
+      <itemData name="Value"  defStyleNum="dsDataType" />
+      <itemData name="Important" defStyleNum="dsKeyword" />
+      <itemData name="Selector Attr" defStyleNum="dsChar" />
+      <itemData name="Selector Id"  defStyleNum="dsFloat" bold="1"/>
+      <itemData name="Selector Class"  defStyleNum="dsFloat" />
+      <itemData name="Selector Pseudo"  defStyleNum="dsDecVal" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name="Alert" defStyleNum="dsAlert"/>
+      <itemData name="Error" defStyleNum="dsError"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0" weakDeliminator="-%"/>
+    <comments>
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/doxygen.xml b/src/plugins/genericeditor/XML/doxygen.xml
new file mode 100644
index 00000000000..520a2fd3dbd
--- /dev/null
+++ b/src/plugins/genericeditor/XML/doxygen.xml
@@ -0,0 +1,483 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+        <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->
+]>
+<!--
+  This file is part of KDE's kate project.
+
+  Copyright 2004 Dominik Haumann (dhdev@gmx.de)
+  Copyright 2007 Matthew Woehlke (mw_triad@users.sourceforge.net)
+
+ **********************************************************************
+ * This library is free software; you can redistribute it and/or      *
+ * modify it under the terms of the GNU Lesser General Public         *
+ * License as published by the Free Software Foundation; either       *
+ * version 2 of the License, or (at your option) any later version.   *
+ *                                                                    *
+ * This library is distributed in the hope that it will be useful,    *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
+ * Lesser General Public License for more details.                    *
+ *                                                                    *
+ * You should have received a copy of the GNU Lesser General Public   *
+ * License along with this library; if not, write to the              *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,   *
+ * Boston, MA  02110-1301, USA.                                       *
+ **********************************************************************
+ -->
+<language name="Doxygen" version="1.30" kateversion="2.4" section="Markup" extensions="*.dox;*.doxygen" mimetype="text/x-doxygen" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL" priority="9">
+  <highlighting>
+    <!-- note: all tags may begin with a \ or @ char
+         so if you add/change tags you have to do it twice -->
+    <list name="TagOnly">
+      <item> \arg </item>
+      <item> \attention </item>
+      <item> \author </item>
+      <item> \callgraph </item>
+      <item> \code </item>
+      <item> \dot </item>
+      <item> \else </item>
+      <item> \endcode </item>
+      <item> \endcond </item>
+      <item> \enddot </item>
+      <item> \endhtmlonly </item>
+      <item> \endif </item>
+      <item> \endlatexonly </item>
+      <item> \endlink </item>
+      <item> \endmanonly </item>
+      <item> \endverbatim </item>
+      <item> \endxmlonly </item>
+      <item> \f[ </item>
+      <item> \f] </item>
+      <item> \f$ </item>
+      <item> \hideinitializer </item>
+      <item> \htmlonly </item>
+      <item> \interface </item>
+      <item> \internal </item>
+      <item> \invariant </item>
+      <item> \~ </item>
+      <item> \@ </item>
+      <item> \$ </item>
+      <item> \\ </item>
+      <item> \# </item>
+      <item> \latexonly </item>
+      <item> \li </item>
+      <item> \manonly </item>
+      <item> \n </item>
+      <item> \nosubgrouping </item>
+      <item> \note </item>
+      <item> \only </item>
+      <item> \post </item>
+      <item> \pre </item>
+      <item> \remarks </item>
+      <item> \return </item>
+      <item> \returns </item>
+      <item> \sa </item>
+      <item> \see </item>
+      <item> \showinitializer </item>
+      <item> \since </item>
+      <item> \test </item>
+      <item> \todo </item>
+      <item> \verbatim </item>
+      <item> \warning </item>
+      <item> \xmlonly </item>
+
+      <item> @arg </item>
+      <item> @attention </item>
+      <item> @author </item>
+      <item> @callgraph </item>
+      <item> @code </item>
+      <item> @dot </item>
+      <item> @else </item>
+      <item> @endcode </item>
+      <item> @endcond </item>
+      <item> @enddot </item>
+      <item> @endhtmlonly </item>
+      <item> @endif </item>
+      <item> @endlatexonly </item>
+      <item> @endlink </item>
+      <item> @endmanonly </item>
+      <item> @endverbatim </item>
+      <item> @endxmlonly </item>
+      <item> @f[ </item>
+      <item> @f] </item>
+      <item> @f$ </item>
+      <item> @hideinitializer </item>
+      <item> @htmlonly </item>
+      <item> @interface </item>
+      <item> @internal </item>
+      <item> @invariant </item>
+      <item> @~ </item>
+      <item> @@ </item>
+      <item> @$ </item>
+      <item> @\ </item>
+      <item> @# </item>
+      <item> @latexonly </item>
+      <item> @li </item>
+      <item> @manonly </item>
+      <item> @n </item>
+      <item> @nosubgrouping </item>
+      <item> @note </item>
+      <item> @only </item>
+      <item> @post </item>
+      <item> @pre </item>
+      <item> @remarks </item>
+      <item> @return </item>
+      <item> @returns </item>
+      <item> @sa </item>
+      <item> @see </item>
+      <item> @showinitializer </item>
+      <item> @since </item>
+      <item> @test </item>
+      <item> @todo </item>
+      <item> @verbatim </item>
+      <item> @warning </item>
+      <item> @xmlonly </item>
+    </list>
+
+    <list name="TagWord">
+      <item> \addtogroup </item>
+      <item> \a </item>
+      <item> \anchor </item>
+      <item> \b </item>
+      <item> \c </item>
+      <item> \class </item>
+      <item> \cond </item>
+      <item> \copydoc </item>
+      <item> \def </item>
+      <item> \dontinclude </item>
+      <item> \dotfile </item>
+      <item> \e </item>
+      <item> \elseif </item>
+      <item> \em </item>
+      <item> \enum </item>
+      <item> \example </item>
+      <item> \exception </item>
+      <item> \exceptions </item>
+      <item> \file </item>
+      <item> \htmlinclude </item>
+      <item> \if </item>
+      <item> \ifnot </item>
+      <item> \include </item>
+      <item> \link </item>
+      <item> \namespace </item>
+      <item> \p </item>
+      <item> \package </item>
+      <item> \ref </item>
+      <item> \relatesalso </item>
+      <item> \relates </item>
+      <item> \retval </item>
+      <item> \throw </item>
+      <item> \throws </item>
+      <item> \verbinclude </item>
+      <item> \version </item>
+      <item> \xrefitem </item>
+
+      <item> @addtogroup </item>
+      <item> @a </item>
+      <item> @anchor </item>
+      <item> @b </item>
+      <item> @c </item>
+      <item> @class </item>
+      <item> @cond </item>
+      <item> @copydoc </item>
+      <item> @def </item>
+      <item> @dontinclude </item>
+      <item> @dotfile </item>
+      <item> @e </item>
+      <item> @elseif </item>
+      <item> @em </item>
+      <item> @enum </item>
+      <item> @example </item>
+      <item> @exception </item>
+      <item> @exceptions </item>
+      <item> @file </item>
+      <item> @htmlinclude </item>
+      <item> @if </item>
+      <item> @ifnot </item>
+      <item> @include </item>
+      <item> @link </item>
+      <item> @namespace </item>
+      <item> @p </item>
+      <item> @package </item>
+      <item> @ref </item>
+      <item> @relatesalso </item>
+      <item> @relates </item>
+      <item> @retval </item>
+      <item> @throw </item>
+      <item> @throws </item>
+      <item> @verbinclude </item>
+      <item> @version </item>
+      <item> @xrefitem </item>
+    </list>
+    <list name="TagParam">
+      <item> \param </item>
+      <item> \tparam </item>
+
+      <item> @param </item>
+      <item> @tparam </item>
+    </list>
+    <list name="TagWordWord">
+      <item> \image </item>
+
+      <item> @image </item>
+    </list>
+    <list name="TagWordString">
+      <item> \defgroup </item>
+      <item> \page </item>
+      <item> \paragraph </item>
+      <item> \section </item>
+      <item> \struct </item>
+      <item> \subsection </item>
+      <item> \subsubsection </item>
+      <item> \union </item>
+      <item> \weakgroup </item>
+
+      <item> @defgroup </item>
+      <item> @page </item>
+      <item> @paragraph </item>
+      <item> @section </item>
+      <item> @struct </item>
+      <item> @subsection </item>
+      <item> @subsubsection </item>
+      <item> @union </item>
+      <item> @weakgroup </item>
+    </list>
+    <list name="TagString">
+      <item> \addindex </item>
+      <item> \brief </item>
+      <item> \bug </item>
+      <item> \date </item>
+      <item> \deprecated </item>
+      <item> \fn </item>
+      <item> \ingroup </item>
+      <item> \line </item>
+      <item> \mainpage </item>
+      <item> \name </item>
+      <item> \overload </item>
+      <item> \par </item>
+      <item> \short </item>
+      <item> \skip </item>
+      <item> \skipline </item>
+      <item> \typedef </item>
+      <item> \until </item>
+      <item> \var </item>
+
+      <item> @addindex </item>
+      <item> @brief </item>
+      <item> @bug </item>
+      <item> @date </item>
+      <item> @deprecated </item>
+      <item> @fn </item>
+      <item> @ingroup </item>
+      <item> @line </item>
+      <item> @mainpage </item>
+      <item> @name </item>
+      <item> @overload </item>
+      <item> @par </item>
+      <item> @short </item>
+      <item> @skip </item>
+      <item> @skipline </item>
+      <item> @typedef </item>
+      <item> @until </item>
+      <item> @var </item>
+    </list>
+    <contexts>
+    <!-- different formats:
+      @tag                     : TagOnly
+      @tag rest_of_line        : TagString
+      @tag <word>              : TagWord
+      @tag <word> <word>       : TagWordWord
+      @tag <word> rest_of_line : TagWordString
+    -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <RegExpr attribute="Comment" context="LineComment" String="//(!|(/(?=[^/]|$)))&lt;?"/>
+        <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]&lt;|\*$)" beginRegion="BlockComment"/>
+        <RegExpr attribute="Region" context="#stay" String="//\s*@\{\s*$" beginRegion="MemberGroup"/>
+        <RegExpr attribute="Region" context="#stay" String="//\s*@\}\s*$"   endRegion="MemberGroup"/>
+        <RegExpr attribute="Region" context="#stay" String="/\*\s*@\{\s*\*/" beginRegion="MemberGroup"/>
+        <RegExpr attribute="Region" context="#stay" String="/\*\s*@\}\s*\*/"   endRegion="MemberGroup"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="LineComment">
+        <LineContinue attribute="Comment" context="#stay"/>
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <keyword attribute="Tags" context="#stay" String="TagOnly" />
+        <keyword attribute="Tags" context="SL_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="SL_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="SL_TagString" String="TagString" />
+        <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" />
+        <DetectIdentifier />
+        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="BlockComment">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
+        <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" />
+        <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" />
+        <keyword attribute="Tags" context="#stay" String="TagOnly" />
+        <keyword attribute="Tags" context="ML_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="ML_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="ML_TagString" String="TagString" />
+        <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" />
+        <DetectIdentifier />
+        <RegExpr attribute="Tags" context="#stay" String="\\(&lt;|&gt;)" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
+      </context>
+
+<!-- NOTE: all contexts beginning with ML_ are for multiline comments
+     The following contexts contain a Detect2Chars that looks for a */ sequence to end multiline comments. Singleline comments do not have this limitation - that's why all contexts are copy&pasted and the line <Detect2Chars ... */> is removed. <IncludeRules context="acontext"> could be used instead but it would make context switching much more complex and very hard to understand! (But use IncludeRules where the rules don't refer to another SL_*/ML_* context, to help maintainability.)
+-->
+      <!-- tag contexts -->
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagWord">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="SL_TagWord" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagParam">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectSpaces />
+        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" />
+        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" />
+        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" />
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" -->
+      <context attribute="Comment" lineEndContext="#pop#pop" name="ML_Tag2ndWord">
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="SL_Tag2ndWord" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagString">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+        <RegExpr attribute="Description" context="#stay" String="." />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="SL_TagWordString" />
+      </context>
+
+      <!-- html contexts -->
+      <context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
+        <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
+        <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*"/>
+      </context>
+      <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="##Alerts" />
+        <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+      </context>
+      <context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectChar attribute="Types" context="ML_types1" char="'" />
+        <DetectChar attribute="Types" context="ML_types2" char="&quot;" />
+      </context>
+      <context name="ML_types1" attribute="Types" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectChar attribute="Types" context="#pop#pop" char="'" />
+      </context>
+      <context name="ML_types2" attribute="Types" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
+      </context>
+
+<!-- NOTE: all contexts beginning with SL_ are for singleline comments -->
+      <!-- tag contexts -->
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">
+        <DetectSpaces />
+        <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true"/>
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">
+        <DetectSpaces />
+        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" />
+        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" />
+        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" />
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" -->
+      <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord">
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagString">
+        <DetectSpaces />
+        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+        <RegExpr attribute="Description" context="#stay" String="." />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+
+      <!-- html contexts -->
+      <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop">
+        <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
+        <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
+        <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*"/>
+      </context>
+      <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts" />
+        <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+      </context>
+      <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectChar attribute="Types" context="SL_types1" char="'" />
+        <DetectChar attribute="Types" context="SL_types2" char="&quot;" />
+      </context>
+      <context name="SL_types1" attribute="Types" lineEndContext="#pop">
+        <DetectChar attribute="Types" context="#pop#pop" char="'" />
+      </context>
+      <context name="SL_types2" attribute="Types" lineEndContext="#pop">
+        <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Tags"        defStyleNum="dsKeyword" color="#ca60ca" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Word"        defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="HTML Tag"    defStyleNum="dsKeyword" color="#000000" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Description" defStyleNum="dsString"  color="#ff0000" />
+      <itemData name="Comment"     defStyleNum="dsComment" color="#0000ff" selColor="#ffffff" italic="1" />
+      <itemData name="Region"      defStyleNum="dsRegionMarker" />
+      <itemData name="Identifier"  defStyleNum="dsOthers" />
+      <itemData name="HTML Comment" defStyleNum="dsComment" />
+      <itemData name="Types"       defStyleNum="dsDataType" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0" weakDeliminator="\$~" />
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/fortran.xml b/src/plugins/genericeditor/XML/fortran.xml
new file mode 100644
index 00000000000..948267fc9e1
--- /dev/null
+++ b/src/plugins/genericeditor/XML/fortran.xml
@@ -0,0 +1,569 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Fortran" version="1.11" kateversion="2.4" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.f90;*.F90;*.fpp;*.FPP;*.f95;*.F95;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="LGPL">
+<!-- by Franchin Matteo, fnch@libero.it -->
+  <highlighting>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                              L I S T S                            *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <list name="keywords">
+      <item> allocate </item>
+      <item> break </item>
+      <item> call </item>
+      <item> case </item>
+      <item> common </item>
+      <item> contains </item>
+      <item> continue </item>
+      <item> cycle </item>
+      <item> deallocate </item>
+      <item> default </item>
+      <item> do </item>
+      <item> forall </item>
+      <item> where </item>
+      <item> elsewhere </item>
+      <item> elseif </item>
+      <item> else </item>
+      <item> equivalence </item>
+      <item> exit </item>
+      <item> external </item>
+      <item> for </item>
+      <item> go </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> implicit </item>
+      <item> include </item>
+      <item> interface </item>
+      <item> intrinsic </item>
+      <item> namelist </item>
+      <item> none </item>
+      <item> nullify </item>
+      <item> operator </item>
+      <item> assignment </item>
+      <item> pause </item>
+      <item> procedure </item>
+      <item> pure </item>
+      <item> elemental </item>
+      <item> record </item>
+      <item> recursive </item>
+      <item> result </item>
+      <item> return </item>
+      <item> select </item>
+      <item> selectcase </item>
+      <item> stop </item>
+      <item> then </item>
+      <item> to </item>
+      <item> use </item>
+      <item> only </item>
+      <item> entry </item>
+      <item> while </item>
+    </list>
+    <list name="io_functions">
+      <item> access </item>
+      <item> backspace </item>
+      <item> close </item>
+      <item> inquire </item>
+      <item> open </item>
+      <item> print </item>
+      <item> read </item>
+      <item> rewind </item>
+      <item> write </item>
+      <item> format </item>
+    </list>
+    <!-- Keywords inside read(...), write(...), backspace(...),
+          rewind(...), endfile(...), close(...) -->
+    <list name="io_keywords">
+      <item> unit </item>
+      <item> end </item>
+      <item> err </item>
+      <item> fmt </item>
+      <item> iostat </item>
+      <item> status </item>
+      <item> advance </item>
+      <item> size </item>
+      <item> eor </item>
+    </list>
+    <!-- Keywords inside open(...) -->
+    <list name="open_keywords">
+      <item> unit </item>
+      <item> iostat </item>
+      <item> err </item>
+      <item> file </item>
+      <item> status </item>
+      <item> access </item>
+      <item> form </item>
+      <item> recl </item>
+      <item> blank </item>
+      <item> position </item>
+      <item> action </item>
+      <item> delim </item>
+      <item> pad </item>
+    </list>
+    <!-- Keywords inside inquire(...) -->
+    <list name="inquire_keywords">
+      <item> unit </item>
+      <item> iostat </item>
+      <item> err </item>
+      <item> file </item>
+      <item> exist </item>
+      <item> opened </item>
+      <item> number </item>
+      <item> named </item>
+      <item> name </item>
+      <item> access </item>
+      <item> sequential </item>
+      <item> direct </item>
+      <item> form </item>
+      <item> formatted </item>
+      <item> unformatted </item>
+      <item> recl </item>
+      <item> nextrec </item>
+      <item> blank </item>
+      <item> position </item>
+      <item> action </item>
+      <item> read </item>
+      <item> write </item>
+      <item> readwrite </item>
+      <item> delim </item>
+      <item> pad </item>
+    </list>
+    <list name="types">
+      <item> double </item>
+      <item> precision </item>
+      <item> parameter </item>
+      <item> save </item>
+      <item> pointer </item>
+      <item> public </item>
+      <item> private </item>
+      <item> target </item>
+      <item> allocatable </item>
+      <item> optional </item>
+      <item> sequence </item>
+    </list>
+
+<!-- There are 4 types of intrinsic procedures in Fortran 90:
+   1) Elemental procedures (elemental_procs);
+   2) Inquiry functions (inquiry_fn);
+   3) Transformational functions (transform_fn);
+   4) Non elemental subroutines (non_elem_subr);
+  Often mathematical functions have one generic form and many specific names!
+  If you use the generic form, the compiler will select the right function
+  to use depending on the type of the arguments.
+  But you can use also the specific names!
+  -->
+
+<!-- E L E M E N T A L    P R O C E D U R E S -->
+    <list name="elemental_procs">
+    <!-- Elemental functions that may convert -->
+      <item> abs </item>   <!-- Generic form: abs -->
+      <item> cabs </item>  <!-- Specific names for abs -->
+      <item> dabs </item>
+      <item> iabs </item>
+      <item> aimag </item>
+      <item> aint </item>  <!-- Generic form: aint -->
+      <item> dint </item>  <!-- Specific name for aint -->
+      <item> anint </item> <!-- Generic form: anint -->
+      <item> dnint </item> <!-- Specific name for anint -->
+      <item> ceiling </item>
+      <item> cmplx </item>
+      <item> dcmplx </item> <!-- (non standard) -->
+      <item> dimag </item>  <!-- (non standard) -->
+      <item> floor </item>
+      <item> nint </item>  <!-- Generic form: nint -->
+      <item> idnint </item><!-- Specific name for nint -->
+      <item> int </item>   <!-- Generic form: int -->
+      <item> idint </item> <!-- Specific names for int -->
+      <item> ifix </item>
+      <item> real </item>  <!-- Generic form: real -->
+      <item> float </item> <!-- Specific names for real -->
+      <item> sngl </item>
+      <item> dble </item>
+      <item> dreal </item> <!-- (non standard) -->
+      <item> aprime </item> <!-- 5 functions from fortran.xml -->
+      <item> dconjg </item> <!-- I don't know if they really belong to -->
+      <item> dfloat </item> <!-- the fortran 90/95 standard! -->
+      <item> ddmim </item>
+      <item> rand </item>
+    <!-- Elemental functions that do not convert -->
+      <item> modulo </item>
+      <item> conjg </item>
+      <item> dprod </item>  <!-- dprod(x, y) is the specific name for x*y -->
+      <item> dim </item>    <!-- Generic form: dim -->
+      <item> ddim </item>   <!-- Specific names for dim -->
+      <item> idim </item>
+      <item> max </item>    <!-- Generic form: max -->
+      <item> amax0 </item>  <!-- Specific names for max -->
+      <item> amax1 </item>
+      <item> max0 </item>
+      <item> max1 </item>
+      <item> dmax1 </item>
+      <item> min </item>    <!-- Generic form: min -->
+      <item> amin0 </item>  <!-- Specific names for min -->
+      <item> amin1 </item>
+      <item> min0 </item>
+      <item> min1 </item>
+      <item> dmin1 </item>
+      <item> mod </item>    <!-- Generic form: mod -->
+      <item> amod </item>   <!-- Specific names for mod -->
+      <item> dmod </item>
+      <item> sign </item>   <!-- Generic form: sign -->
+      <item> dsign </item>  <!-- Specific names for sign -->
+      <item> isign </item>
+    <!-- Elemental mathematical functions -->
+      <item> acos </item>    <!-- Generic form: acos -->
+      <item> dacos </item>   <!-- Specific names for acos -->
+      <item> asin </item>    <!-- Generic form: asin -->
+      <item> dasin </item>   <!-- Specific names for asin -->
+      <item> atan </item>    <!-- Generic form: atan -->
+      <item> datan </item>   <!-- Specific names for atan -->
+      <item> atan2 </item>   <!-- Generic form: atan2 -->
+      <item> datan2 </item>  <!-- Specific names for atan2 -->
+      <item> cos </item>     <!-- Generic form: cos -->
+      <item> ccos </item>    <!-- Specific names for cos -->
+      <item> dcos </item>
+      <item> cosh </item>    <!-- Generic form: cosh -->
+      <item> dcosh </item>   <!-- Specific names for cosh -->
+      <item> exp </item>     <!-- Generic form: exp -->
+      <item> cexp </item>    <!-- Specific names for exp -->
+      <item> dexp </item>
+      <item> log </item>     <!-- Generic form: log -->
+      <item> alog </item>    <!-- Specific names for log -->
+      <item> dlog </item>
+      <item> clog </item>
+      <item> log10 </item>   <!-- Generic form: log10 -->
+      <item> alog10 </item>  <!-- Specific names for log10 -->
+      <item> dlog10 </item>
+      <item> sin </item>     <!-- Generic form: sin -->
+      <item> csin </item>    <!-- Specific names for sin -->
+      <item> dsin </item>
+      <item> sinh </item>    <!-- Generic form: sinh -->
+      <item> dsinh </item>   <!-- Specific name for sinh -->
+      <item> sqrt </item>    <!-- Generic form: sqrt -->
+      <item> csqrt </item>   <!-- Specific names for sqrt -->
+      <item> dsqrt </item>
+      <item> tan </item>     <!-- Generic form: tan -->
+      <item> dtan </item>    <!-- Generic form: dtan -->
+      <item> tanh </item>    <!-- Generic form: tanh -->
+      <item> dtanh </item>   <!-- Specific names for tanh -->
+    <!-- Elemental character and logical functions -->
+    <!-- Character-integer conversions -->
+      <item> achar </item>
+      <item> char </item>
+      <item> iachar </item>
+      <item> ichar </item>
+    <!-- Lexical comparison functions -->
+      <item> lge </item>
+      <item> lgt </item>
+      <item> lle </item>
+      <item> llt </item>
+    <!-- String-handling elemental functions -->
+      <item> adjustl </item>
+      <item> adjustr </item>
+      <item> index </item>
+      <item> len_trim </item>
+      <item> scan </item>
+      <item> verify </item>
+    <!-- Logical conversion -->
+      <item> logical </item>
+    <!-- Elemental functions to manipulate reals -->
+      <item> exponent </item>
+      <item> fraction </item>
+      <item> nearest </item>
+      <item> rrspacing </item>
+      <item> scale </item>
+      <item> set_exponent </item>
+      <item> spacing </item>
+    <!-- Bit manipulation elemental functions -->
+      <item> btest </item>
+      <item> iand </item>
+      <item> ibclr </item>
+      <item> ibits </item>
+      <item> ibset </item>
+      <item> ieor </item>
+      <item> ior </item>
+      <item> ishft </item>
+      <item> ishftc </item>
+      <item> not </item>
+    <!-- Bit manipulation elemental subroutine -->
+      <item> mvbits </item>
+    <!-- Merge elemental function -->
+      <item> merge </item>
+    </list>
+
+<!-- I N Q U I R Y    F U N C T I O N S -->
+    <list name="inquiry_fn">
+    <!-- Inquiry functions for any type -->
+      <item> associated </item>
+      <item> present </item>
+      <item> kind </item>
+    <!-- String-handling inquiry function -->
+      <item> len </item>
+    <!-- Numeric inquiry functions -->
+      <item> digits </item>
+      <item> epsilon </item>
+      <item> huge </item>
+      <item> maxexponent </item>
+      <item> minexponent </item>
+      <item> precision </item>
+      <item> radix </item>
+      <item> range </item>
+      <item> tiny </item>
+    <!-- Bit inquiry function -->
+      <item> bit_size </item>
+    <!-- Array inquiry functions -->
+      <item> allocated </item>
+      <item> lbound </item>
+      <item> ubound </item>
+      <item> shape </item>
+      <item> size </item>
+    </list>
+
+<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->
+    <list name="transform_fn">
+    <!-- String-handling transformational functions -->
+      <item> repeat </item>
+      <item> trim </item>
+    <!-- Transformational functions for kind values -->
+      <item> selected_int_kind </item>
+      <item> selected_real_kind </item>
+    <!-- Transfer function -->
+      <item> transfer </item>
+    <!-- Vector and matrix multiplication functions -->
+      <item> dot_product </item>
+      <item> matmul </item>
+    <!-- Transformational functions that reduce arrays -->
+      <item> all </item>
+      <item> any </item>
+      <item> count </item>
+      <item> maxval </item>
+      <item> minval </item>
+      <item> product </item>
+      <item> sum </item>
+    <!-- Packing and unpacking arrays -->
+      <item> pack </item>
+      <item> unpack </item>
+    <!-- Transformational function for reshaping an array -->
+      <item> reshape </item>
+    <!-- Transformational function for replication -->
+      <item> spread </item>
+    <!-- Array shifting functions -->
+      <item> cshift </item>
+      <item> eoshift </item>
+    <!-- Matrix transpose -->
+      <item> transpose </item>
+    <!-- Transformational functions for geometric location -->
+      <item> maxloc </item>
+      <item> minloc </item>
+    </list>
+
+<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->
+    <list name="non_elem_subr">
+    <!-- Real time clock -->
+      <item> date_and_time </item>
+      <item> system_clock </item>
+    <!-- Random numbers -->
+      <item> random_number </item>
+      <item> random_seed </item>
+    </list>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                           C O N T E X T S                         *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="default" >
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_decls" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_io_stmnts" />
+        <IncludeRules context="find_op_and_log" />
+        <IncludeRules context="find_numbers" />
+        <IncludeRules context="find_preprocessor" />
+        <IncludeRules context="find_comments" />
+        <IncludeRules context="find_symbols" />
+        <IncludeRules context="find_end_stmnts" />
+        <IncludeRules context="find_begin_stmnts" />
+      </context>
+<!--************************END OF THE MAIN CONTEXT*************************-->
+
+
+
+<!-- This context highlights preprocessor lines -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_preprocessor">
+        <RegExpr attribute="Preprocessor" context="#stay" String="(#|cDEC\$|CDEC\$).*$" column="0"/>
+      </context>
+
+<!-- This context highlights operators and the logical values .true. .false. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_op_and_log">
+        <RegExpr attribute="Logical" context="#stay" String="\.(true|false)\." insensitive="TRUE"/>
+        <RegExpr attribute="Operator" context="#stay" String="\.[A-Za-z]+\."/>
+        <RegExpr attribute="Operator" context="#stay" String="(==|/=|&lt;|&lt;=|&gt;|&gt;=)"/>
+      </context>
+
+<!-- This context highlights comments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">
+        <RegExpr attribute="Comment" context="#stay" String="[cC\*].*$" column="0"/>
+        <RegExpr attribute="Comment" context="#stay" String="!.*$"/>
+      </context>
+
+<!-- This context highlights symbols -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_symbols">
+        <Detect2Chars attribute="Keyword" context="#stay" char="*" char1="*"/>
+        <Detect2Chars attribute="Keyword" context="#stay" char="(" char1="/"/>
+        <Detect2Chars attribute="Keyword" context="#stay" char="/" char1=")"/>
+        <AnyChar attribute="Keyword" context="#stay" String="&amp;+-*/=?[]^{|}~"/>
+        <AnyChar attribute="Symbol" context="#stay" String="(),"/>
+      </context>
+
+<!-- This context highlights items inside the parentesis of a function -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers" />
+      </context>
+
+<!-- The following two contexts match input/output statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(read|write|backspace|rewind|end\s*file|close)\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\bopen\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\binquire\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="TRUE"/>
+        <keyword attribute="IO Function" context="#stay" String="io_functions"/>
+      </context>
+<!-- This context matches parenthesis for the read, write, ... statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">
+        <DetectChar attribute="IO Function" context="#stay" char="*"/>
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers" />
+        <IncludeRules context="find_symbols" />
+      </context>
+<!-- This context highlights the text inside the parenthesis of fortran statement -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">
+        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <RegExpr attribute="IO Function" context="#stay" String="[0-9]*/" insensitive="TRUE"/>
+        <AnyChar attribute="IO Function" context="#stay" String=":"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_symbols" />
+      </context>
+
+<!-- The following context matches the begin of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="TRUE"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(program|subroutine|function|module|block\s*data)\b" insensitive="TRUE" beginRegion="Unit"/>
+      </context>
+<!-- The following context matches the end of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(program|subroutine|function|module|block\s*data)\b" insensitive="TRUE" endRegion="Unit"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(do|if|select|where|forall|interface)\b" insensitive="TRUE"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\b" insensitive="TRUE" endRegion="Unit"/>
+      </context>
+
+<!-- The following two contexts match declarations -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
+        <RegExpr attribute="Data Type" context="#stay" String="\binteger[\*]\d{1,2}" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\breal[\*]\d{1,2}" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bcomplex[\*]\d{1,2}" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*type\b" insensitive="TRUE"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <RegExpr attribute="Data Type" context="#stay" String="^\s*data\b" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="find_paren" String="^\s*real\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="^\s*real(?![\w\*])" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bcharacter[*][0-9]+\b" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="find_paren" String="\b(type|integer|complex|character|logical|intent|dimension)\b\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\b(type|integer|complex|character|logical|intent|dimension)\b" insensitive="TRUE"/>
+        <Detect2Chars attribute="Data Type" context="#stay" char=":" char1=":"/>
+      </context>
+<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->
+      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">
+        <DetectChar attribute="Data Type" context="find_paren" char="("/>
+        <DetectChar attribute="Data Type" context="#pop" char=")"/>
+      </context>
+
+<!-- The following context matches intrinsic procedures -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      <!-- INTRINSIC PROCEDURES -->
+        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>
+        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>
+        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>
+        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>
+      </context>
+
+<!-- The following context matches integer and real numbers -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">
+        <!-- Floating-point numbers with optional kind -->
+        <RegExpr attribute="Float" context="#stay" String="[0-9]*\.[0-9]+([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?" insensitive="TRUE"/>
+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+\.[0-9]*([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?(?![a-z])" insensitive="TRUE"/>
+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+[de][+-]?[0-9]+([_]([0-9]+|[a-z][\w_]*))?" insensitive="TRUE"/>
+        <!-- Integers with optional kind specifier -->
+        <RegExpr attribute="Decimal" context="#stay" String="\b[0-9]+([_]([0-9]+|[a-zA-Z][\w_]*))?"/>
+        <!-- Integers in binary, octal and hexadecimal notations -->
+        <RegExpr attribute="Decimal" context="#stay" String="\b[bozx]([&apos;][0-9a-f]+[&apos;]|[&quot;][0-9a-f]+[&quot;])" insensitive="TRUE"/>
+      </context>
+
+<!-- The following four contexts implement the complex string multi-line declarations -->
+      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->
+      <context attribute="String" lineEndContext="#stay" name="find_strings">
+        <DetectChar attribute="String" context="string_1" char="&apos;"/>
+        <DetectChar attribute="String" context="string_2" char="&quot;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>
+        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>
+        <RegExpr attribute="Comment" context="#stay" String="(!.*)?$" firstNonSpace="true"/>
+      </context>
+    </contexts>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Decimal" defStyleNum="dsDecVal"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Symbol" defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Operator" defStyleNum="dsKeyword" color="#008000" selColor="#ff00ff" bold="1" italic="0"/>
+      <itemData name="Logical" defStyleNum="dsOthers" color="#800080" selColor="#ffa0a0" bold="1" italic="0"/>
+      <itemData name="IO Function" defStyleNum="dsFunction" color="#006060" selColor="#ffffff" bold="0" italic="0"/>
+      <itemData name="Elemental Procedure" defStyleNum="dsKeyword" color="#600060" selColor="#ffa0ff" bold="1" italic="0"/>
+      <itemData name="Inquiry Function" defStyleNum="dsFunction" color="#000060" selColor="#a0a0ff" bold="1" italic="1"/>
+      <itemData name="Transformational Function" defStyleNum="dsFunction" color="#600060" selColor="#ffa0ff" bold="1" italic="0"/>
+      <itemData name="Non elemental subroutine" defStyleNum="dsKeyword" color="#600060" selColor="#ffa0ff" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="c"/>
+      <comment name="singleLine" start="!"/>
+    </comments>
+    <keywords casesensitive="0"/>
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/html.xml b/src/plugins/genericeditor/XML/html.xml
new file mode 100644
index 00000000000..7e0a93ef92d
--- /dev/null
+++ b/src/plugins/genericeditor/XML/html.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+<language name="HTML" version="1.99" kateversion="2.4" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+
+<highlighting>
+<contexts>
+  <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindHTML" />
+  </context>
+
+  <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="TRUE" beginRegion="style" />
+    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="TRUE" beginRegion="script" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="TRUE" beginRegion="pre" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="TRUE" beginRegion="div" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="TRUE" beginRegion="table" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;ul\b" insensitive="TRUE" beginRegion="ul" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;ol\b" insensitive="TRUE" beginRegion="ol" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;dl\b" insensitive="TRUE" beginRegion="dl" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="TRUE" endRegion="pre" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="TRUE" endRegion="div" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="TRUE" endRegion="table" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/ul\b" insensitive="TRUE" endRegion="ul" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/ol\b" insensitive="TRUE" endRegion="ol" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/dl\b" insensitive="TRUE" endRegion="dl" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
+    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
+  </context>
+
+  <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
+  </context>
+
+  <context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/>
+    <RegExpr attribute="Attribute" context="#stay" String="\s+&name;" />
+    <DetectChar attribute="Attribute" context="Value" char="=" />
+  </context>
+
+  <context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+  </context>
+
+
+  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+    <DetectSpaces/>
+    <IncludeRules context="##Alerts" />
+    <DetectIdentifier/>
+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+  </context>
+
+  <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+  </context>
+
+  <context name="PI" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+  </context>
+
+  <context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
+    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
+  </context>
+
+  <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
+    <IncludeRules context="FindDTDRules" />
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+  </context>
+
+  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&quot;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&apos;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="El Open" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
+    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
+    <DetectChar attribute="Element" context="CSS content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="TRUE" endRegion="style" />
+    <IncludeRules context="##CSS" includeAttrib="true"/>
+  </context>
+
+  <context name="JS" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
+    <DetectChar attribute="Element" context="JS content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+    <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="TRUE" />
+    <IncludeRules context="##JavaScript" includeAttrib="true"/>
+  </context>
+
+  <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
+    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+    <IncludeRules context="##Alerts" />
+  </context>
+
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+    <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+    <DetectSpaces />
+  </context>
+
+  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+    <IncludeRules context="FindEntityRefs" />
+    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
+    <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+  </context>
+
+  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+</contexts>
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" />
+  <itemData name="Comment" defStyleNum="dsComment" />
+  <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
+  <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
+  <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
+  <itemData name="Element" defStyleNum="dsKeyword" />
+  <itemData name="Attribute" defStyleNum="dsOthers" />
+  <itemData name="Value" defStyleNum="dsString" color="#a00" />
+  <itemData name="EntityRef" defStyleNum="dsDecVal" />
+  <itemData name="PEntityRef" defStyleNum="dsDecVal" />
+  <itemData name="Error" defStyleNum="dsError" />
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+  </comments>
+</general>
+</language>
diff --git a/src/plugins/genericeditor/XML/java.xml b/src/plugins/genericeditor/XML/java.xml
new file mode 100644
index 00000000000..c7f0f396732
--- /dev/null
+++ b/src/plugins/genericeditor/XML/java.xml
@@ -0,0 +1,3864 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Java" version="1.19" kateversion="2.4" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+	<highlighting>
+		<list name="java15">
+			<item> ACTIVE </item>
+			<item> ACTIVITY_COMPLETED </item>
+			<item> ACTIVITY_REQUIRED </item>
+			<item> ARG_IN </item>
+			<item> ARG_INOUT </item>
+			<item> ARG_OUT </item>
+			<item> AWTError </item>
+			<item> AWTEvent </item>
+			<item> AWTEventListener </item>
+			<item> AWTEventListenerProxy </item>
+			<item> AWTEventMulticaster </item>
+			<item> AWTException </item>
+			<item> AWTKeyStroke </item>
+			<item> AWTPermission </item>
+			<item> AbstractAction </item>
+			<item> AbstractBorder </item>
+			<item> AbstractButton </item>
+			<item> AbstractCellEditor </item>
+			<item> AbstractCollection </item>
+			<item> AbstractColorChooserPanel </item>
+			<item> AbstractDocument </item>
+			<item> AbstractDocument.AttributeContext </item>
+			<item> AbstractDocument.Content </item>
+			<item> AbstractDocument.ElementEdit </item>
+			<item> AbstractExecutorService </item>
+			<item> AbstractInterruptibleChannel </item>
+			<item> AbstractLayoutCache </item>
+			<item> AbstractLayoutCache.NodeDimensions </item>
+			<item> AbstractList </item>
+			<item> AbstractListModel </item>
+			<item> AbstractMap </item>
+			<item> AbstractMethodError </item>
+			<item> AbstractPreferences </item>
+			<item> AbstractQueue </item>
+			<item> AbstractQueuedSynchronizer </item>
+			<item> AbstractSelectableChannel </item>
+			<item> AbstractSelectionKey </item>
+			<item> AbstractSelector </item>
+			<item> AbstractSequentialList </item>
+			<item> AbstractSet </item>
+			<item> AbstractSpinnerModel </item>
+			<item> AbstractTableModel </item>
+			<item> AbstractUndoableEdit </item>
+			<item> AbstractWriter </item>
+			<item> AccessControlContext </item>
+			<item> AccessControlException </item>
+			<item> AccessController </item>
+			<item> AccessException </item>
+			<item> Accessible </item>
+			<item> AccessibleAction </item>
+			<item> AccessibleAttributeSequence </item>
+			<item> AccessibleBundle </item>
+			<item> AccessibleComponent </item>
+			<item> AccessibleContext </item>
+			<item> AccessibleEditableText </item>
+			<item> AccessibleExtendedComponent </item>
+			<item> AccessibleExtendedTable </item>
+			<item> AccessibleExtendedText </item>
+			<item> AccessibleHyperlink </item>
+			<item> AccessibleHypertext </item>
+			<item> AccessibleIcon </item>
+			<item> AccessibleKeyBinding </item>
+			<item> AccessibleObject </item>
+			<item> AccessibleRelation </item>
+			<item> AccessibleRelationSet </item>
+			<item> AccessibleResourceBundle </item>
+			<item> AccessibleRole </item>
+			<item> AccessibleSelection </item>
+			<item> AccessibleState </item>
+			<item> AccessibleStateSet </item>
+			<item> AccessibleStreamable </item>
+			<item> AccessibleTable </item>
+			<item> AccessibleTableModelChange </item>
+			<item> AccessibleText </item>
+			<item> AccessibleTextSequence </item>
+			<item> AccessibleValue </item>
+			<item> AccountException </item>
+			<item> AccountExpiredException </item>
+			<item> AccountLockedException </item>
+			<item> AccountNotFoundException </item>
+			<item> Acl </item>
+			<item> AclEntry </item>
+			<item> AclNotFoundException </item>
+			<item> Action </item>
+			<item> ActionEvent </item>
+			<item> ActionListener </item>
+			<item> ActionMap </item>
+			<item> ActionMapUIResource </item>
+			<item> Activatable </item>
+			<item> ActivateFailedException </item>
+			<item> ActivationDesc </item>
+			<item> ActivationException </item>
+			<item> ActivationGroup </item>
+			<item> ActivationGroupDesc </item>
+			<item> ActivationGroupDesc.CommandEnvironment </item>
+			<item> ActivationGroupID </item>
+			<item> ActivationGroup_Stub </item>
+			<item> ActivationID </item>
+			<item> ActivationInstantiator </item>
+			<item> ActivationMonitor </item>
+			<item> ActivationSystem </item>
+			<item> Activator </item>
+			<item> ActiveEvent </item>
+			<item> ActivityCompletedException </item>
+			<item> ActivityRequiredException </item>
+			<item> AdapterActivator </item>
+			<item> AdapterActivatorOperations </item>
+			<item> AdapterAlreadyExists </item>
+			<item> AdapterAlreadyExistsHelper </item>
+			<item> AdapterInactive </item>
+			<item> AdapterInactiveHelper </item>
+			<item> AdapterManagerIdHelper </item>
+			<item> AdapterNameHelper </item>
+			<item> AdapterNonExistent </item>
+			<item> AdapterNonExistentHelper </item>
+			<item> AdapterStateHelper </item>
+			<item> AddressHelper </item>
+			<item> Adjustable </item>
+			<item> AdjustmentEvent </item>
+			<item> AdjustmentListener </item>
+			<item> Adler32 </item>
+			<item> AffineTransform </item>
+			<item> AffineTransformOp </item>
+			<item> AlgorithmParameterGenerator </item>
+			<item> AlgorithmParameterGeneratorSpi </item>
+			<item> AlgorithmParameterSpec </item>
+			<item> AlgorithmParameters </item>
+			<item> AlgorithmParametersSpi </item>
+			<item> AllPermission </item>
+			<item> AlphaComposite </item>
+			<item> AlreadyBound </item>
+			<item> AlreadyBoundException </item>
+			<item> AlreadyBoundHelper </item>
+			<item> AlreadyBoundHolder </item>
+			<item> AlreadyConnectedException </item>
+			<item> AncestorEvent </item>
+			<item> AncestorListener </item>
+			<item> AnnotatedElement </item>
+			<item> Annotation </item>
+			<item> Annotation </item>
+			<item> AnnotationFormatError </item>
+			<item> AnnotationTypeMismatchException </item>
+			<item> Any </item>
+			<item> AnyHolder </item>
+			<item> AnySeqHelper </item>
+			<item> AnySeqHelper </item>
+			<item> AnySeqHolder </item>
+			<item> AppConfigurationEntry </item>
+			<item> AppConfigurationEntry.LoginModuleControlFlag </item>
+			<item> Appendable </item>
+			<item> Applet </item>
+			<item> AppletContext </item>
+			<item> AppletInitializer </item>
+			<item> AppletStub </item>
+			<item> ApplicationException </item>
+			<item> Arc2D </item>
+			<item> Arc2D.Double </item>
+			<item> Arc2D.Float </item>
+			<item> Area </item>
+			<item> AreaAveragingScaleFilter </item>
+			<item> ArithmeticException </item>
+			<item> Array </item>
+			<item> Array </item>
+			<item> ArrayBlockingQueue </item>
+			<item> ArrayIndexOutOfBoundsException </item>
+			<item> ArrayList </item>
+			<item> ArrayStoreException </item>
+			<item> ArrayType </item>
+			<item> Arrays </item>
+			<item> AssertionError </item>
+			<item> AsyncBoxView </item>
+			<item> AsynchronousCloseException </item>
+			<item> AtomicBoolean </item>
+			<item> AtomicInteger </item>
+			<item> AtomicIntegerArray </item>
+			<item> AtomicIntegerFieldUpdater </item>
+			<item> AtomicLong </item>
+			<item> AtomicLongArray </item>
+			<item> AtomicLongFieldUpdater </item>
+			<item> AtomicMarkableReference </item>
+			<item> AtomicReference </item>
+			<item> AtomicReferenceArray </item>
+			<item> AtomicReferenceFieldUpdater </item>
+			<item> AtomicStampedReference </item>
+			<item> Attr </item>
+			<item> Attribute </item>
+			<item> Attribute </item>
+			<item> Attribute </item>
+			<item> AttributeChangeNotification </item>
+			<item> AttributeChangeNotificationFilter </item>
+			<item> AttributeException </item>
+			<item> AttributeInUseException </item>
+			<item> AttributeList </item>
+			<item> AttributeList </item>
+			<item> AttributeList </item>
+			<item> AttributeListImpl </item>
+			<item> AttributeModificationException </item>
+			<item> AttributeNotFoundException </item>
+			<item> AttributeSet </item>
+			<item> AttributeSet </item>
+			<item> AttributeSet.CharacterAttribute </item>
+			<item> AttributeSet.ColorAttribute </item>
+			<item> AttributeSet.FontAttribute </item>
+			<item> AttributeSet.ParagraphAttribute </item>
+			<item> AttributeSetUtilities </item>
+			<item> AttributeValueExp </item>
+			<item> AttributedCharacterIterator </item>
+			<item> AttributedCharacterIterator.Attribute </item>
+			<item> AttributedString </item>
+			<item> Attributes </item>
+			<item> Attributes </item>
+			<item> Attributes </item>
+			<item> Attributes.Name </item>
+			<item> Attributes2 </item>
+			<item> Attributes2Impl </item>
+			<item> AttributesImpl </item>
+			<item> AudioClip </item>
+			<item> AudioFileFormat </item>
+			<item> AudioFileFormat.Type </item>
+			<item> AudioFileReader </item>
+			<item> AudioFileWriter </item>
+			<item> AudioFormat </item>
+			<item> AudioFormat.Encoding </item>
+			<item> AudioInputStream </item>
+			<item> AudioPermission </item>
+			<item> AudioSystem </item>
+			<item> AuthPermission </item>
+			<item> AuthProvider </item>
+			<item> AuthenticationException </item>
+			<item> AuthenticationException </item>
+			<item> AuthenticationNotSupportedException </item>
+			<item> Authenticator </item>
+			<item> Authenticator.RequestorType </item>
+			<item> AuthorizeCallback </item>
+			<item> Autoscroll </item>
+			<item> BAD_CONTEXT </item>
+			<item> BAD_INV_ORDER </item>
+			<item> BAD_OPERATION </item>
+			<item> BAD_PARAM </item>
+			<item> BAD_POLICY </item>
+			<item> BAD_POLICY_TYPE </item>
+			<item> BAD_POLICY_VALUE </item>
+			<item> BAD_QOS </item>
+			<item> BAD_TYPECODE </item>
+			<item> BMPImageWriteParam </item>
+			<item> BackingStoreException </item>
+			<item> BadAttributeValueExpException </item>
+			<item> BadBinaryOpValueExpException </item>
+			<item> BadKind </item>
+			<item> BadLocationException </item>
+			<item> BadPaddingException </item>
+			<item> BadStringOperationException </item>
+			<item> BandCombineOp </item>
+			<item> BandedSampleModel </item>
+			<item> BaseRowSet </item>
+			<item> BasicArrowButton </item>
+			<item> BasicAttribute </item>
+			<item> BasicAttributes </item>
+			<item> BasicBorders </item>
+			<item> BasicBorders.ButtonBorder </item>
+			<item> BasicBorders.FieldBorder </item>
+			<item> BasicBorders.MarginBorder </item>
+			<item> BasicBorders.MenuBarBorder </item>
+			<item> BasicBorders.RadioButtonBorder </item>
+			<item> BasicBorders.RolloverButtonBorder </item>
+			<item> BasicBorders.SplitPaneBorder </item>
+			<item> BasicBorders.ToggleButtonBorder </item>
+			<item> BasicButtonListener </item>
+			<item> BasicButtonUI </item>
+			<item> BasicCheckBoxMenuItemUI </item>
+			<item> BasicCheckBoxUI </item>
+			<item> BasicColorChooserUI </item>
+			<item> BasicComboBoxEditor </item>
+			<item> BasicComboBoxEditor.UIResource </item>
+			<item> BasicComboBoxRenderer </item>
+			<item> BasicComboBoxRenderer.UIResource </item>
+			<item> BasicComboBoxUI </item>
+			<item> BasicComboPopup </item>
+			<item> BasicControl </item>
+			<item> BasicDesktopIconUI </item>
+			<item> BasicDesktopPaneUI </item>
+			<item> BasicDirectoryModel </item>
+			<item> BasicEditorPaneUI </item>
+			<item> BasicFileChooserUI </item>
+			<item> BasicFormattedTextFieldUI </item>
+			<item> BasicGraphicsUtils </item>
+			<item> BasicHTML </item>
+			<item> BasicIconFactory </item>
+			<item> BasicInternalFrameTitlePane </item>
+			<item> BasicInternalFrameUI </item>
+			<item> BasicLabelUI </item>
+			<item> BasicListUI </item>
+			<item> BasicLookAndFeel </item>
+			<item> BasicMenuBarUI </item>
+			<item> BasicMenuItemUI </item>
+			<item> BasicMenuUI </item>
+			<item> BasicOptionPaneUI </item>
+			<item> BasicOptionPaneUI.ButtonAreaLayout </item>
+			<item> BasicPanelUI </item>
+			<item> BasicPasswordFieldUI </item>
+			<item> BasicPermission </item>
+			<item> BasicPopupMenuSeparatorUI </item>
+			<item> BasicPopupMenuUI </item>
+			<item> BasicProgressBarUI </item>
+			<item> BasicRadioButtonMenuItemUI </item>
+			<item> BasicRadioButtonUI </item>
+			<item> BasicRootPaneUI </item>
+			<item> BasicScrollBarUI </item>
+			<item> BasicScrollPaneUI </item>
+			<item> BasicSeparatorUI </item>
+			<item> BasicSliderUI </item>
+			<item> BasicSpinnerUI </item>
+			<item> BasicSplitPaneDivider </item>
+			<item> BasicSplitPaneUI </item>
+			<item> BasicStroke </item>
+			<item> BasicTabbedPaneUI </item>
+			<item> BasicTableHeaderUI </item>
+			<item> BasicTableUI </item>
+			<item> BasicTextAreaUI </item>
+			<item> BasicTextFieldUI </item>
+			<item> BasicTextPaneUI </item>
+			<item> BasicTextUI </item>
+			<item> BasicTextUI.BasicCaret </item>
+			<item> BasicTextUI.BasicHighlighter </item>
+			<item> BasicToggleButtonUI </item>
+			<item> BasicToolBarSeparatorUI </item>
+			<item> BasicToolBarUI </item>
+			<item> BasicToolTipUI </item>
+			<item> BasicTreeUI </item>
+			<item> BasicViewportUI </item>
+			<item> BatchUpdateException </item>
+			<item> BeanContext </item>
+			<item> BeanContextChild </item>
+			<item> BeanContextChildComponentProxy </item>
+			<item> BeanContextChildSupport </item>
+			<item> BeanContextContainerProxy </item>
+			<item> BeanContextEvent </item>
+			<item> BeanContextMembershipEvent </item>
+			<item> BeanContextMembershipListener </item>
+			<item> BeanContextProxy </item>
+			<item> BeanContextServiceAvailableEvent </item>
+			<item> BeanContextServiceProvider </item>
+			<item> BeanContextServiceProviderBeanInfo </item>
+			<item> BeanContextServiceRevokedEvent </item>
+			<item> BeanContextServiceRevokedListener </item>
+			<item> BeanContextServices </item>
+			<item> BeanContextServicesListener </item>
+			<item> BeanContextServicesSupport </item>
+			<item> BeanContextServicesSupport.BCSSServiceProvider </item>
+			<item> BeanContextSupport </item>
+			<item> BeanContextSupport.BCSIterator </item>
+			<item> BeanDescriptor </item>
+			<item> BeanInfo </item>
+			<item> Beans </item>
+			<item> BevelBorder </item>
+			<item> Bidi </item>
+			<item> BigDecimal </item>
+			<item> BigInteger </item>
+			<item> BinaryRefAddr </item>
+			<item> BindException </item>
+			<item> Binding </item>
+			<item> Binding </item>
+			<item> BindingHelper </item>
+			<item> BindingHolder </item>
+			<item> BindingIterator </item>
+			<item> BindingIteratorHelper </item>
+			<item> BindingIteratorHolder </item>
+			<item> BindingIteratorOperations </item>
+			<item> BindingIteratorPOA </item>
+			<item> BindingListHelper </item>
+			<item> BindingListHolder </item>
+			<item> BindingType </item>
+			<item> BindingTypeHelper </item>
+			<item> BindingTypeHolder </item>
+			<item> BitSet </item>
+			<item> Blob </item>
+			<item> BlockView </item>
+			<item> BlockingQueue </item>
+			<item> Book </item>
+			<item> Boolean </item>
+			<item> BooleanControl </item>
+			<item> BooleanControl.Type </item>
+			<item> BooleanHolder </item>
+			<item> BooleanSeqHelper </item>
+			<item> BooleanSeqHolder </item>
+			<item> Border </item>
+			<item> BorderFactory </item>
+			<item> BorderLayout </item>
+			<item> BorderUIResource </item>
+			<item> BorderUIResource.BevelBorderUIResource </item>
+			<item> BorderUIResource.CompoundBorderUIResource </item>
+			<item> BorderUIResource.EmptyBorderUIResource </item>
+			<item> BorderUIResource.EtchedBorderUIResource </item>
+			<item> BorderUIResource.LineBorderUIResource </item>
+			<item> BorderUIResource.MatteBorderUIResource </item>
+			<item> BorderUIResource.TitledBorderUIResource </item>
+			<item> BoundedRangeModel </item>
+			<item> Bounds </item>
+			<item> Bounds </item>
+			<item> Box </item>
+			<item> Box.Filler </item>
+			<item> BoxLayout </item>
+			<item> BoxView </item>
+			<item> BoxedValueHelper </item>
+			<item> BreakIterator </item>
+			<item> BrokenBarrierException </item>
+			<item> Buffer </item>
+			<item> BufferCapabilities </item>
+			<item> BufferCapabilities.FlipContents </item>
+			<item> BufferOverflowException </item>
+			<item> BufferStrategy </item>
+			<item> BufferUnderflowException </item>
+			<item> BufferedImage </item>
+			<item> BufferedImageFilter </item>
+			<item> BufferedImageOp </item>
+			<item> BufferedInputStream </item>
+			<item> BufferedOutputStream </item>
+			<item> BufferedReader </item>
+			<item> BufferedWriter </item>
+			<item> Button </item>
+			<item> ButtonGroup </item>
+			<item> ButtonModel </item>
+			<item> ButtonUI </item>
+			<item> Byte </item>
+			<item> ByteArrayInputStream </item>
+			<item> ByteArrayOutputStream </item>
+			<item> ByteBuffer </item>
+			<item> ByteChannel </item>
+			<item> ByteHolder </item>
+			<item> ByteLookupTable </item>
+			<item> ByteOrder </item>
+			<item> CDATASection </item>
+			<item> CMMException </item>
+			<item> CODESET_INCOMPATIBLE </item>
+			<item> COMM_FAILURE </item>
+			<item> CRC32 </item>
+			<item> CRL </item>
+			<item> CRLException </item>
+			<item> CRLSelector </item>
+			<item> CSS </item>
+			<item> CSS.Attribute </item>
+			<item> CTX_RESTRICT_SCOPE </item>
+			<item> CacheRequest </item>
+			<item> CacheResponse </item>
+			<item> CachedRowSet </item>
+			<item> Calendar </item>
+			<item> Callable </item>
+			<item> CallableStatement </item>
+			<item> Callback </item>
+			<item> CallbackHandler </item>
+			<item> CancelablePrintJob </item>
+			<item> CancellationException </item>
+			<item> CancelledKeyException </item>
+			<item> CannotProceed </item>
+			<item> CannotProceedException </item>
+			<item> CannotProceedHelper </item>
+			<item> CannotProceedHolder </item>
+			<item> CannotRedoException </item>
+			<item> CannotUndoException </item>
+			<item> Canvas </item>
+			<item> CardLayout </item>
+			<item> Caret </item>
+			<item> CaretEvent </item>
+			<item> CaretListener </item>
+			<item> CellEditor </item>
+			<item> CellEditorListener </item>
+			<item> CellRendererPane </item>
+			<item> CertPath </item>
+			<item> CertPath.CertPathRep </item>
+			<item> CertPathBuilder </item>
+			<item> CertPathBuilderException </item>
+			<item> CertPathBuilderResult </item>
+			<item> CertPathBuilderSpi </item>
+			<item> CertPathParameters </item>
+			<item> CertPathTrustManagerParameters </item>
+			<item> CertPathValidator </item>
+			<item> CertPathValidatorException </item>
+			<item> CertPathValidatorResult </item>
+			<item> CertPathValidatorSpi </item>
+			<item> CertSelector </item>
+			<item> CertStore </item>
+			<item> CertStoreException </item>
+			<item> CertStoreParameters </item>
+			<item> CertStoreSpi </item>
+			<item> Certificate </item>
+			<item> Certificate </item>
+			<item> Certificate </item>
+			<item> Certificate.CertificateRep </item>
+			<item> CertificateEncodingException </item>
+			<item> CertificateEncodingException </item>
+			<item> CertificateException </item>
+			<item> CertificateException </item>
+			<item> CertificateExpiredException </item>
+			<item> CertificateExpiredException </item>
+			<item> CertificateFactory </item>
+			<item> CertificateFactorySpi </item>
+			<item> CertificateNotYetValidException </item>
+			<item> CertificateNotYetValidException </item>
+			<item> CertificateParsingException </item>
+			<item> CertificateParsingException </item>
+			<item> ChangeEvent </item>
+			<item> ChangeListener </item>
+			<item> ChangedCharSetException </item>
+			<item> Channel </item>
+			<item> ChannelBinding </item>
+			<item> Channels </item>
+			<item> CharArrayReader </item>
+			<item> CharArrayWriter </item>
+			<item> CharBuffer </item>
+			<item> CharConversionException </item>
+			<item> CharHolder </item>
+			<item> CharSeqHelper </item>
+			<item> CharSeqHolder </item>
+			<item> CharSequence </item>
+			<item> Character </item>
+			<item> Character.Subset </item>
+			<item> Character.UnicodeBlock </item>
+			<item> CharacterCodingException </item>
+			<item> CharacterData </item>
+			<item> CharacterIterator </item>
+			<item> Charset </item>
+			<item> CharsetDecoder </item>
+			<item> CharsetEncoder </item>
+			<item> CharsetProvider </item>
+			<item> Checkbox </item>
+			<item> CheckboxGroup </item>
+			<item> CheckboxMenuItem </item>
+			<item> CheckedInputStream </item>
+			<item> CheckedOutputStream </item>
+			<item> Checksum </item>
+			<item> Choice </item>
+			<item> ChoiceCallback </item>
+			<item> ChoiceFormat </item>
+			<item> Chromaticity </item>
+			<item> Cipher </item>
+			<item> CipherInputStream </item>
+			<item> CipherOutputStream </item>
+			<item> CipherSpi </item>
+			<item> Class </item>
+			<item> ClassCastException </item>
+			<item> ClassCircularityError </item>
+			<item> ClassDefinition </item>
+			<item> ClassDesc </item>
+			<item> ClassFileTransformer </item>
+			<item> ClassFormatError </item>
+			<item> ClassLoader </item>
+			<item> ClassLoaderRepository </item>
+			<item> ClassLoadingMXBean </item>
+			<item> ClassNotFoundException </item>
+			<item> ClientRequestInfo </item>
+			<item> ClientRequestInfoOperations </item>
+			<item> ClientRequestInterceptor </item>
+			<item> ClientRequestInterceptorOperations </item>
+			<item> Clip </item>
+			<item> Clipboard </item>
+			<item> ClipboardOwner </item>
+			<item> Clob </item>
+			<item> CloneNotSupportedException </item>
+			<item> Cloneable </item>
+			<item> Closeable </item>
+			<item> ClosedByInterruptException </item>
+			<item> ClosedChannelException </item>
+			<item> ClosedSelectorException </item>
+			<item> CodeSets </item>
+			<item> CodeSigner </item>
+			<item> CodeSource </item>
+			<item> Codec </item>
+			<item> CodecFactory </item>
+			<item> CodecFactoryHelper </item>
+			<item> CodecFactoryOperations </item>
+			<item> CodecOperations </item>
+			<item> CoderMalfunctionError </item>
+			<item> CoderResult </item>
+			<item> CodingErrorAction </item>
+			<item> CollationElementIterator </item>
+			<item> CollationKey </item>
+			<item> Collator </item>
+			<item> Collection </item>
+			<item> CollectionCertStoreParameters </item>
+			<item> Collections </item>
+			<item> Color </item>
+			<item> ColorChooserComponentFactory </item>
+			<item> ColorChooserUI </item>
+			<item> ColorConvertOp </item>
+			<item> ColorModel </item>
+			<item> ColorSelectionModel </item>
+			<item> ColorSpace </item>
+			<item> ColorSupported </item>
+			<item> ColorType </item>
+			<item> ColorUIResource </item>
+			<item> ComboBoxEditor </item>
+			<item> ComboBoxModel </item>
+			<item> ComboBoxUI </item>
+			<item> ComboPopup </item>
+			<item> Comment </item>
+			<item> CommunicationException </item>
+			<item> Comparable </item>
+			<item> Comparator </item>
+			<item> CompilationMXBean </item>
+			<item> Compiler </item>
+			<item> CompletionService </item>
+			<item> CompletionStatus </item>
+			<item> CompletionStatusHelper </item>
+			<item> Component </item>
+			<item> ComponentAdapter </item>
+			<item> ComponentColorModel </item>
+			<item> ComponentEvent </item>
+			<item> ComponentIdHelper </item>
+			<item> ComponentInputMap </item>
+			<item> ComponentInputMapUIResource </item>
+			<item> ComponentListener </item>
+			<item> ComponentOrientation </item>
+			<item> ComponentSampleModel </item>
+			<item> ComponentUI </item>
+			<item> ComponentView </item>
+			<item> Composite </item>
+			<item> CompositeContext </item>
+			<item> CompositeData </item>
+			<item> CompositeDataSupport </item>
+			<item> CompositeName </item>
+			<item> CompositeType </item>
+			<item> CompositeView </item>
+			<item> CompoundBorder </item>
+			<item> CompoundControl </item>
+			<item> CompoundControl.Type </item>
+			<item> CompoundEdit </item>
+			<item> CompoundName </item>
+			<item> Compression </item>
+			<item> ConcurrentHashMap </item>
+			<item> ConcurrentLinkedQueue </item>
+			<item> ConcurrentMap </item>
+			<item> ConcurrentModificationException </item>
+			<item> Condition </item>
+			<item> Configuration </item>
+			<item> ConfigurationException </item>
+			<item> ConfirmationCallback </item>
+			<item> ConnectException </item>
+			<item> ConnectException </item>
+			<item> ConnectIOException </item>
+			<item> Connection </item>
+			<item> ConnectionEvent </item>
+			<item> ConnectionEventListener </item>
+			<item> ConnectionPendingException </item>
+			<item> ConnectionPoolDataSource </item>
+			<item> ConsoleHandler </item>
+			<item> Constructor </item>
+			<item> Container </item>
+			<item> ContainerAdapter </item>
+			<item> ContainerEvent </item>
+			<item> ContainerListener </item>
+			<item> ContainerOrderFocusTraversalPolicy </item>
+			<item> ContentHandler </item>
+			<item> ContentHandler </item>
+			<item> ContentHandlerFactory </item>
+			<item> ContentModel </item>
+			<item> Context </item>
+			<item> Context </item>
+			<item> ContextList </item>
+			<item> ContextNotEmptyException </item>
+			<item> ContextualRenderedImageFactory </item>
+			<item> Control </item>
+			<item> Control </item>
+			<item> Control.Type </item>
+			<item> ControlFactory </item>
+			<item> ControllerEventListener </item>
+			<item> ConvolveOp </item>
+			<item> CookieHandler </item>
+			<item> CookieHolder </item>
+			<item> Copies </item>
+			<item> CopiesSupported </item>
+			<item> CopyOnWriteArrayList </item>
+			<item> CopyOnWriteArraySet </item>
+			<item> CountDownLatch </item>
+			<item> CounterMonitor </item>
+			<item> CounterMonitorMBean </item>
+			<item> CredentialException </item>
+			<item> CredentialExpiredException </item>
+			<item> CredentialNotFoundException </item>
+			<item> CropImageFilter </item>
+			<item> CubicCurve2D </item>
+			<item> CubicCurve2D.Double </item>
+			<item> CubicCurve2D.Float </item>
+			<item> Currency </item>
+			<item> Current </item>
+			<item> Current </item>
+			<item> Current </item>
+			<item> CurrentHelper </item>
+			<item> CurrentHelper </item>
+			<item> CurrentHelper </item>
+			<item> CurrentHolder </item>
+			<item> CurrentOperations </item>
+			<item> CurrentOperations </item>
+			<item> CurrentOperations </item>
+			<item> Cursor </item>
+			<item> CustomMarshal </item>
+			<item> CustomValue </item>
+			<item> Customizer </item>
+			<item> CyclicBarrier </item>
+			<item> DATA_CONVERSION </item>
+			<item> DESKeySpec </item>
+			<item> DESedeKeySpec </item>
+			<item> DGC </item>
+			<item> DHGenParameterSpec </item>
+			<item> DHKey </item>
+			<item> DHParameterSpec </item>
+			<item> DHPrivateKey </item>
+			<item> DHPrivateKeySpec </item>
+			<item> DHPublicKey </item>
+			<item> DHPublicKeySpec </item>
+			<item> DISCARDING </item>
+			<item> DOMConfiguration </item>
+			<item> DOMError </item>
+			<item> DOMErrorHandler </item>
+			<item> DOMException </item>
+			<item> DOMImplementation </item>
+			<item> DOMImplementationLS </item>
+			<item> DOMImplementationList </item>
+			<item> DOMImplementationRegistry </item>
+			<item> DOMImplementationSource </item>
+			<item> DOMLocator </item>
+			<item> DOMLocator </item>
+			<item> DOMResult </item>
+			<item> DOMSource </item>
+			<item> DOMStringList </item>
+			<item> DSAKey </item>
+			<item> DSAKeyPairGenerator </item>
+			<item> DSAParameterSpec </item>
+			<item> DSAParams </item>
+			<item> DSAPrivateKey </item>
+			<item> DSAPrivateKeySpec </item>
+			<item> DSAPublicKey </item>
+			<item> DSAPublicKeySpec </item>
+			<item> DTD </item>
+			<item> DTDConstants </item>
+			<item> DTDHandler </item>
+			<item> DataBuffer </item>
+			<item> DataBufferByte </item>
+			<item> DataBufferDouble </item>
+			<item> DataBufferFloat </item>
+			<item> DataBufferInt </item>
+			<item> DataBufferShort </item>
+			<item> DataBufferUShort </item>
+			<item> DataFlavor </item>
+			<item> DataFormatException </item>
+			<item> DataInput </item>
+			<item> DataInputStream </item>
+			<item> DataInputStream </item>
+			<item> DataLine </item>
+			<item> DataLine.Info </item>
+			<item> DataOutput </item>
+			<item> DataOutputStream </item>
+			<item> DataOutputStream </item>
+			<item> DataSource </item>
+			<item> DataTruncation </item>
+			<item> DatabaseMetaData </item>
+			<item> DatagramChannel </item>
+			<item> DatagramPacket </item>
+			<item> DatagramSocket </item>
+			<item> DatagramSocketImpl </item>
+			<item> DatagramSocketImplFactory </item>
+			<item> DatatypeConfigurationException </item>
+			<item> DatatypeConstants </item>
+			<item> DatatypeConstants.Field </item>
+			<item> DatatypeFactory </item>
+			<item> Date </item>
+			<item> Date </item>
+			<item> DateFormat </item>
+			<item> DateFormat.Field </item>
+			<item> DateFormatSymbols </item>
+			<item> DateFormatter </item>
+			<item> DateTimeAtCompleted </item>
+			<item> DateTimeAtCreation </item>
+			<item> DateTimeAtProcessing </item>
+			<item> DateTimeSyntax </item>
+			<item> DebugGraphics </item>
+			<item> DecimalFormat </item>
+			<item> DecimalFormatSymbols </item>
+			<item> DeclHandler </item>
+			<item> DefaultBoundedRangeModel </item>
+			<item> DefaultButtonModel </item>
+			<item> DefaultCaret </item>
+			<item> DefaultCellEditor </item>
+			<item> DefaultColorSelectionModel </item>
+			<item> DefaultComboBoxModel </item>
+			<item> DefaultDesktopManager </item>
+			<item> DefaultEditorKit </item>
+			<item> DefaultEditorKit.BeepAction </item>
+			<item> DefaultEditorKit.CopyAction </item>
+			<item> DefaultEditorKit.CutAction </item>
+			<item> DefaultEditorKit.DefaultKeyTypedAction </item>
+			<item> DefaultEditorKit.InsertBreakAction </item>
+			<item> DefaultEditorKit.InsertContentAction </item>
+			<item> DefaultEditorKit.InsertTabAction </item>
+			<item> DefaultEditorKit.PasteAction </item>
+			<item> DefaultFocusManager </item>
+			<item> DefaultFocusTraversalPolicy </item>
+			<item> DefaultFormatter </item>
+			<item> DefaultFormatterFactory </item>
+			<item> DefaultHandler </item>
+			<item> DefaultHandler2 </item>
+			<item> DefaultHighlighter </item>
+			<item> DefaultHighlighter.DefaultHighlightPainter </item>
+			<item> DefaultKeyboardFocusManager </item>
+			<item> DefaultListCellRenderer </item>
+			<item> DefaultListCellRenderer.UIResource </item>
+			<item> DefaultListModel </item>
+			<item> DefaultListSelectionModel </item>
+			<item> DefaultLoaderRepository </item>
+			<item> DefaultLoaderRepository </item>
+			<item> DefaultMenuLayout </item>
+			<item> DefaultMetalTheme </item>
+			<item> DefaultMutableTreeNode </item>
+			<item> DefaultPersistenceDelegate </item>
+			<item> DefaultSingleSelectionModel </item>
+			<item> DefaultStyledDocument </item>
+			<item> DefaultStyledDocument.AttributeUndoableEdit </item>
+			<item> DefaultStyledDocument.ElementSpec </item>
+			<item> DefaultTableCellRenderer </item>
+			<item> DefaultTableCellRenderer.UIResource </item>
+			<item> DefaultTableColumnModel </item>
+			<item> DefaultTableModel </item>
+			<item> DefaultTextUI </item>
+			<item> DefaultTreeCellEditor </item>
+			<item> DefaultTreeCellRenderer </item>
+			<item> DefaultTreeModel </item>
+			<item> DefaultTreeSelectionModel </item>
+			<item> DefinitionKind </item>
+			<item> DefinitionKindHelper </item>
+			<item> Deflater </item>
+			<item> DeflaterOutputStream </item>
+			<item> DelayQueue </item>
+			<item> Delayed </item>
+			<item> Delegate </item>
+			<item> Delegate </item>
+			<item> Delegate </item>
+			<item> DelegationPermission </item>
+			<item> Deprecated </item>
+			<item> Descriptor </item>
+			<item> DescriptorAccess </item>
+			<item> DescriptorSupport </item>
+			<item> DesignMode </item>
+			<item> DesktopIconUI </item>
+			<item> DesktopManager </item>
+			<item> DesktopPaneUI </item>
+			<item> Destination </item>
+			<item> DestroyFailedException </item>
+			<item> Destroyable </item>
+			<item> Dialog </item>
+			<item> Dictionary </item>
+			<item> DigestException </item>
+			<item> DigestInputStream </item>
+			<item> DigestOutputStream </item>
+			<item> Dimension </item>
+			<item> Dimension2D </item>
+			<item> DimensionUIResource </item>
+			<item> DirContext </item>
+			<item> DirObjectFactory </item>
+			<item> DirStateFactory </item>
+			<item> DirStateFactory.Result </item>
+			<item> DirectColorModel </item>
+			<item> DirectoryManager </item>
+			<item> DisplayMode </item>
+			<item> DnDConstants </item>
+			<item> Doc </item>
+			<item> DocAttribute </item>
+			<item> DocAttributeSet </item>
+			<item> DocFlavor </item>
+			<item> DocFlavor.BYTE_ARRAY </item>
+			<item> DocFlavor.CHAR_ARRAY </item>
+			<item> DocFlavor.INPUT_STREAM </item>
+			<item> DocFlavor.READER </item>
+			<item> DocFlavor.SERVICE_FORMATTED </item>
+			<item> DocFlavor.STRING </item>
+			<item> DocFlavor.URL </item>
+			<item> DocPrintJob </item>
+			<item> Document </item>
+			<item> Document </item>
+			<item> DocumentBuilder </item>
+			<item> DocumentBuilderFactory </item>
+			<item> DocumentEvent </item>
+			<item> DocumentEvent.ElementChange </item>
+			<item> DocumentEvent.EventType </item>
+			<item> DocumentFilter </item>
+			<item> DocumentFilter.FilterBypass </item>
+			<item> DocumentFragment </item>
+			<item> DocumentHandler </item>
+			<item> DocumentListener </item>
+			<item> DocumentName </item>
+			<item> DocumentParser </item>
+			<item> DocumentType </item>
+			<item> Documented </item>
+			<item> DomainCombiner </item>
+			<item> DomainManager </item>
+			<item> DomainManagerOperations </item>
+			<item> Double </item>
+			<item> DoubleBuffer </item>
+			<item> DoubleHolder </item>
+			<item> DoubleSeqHelper </item>
+			<item> DoubleSeqHolder </item>
+			<item> DragGestureEvent </item>
+			<item> DragGestureListener </item>
+			<item> DragGestureRecognizer </item>
+			<item> DragSource </item>
+			<item> DragSourceAdapter </item>
+			<item> DragSourceContext </item>
+			<item> DragSourceDragEvent </item>
+			<item> DragSourceDropEvent </item>
+			<item> DragSourceEvent </item>
+			<item> DragSourceListener </item>
+			<item> DragSourceMotionListener </item>
+			<item> Driver </item>
+			<item> DriverManager </item>
+			<item> DriverPropertyInfo </item>
+			<item> DropTarget </item>
+			<item> DropTarget.DropTargetAutoScroller </item>
+			<item> DropTargetAdapter </item>
+			<item> DropTargetContext </item>
+			<item> DropTargetDragEvent </item>
+			<item> DropTargetDropEvent </item>
+			<item> DropTargetEvent </item>
+			<item> DropTargetListener </item>
+			<item> DuplicateFormatFlagsException </item>
+			<item> DuplicateName </item>
+			<item> DuplicateNameHelper </item>
+			<item> Duration </item>
+			<item> DynAny </item>
+			<item> DynAny </item>
+			<item> DynAnyFactory </item>
+			<item> DynAnyFactoryHelper </item>
+			<item> DynAnyFactoryOperations </item>
+			<item> DynAnyHelper </item>
+			<item> DynAnyOperations </item>
+			<item> DynAnySeqHelper </item>
+			<item> DynArray </item>
+			<item> DynArray </item>
+			<item> DynArrayHelper </item>
+			<item> DynArrayOperations </item>
+			<item> DynEnum </item>
+			<item> DynEnum </item>
+			<item> DynEnumHelper </item>
+			<item> DynEnumOperations </item>
+			<item> DynFixed </item>
+			<item> DynFixed </item>
+			<item> DynFixedHelper </item>
+			<item> DynFixedOperations </item>
+			<item> DynSequence </item>
+			<item> DynSequence </item>
+			<item> DynSequenceHelper </item>
+			<item> DynSequenceOperations </item>
+			<item> DynStruct </item>
+			<item> DynStruct </item>
+			<item> DynStructHelper </item>
+			<item> DynStructOperations </item>
+			<item> DynUnion </item>
+			<item> DynUnion </item>
+			<item> DynUnionHelper </item>
+			<item> DynUnionOperations </item>
+			<item> DynValue </item>
+			<item> DynValue </item>
+			<item> DynValueBox </item>
+			<item> DynValueBoxOperations </item>
+			<item> DynValueCommon </item>
+			<item> DynValueCommonOperations </item>
+			<item> DynValueHelper </item>
+			<item> DynValueOperations </item>
+			<item> DynamicImplementation </item>
+			<item> DynamicImplementation </item>
+			<item> DynamicMBean </item>
+			<item> ECField </item>
+			<item> ECFieldF2m </item>
+			<item> ECFieldFp </item>
+			<item> ECGenParameterSpec </item>
+			<item> ECKey </item>
+			<item> ECParameterSpec </item>
+			<item> ECPoint </item>
+			<item> ECPrivateKey </item>
+			<item> ECPrivateKeySpec </item>
+			<item> ECPublicKey </item>
+			<item> ECPublicKeySpec </item>
+			<item> ENCODING_CDR_ENCAPS </item>
+			<item> EOFException </item>
+			<item> EditorKit </item>
+			<item> Element </item>
+			<item> Element </item>
+			<item> Element </item>
+			<item> ElementIterator </item>
+			<item> ElementType </item>
+			<item> Ellipse2D </item>
+			<item> Ellipse2D.Double </item>
+			<item> Ellipse2D.Float </item>
+			<item> EllipticCurve </item>
+			<item> EmptyBorder </item>
+			<item> EmptyStackException </item>
+			<item> EncodedKeySpec </item>
+			<item> Encoder </item>
+			<item> Encoding </item>
+			<item> EncryptedPrivateKeyInfo </item>
+			<item> Entity </item>
+			<item> Entity </item>
+			<item> EntityReference </item>
+			<item> EntityResolver </item>
+			<item> EntityResolver2 </item>
+			<item> Enum </item>
+			<item> EnumConstantNotPresentException </item>
+			<item> EnumControl </item>
+			<item> EnumControl.Type </item>
+			<item> EnumMap </item>
+			<item> EnumSet </item>
+			<item> EnumSyntax </item>
+			<item> Enumeration </item>
+			<item> Environment </item>
+			<item> Error </item>
+			<item> ErrorHandler </item>
+			<item> ErrorListener </item>
+			<item> ErrorManager </item>
+			<item> EtchedBorder </item>
+			<item> Event </item>
+			<item> EventContext </item>
+			<item> EventDirContext </item>
+			<item> EventHandler </item>
+			<item> EventListener </item>
+			<item> EventListenerList </item>
+			<item> EventListenerProxy </item>
+			<item> EventObject </item>
+			<item> EventQueue </item>
+			<item> EventSetDescriptor </item>
+			<item> Exception </item>
+			<item> ExceptionDetailMessage </item>
+			<item> ExceptionInInitializerError </item>
+			<item> ExceptionList </item>
+			<item> ExceptionListener </item>
+			<item> Exchanger </item>
+			<item> ExecutionException </item>
+			<item> Executor </item>
+			<item> ExecutorCompletionService </item>
+			<item> ExecutorService </item>
+			<item> Executors </item>
+			<item> ExemptionMechanism </item>
+			<item> ExemptionMechanismException </item>
+			<item> ExemptionMechanismSpi </item>
+			<item> ExpandVetoException </item>
+			<item> ExportException </item>
+			<item> Expression </item>
+			<item> ExtendedRequest </item>
+			<item> ExtendedResponse </item>
+			<item> Externalizable </item>
+			<item> FREE_MEM </item>
+			<item> FactoryConfigurationError </item>
+			<item> FailedLoginException </item>
+			<item> FeatureDescriptor </item>
+			<item> Fidelity </item>
+			<item> Field </item>
+			<item> FieldNameHelper </item>
+			<item> FieldNameHelper </item>
+			<item> FieldPosition </item>
+			<item> FieldView </item>
+			<item> File </item>
+			<item> FileCacheImageInputStream </item>
+			<item> FileCacheImageOutputStream </item>
+			<item> FileChannel </item>
+			<item> FileChannel.MapMode </item>
+			<item> FileChooserUI </item>
+			<item> FileDescriptor </item>
+			<item> FileDialog </item>
+			<item> FileFilter </item>
+			<item> FileFilter </item>
+			<item> FileHandler </item>
+			<item> FileImageInputStream </item>
+			<item> FileImageOutputStream </item>
+			<item> FileInputStream </item>
+			<item> FileLock </item>
+			<item> FileLockInterruptionException </item>
+			<item> FileNameMap </item>
+			<item> FileNotFoundException </item>
+			<item> FileOutputStream </item>
+			<item> FilePermission </item>
+			<item> FileReader </item>
+			<item> FileSystemView </item>
+			<item> FileView </item>
+			<item> FileWriter </item>
+			<item> FilenameFilter </item>
+			<item> Filter </item>
+			<item> FilterInputStream </item>
+			<item> FilterOutputStream </item>
+			<item> FilterReader </item>
+			<item> FilterWriter </item>
+			<item> FilteredImageSource </item>
+			<item> FilteredRowSet </item>
+			<item> Finishings </item>
+			<item> FixedHeightLayoutCache </item>
+			<item> FixedHolder </item>
+			<item> FlatteningPathIterator </item>
+			<item> FlavorEvent </item>
+			<item> FlavorException </item>
+			<item> FlavorListener </item>
+			<item> FlavorMap </item>
+			<item> FlavorTable </item>
+			<item> Float </item>
+			<item> FloatBuffer </item>
+			<item> FloatControl </item>
+			<item> FloatControl.Type </item>
+			<item> FloatHolder </item>
+			<item> FloatSeqHelper </item>
+			<item> FloatSeqHolder </item>
+			<item> FlowLayout </item>
+			<item> FlowView </item>
+			<item> FlowView.FlowStrategy </item>
+			<item> Flushable </item>
+			<item> FocusAdapter </item>
+			<item> FocusEvent </item>
+			<item> FocusListener </item>
+			<item> FocusManager </item>
+			<item> FocusTraversalPolicy </item>
+			<item> Font </item>
+			<item> FontFormatException </item>
+			<item> FontMetrics </item>
+			<item> FontRenderContext </item>
+			<item> FontUIResource </item>
+			<item> FormSubmitEvent </item>
+			<item> FormSubmitEvent.MethodType </item>
+			<item> FormView </item>
+			<item> Format </item>
+			<item> Format.Field </item>
+			<item> FormatConversionProvider </item>
+			<item> FormatFlagsConversionMismatchException </item>
+			<item> FormatMismatch </item>
+			<item> FormatMismatchHelper </item>
+			<item> Formattable </item>
+			<item> FormattableFlags </item>
+			<item> Formatter </item>
+			<item> Formatter </item>
+			<item> FormatterClosedException </item>
+			<item> ForwardRequest </item>
+			<item> ForwardRequest </item>
+			<item> ForwardRequestHelper </item>
+			<item> ForwardRequestHelper </item>
+			<item> Frame </item>
+			<item> Future </item>
+			<item> FutureTask </item>
+			<item> GSSContext </item>
+			<item> GSSCredential </item>
+			<item> GSSException </item>
+			<item> GSSManager </item>
+			<item> GSSName </item>
+			<item> GZIPInputStream </item>
+			<item> GZIPOutputStream </item>
+			<item> GapContent </item>
+			<item> GarbageCollectorMXBean </item>
+			<item> GatheringByteChannel </item>
+			<item> GaugeMonitor </item>
+			<item> GaugeMonitorMBean </item>
+			<item> GeneralPath </item>
+			<item> GeneralSecurityException </item>
+			<item> GenericArrayType </item>
+			<item> GenericDeclaration </item>
+			<item> GenericSignatureFormatError </item>
+			<item> GlyphJustificationInfo </item>
+			<item> GlyphMetrics </item>
+			<item> GlyphVector </item>
+			<item> GlyphView </item>
+			<item> GlyphView.GlyphPainter </item>
+			<item> GradientPaint </item>
+			<item> GraphicAttribute </item>
+			<item> Graphics </item>
+			<item> Graphics2D </item>
+			<item> GraphicsConfigTemplate </item>
+			<item> GraphicsConfiguration </item>
+			<item> GraphicsDevice </item>
+			<item> GraphicsEnvironment </item>
+			<item> GrayFilter </item>
+			<item> GregorianCalendar </item>
+			<item> GridBagConstraints </item>
+			<item> GridBagLayout </item>
+			<item> GridLayout </item>
+			<item> Group </item>
+			<item> Guard </item>
+			<item> GuardedObject </item>
+			<item> HOLDING </item>
+			<item> HTML </item>
+			<item> HTML.Attribute </item>
+			<item> HTML.Tag </item>
+			<item> HTML.UnknownTag </item>
+			<item> HTMLDocument </item>
+			<item> HTMLDocument.Iterator </item>
+			<item> HTMLEditorKit </item>
+			<item> HTMLEditorKit.HTMLFactory </item>
+			<item> HTMLEditorKit.HTMLTextAction </item>
+			<item> HTMLEditorKit.InsertHTMLTextAction </item>
+			<item> HTMLEditorKit.LinkController </item>
+			<item> HTMLEditorKit.Parser </item>
+			<item> HTMLEditorKit.ParserCallback </item>
+			<item> HTMLFrameHyperlinkEvent </item>
+			<item> HTMLWriter </item>
+			<item> Handler </item>
+			<item> HandlerBase </item>
+			<item> HandshakeCompletedEvent </item>
+			<item> HandshakeCompletedListener </item>
+			<item> HasControls </item>
+			<item> HashAttributeSet </item>
+			<item> HashDocAttributeSet </item>
+			<item> HashMap </item>
+			<item> HashPrintJobAttributeSet </item>
+			<item> HashPrintRequestAttributeSet </item>
+			<item> HashPrintServiceAttributeSet </item>
+			<item> HashSet </item>
+			<item> Hashtable </item>
+			<item> HeadlessException </item>
+			<item> HierarchyBoundsAdapter </item>
+			<item> HierarchyBoundsListener </item>
+			<item> HierarchyEvent </item>
+			<item> HierarchyListener </item>
+			<item> Highlighter </item>
+			<item> Highlighter.Highlight </item>
+			<item> Highlighter.HighlightPainter </item>
+			<item> HostnameVerifier </item>
+			<item> HttpRetryException </item>
+			<item> HttpURLConnection </item>
+			<item> HttpsURLConnection </item>
+			<item> HyperlinkEvent </item>
+			<item> HyperlinkEvent.EventType </item>
+			<item> HyperlinkListener </item>
+			<item> ICC_ColorSpace </item>
+			<item> ICC_Profile </item>
+			<item> ICC_ProfileGray </item>
+			<item> ICC_ProfileRGB </item>
+			<item> IDLEntity </item>
+			<item> IDLType </item>
+			<item> IDLTypeHelper </item>
+			<item> IDLTypeOperations </item>
+			<item> ID_ASSIGNMENT_POLICY_ID </item>
+			<item> ID_UNIQUENESS_POLICY_ID </item>
+			<item> IIOByteBuffer </item>
+			<item> IIOException </item>
+			<item> IIOImage </item>
+			<item> IIOInvalidTreeException </item>
+			<item> IIOMetadata </item>
+			<item> IIOMetadataController </item>
+			<item> IIOMetadataFormat </item>
+			<item> IIOMetadataFormatImpl </item>
+			<item> IIOMetadataNode </item>
+			<item> IIOParam </item>
+			<item> IIOParamController </item>
+			<item> IIOReadProgressListener </item>
+			<item> IIOReadUpdateListener </item>
+			<item> IIOReadWarningListener </item>
+			<item> IIORegistry </item>
+			<item> IIOServiceProvider </item>
+			<item> IIOWriteProgressListener </item>
+			<item> IIOWriteWarningListener </item>
+			<item> IMPLICIT_ACTIVATION_POLICY_ID </item>
+			<item> IMP_LIMIT </item>
+			<item> INACTIVE </item>
+			<item> INITIALIZE </item>
+			<item> INTERNAL </item>
+			<item> INTF_REPOS </item>
+			<item> INVALID_ACTIVITY </item>
+			<item> INVALID_TRANSACTION </item>
+			<item> INV_FLAG </item>
+			<item> INV_IDENT </item>
+			<item> INV_OBJREF </item>
+			<item> INV_POLICY </item>
+			<item> IOException </item>
+			<item> IOR </item>
+			<item> IORHelper </item>
+			<item> IORHolder </item>
+			<item> IORInfo </item>
+			<item> IORInfoOperations </item>
+			<item> IORInterceptor </item>
+			<item> IORInterceptorOperations </item>
+			<item> IORInterceptor_3_0 </item>
+			<item> IORInterceptor_3_0Helper </item>
+			<item> IORInterceptor_3_0Holder </item>
+			<item> IORInterceptor_3_0Operations </item>
+			<item> IRObject </item>
+			<item> IRObjectOperations </item>
+			<item> Icon </item>
+			<item> IconUIResource </item>
+			<item> IconView </item>
+			<item> IdAssignmentPolicy </item>
+			<item> IdAssignmentPolicyOperations </item>
+			<item> IdAssignmentPolicyValue </item>
+			<item> IdUniquenessPolicy </item>
+			<item> IdUniquenessPolicyOperations </item>
+			<item> IdUniquenessPolicyValue </item>
+			<item> IdentifierHelper </item>
+			<item> Identity </item>
+			<item> IdentityHashMap </item>
+			<item> IdentityScope </item>
+			<item> IllegalAccessError </item>
+			<item> IllegalAccessException </item>
+			<item> IllegalArgumentException </item>
+			<item> IllegalBlockSizeException </item>
+			<item> IllegalBlockingModeException </item>
+			<item> IllegalCharsetNameException </item>
+			<item> IllegalClassFormatException </item>
+			<item> IllegalComponentStateException </item>
+			<item> IllegalFormatCodePointException </item>
+			<item> IllegalFormatConversionException </item>
+			<item> IllegalFormatException </item>
+			<item> IllegalFormatFlagsException </item>
+			<item> IllegalFormatPrecisionException </item>
+			<item> IllegalFormatWidthException </item>
+			<item> IllegalMonitorStateException </item>
+			<item> IllegalPathStateException </item>
+			<item> IllegalSelectorException </item>
+			<item> IllegalStateException </item>
+			<item> IllegalThreadStateException </item>
+			<item> Image </item>
+			<item> ImageCapabilities </item>
+			<item> ImageConsumer </item>
+			<item> ImageFilter </item>
+			<item> ImageGraphicAttribute </item>
+			<item> ImageIO </item>
+			<item> ImageIcon </item>
+			<item> ImageInputStream </item>
+			<item> ImageInputStreamImpl </item>
+			<item> ImageInputStreamSpi </item>
+			<item> ImageObserver </item>
+			<item> ImageOutputStream </item>
+			<item> ImageOutputStreamImpl </item>
+			<item> ImageOutputStreamSpi </item>
+			<item> ImageProducer </item>
+			<item> ImageReadParam </item>
+			<item> ImageReader </item>
+			<item> ImageReaderSpi </item>
+			<item> ImageReaderWriterSpi </item>
+			<item> ImageTranscoder </item>
+			<item> ImageTranscoderSpi </item>
+			<item> ImageTypeSpecifier </item>
+			<item> ImageView </item>
+			<item> ImageWriteParam </item>
+			<item> ImageWriter </item>
+			<item> ImageWriterSpi </item>
+			<item> ImagingOpException </item>
+			<item> ImplicitActivationPolicy </item>
+			<item> ImplicitActivationPolicyOperations </item>
+			<item> ImplicitActivationPolicyValue </item>
+			<item> IncompatibleClassChangeError </item>
+			<item> IncompleteAnnotationException </item>
+			<item> InconsistentTypeCode </item>
+			<item> InconsistentTypeCode </item>
+			<item> InconsistentTypeCodeHelper </item>
+			<item> IndexColorModel </item>
+			<item> IndexOutOfBoundsException </item>
+			<item> IndexedPropertyChangeEvent </item>
+			<item> IndexedPropertyDescriptor </item>
+			<item> IndirectionException </item>
+			<item> Inet4Address </item>
+			<item> Inet6Address </item>
+			<item> InetAddress </item>
+			<item> InetSocketAddress </item>
+			<item> Inflater </item>
+			<item> InflaterInputStream </item>
+			<item> InheritableThreadLocal </item>
+			<item> Inherited </item>
+			<item> InitialContext </item>
+			<item> InitialContextFactory </item>
+			<item> InitialContextFactoryBuilder </item>
+			<item> InitialDirContext </item>
+			<item> InitialLdapContext </item>
+			<item> InlineView </item>
+			<item> InputContext </item>
+			<item> InputEvent </item>
+			<item> InputMap </item>
+			<item> InputMapUIResource </item>
+			<item> InputMethod </item>
+			<item> InputMethodContext </item>
+			<item> InputMethodDescriptor </item>
+			<item> InputMethodEvent </item>
+			<item> InputMethodHighlight </item>
+			<item> InputMethodListener </item>
+			<item> InputMethodRequests </item>
+			<item> InputMismatchException </item>
+			<item> InputSource </item>
+			<item> InputStream </item>
+			<item> InputStream </item>
+			<item> InputStream </item>
+			<item> InputStreamReader </item>
+			<item> InputSubset </item>
+			<item> InputVerifier </item>
+			<item> Insets </item>
+			<item> InsetsUIResource </item>
+			<item> InstanceAlreadyExistsException </item>
+			<item> InstanceNotFoundException </item>
+			<item> InstantiationError </item>
+			<item> InstantiationException </item>
+			<item> Instrument </item>
+			<item> Instrumentation </item>
+			<item> InsufficientResourcesException </item>
+			<item> IntBuffer </item>
+			<item> IntHolder </item>
+			<item> Integer </item>
+			<item> IntegerSyntax </item>
+			<item> Interceptor </item>
+			<item> InterceptorOperations </item>
+			<item> InternalError </item>
+			<item> InternalFrameAdapter </item>
+			<item> InternalFrameEvent </item>
+			<item> InternalFrameFocusTraversalPolicy </item>
+			<item> InternalFrameListener </item>
+			<item> InternalFrameUI </item>
+			<item> InternationalFormatter </item>
+			<item> InterruptedException </item>
+			<item> InterruptedIOException </item>
+			<item> InterruptedNamingException </item>
+			<item> InterruptibleChannel </item>
+			<item> IntrospectionException </item>
+			<item> IntrospectionException </item>
+			<item> Introspector </item>
+			<item> Invalid </item>
+			<item> InvalidActivityException </item>
+			<item> InvalidAddress </item>
+			<item> InvalidAddressHelper </item>
+			<item> InvalidAddressHolder </item>
+			<item> InvalidAlgorithmParameterException </item>
+			<item> InvalidApplicationException </item>
+			<item> InvalidAttributeIdentifierException </item>
+			<item> InvalidAttributeValueException </item>
+			<item> InvalidAttributeValueException </item>
+			<item> InvalidAttributesException </item>
+			<item> InvalidClassException </item>
+			<item> InvalidDnDOperationException </item>
+			<item> InvalidKeyException </item>
+			<item> InvalidKeyException </item>
+			<item> InvalidKeySpecException </item>
+			<item> InvalidMarkException </item>
+			<item> InvalidMidiDataException </item>
+			<item> InvalidName </item>
+			<item> InvalidName </item>
+			<item> InvalidName </item>
+			<item> InvalidNameException </item>
+			<item> InvalidNameHelper </item>
+			<item> InvalidNameHelper </item>
+			<item> InvalidNameHolder </item>
+			<item> InvalidObjectException </item>
+			<item> InvalidOpenTypeException </item>
+			<item> InvalidParameterException </item>
+			<item> InvalidParameterSpecException </item>
+			<item> InvalidPolicy </item>
+			<item> InvalidPolicyHelper </item>
+			<item> InvalidPreferencesFormatException </item>
+			<item> InvalidPropertiesFormatException </item>
+			<item> InvalidRelationIdException </item>
+			<item> InvalidRelationServiceException </item>
+			<item> InvalidRelationTypeException </item>
+			<item> InvalidRoleInfoException </item>
+			<item> InvalidRoleValueException </item>
+			<item> InvalidSearchControlsException </item>
+			<item> InvalidSearchFilterException </item>
+			<item> InvalidSeq </item>
+			<item> InvalidSlot </item>
+			<item> InvalidSlotHelper </item>
+			<item> InvalidTargetObjectTypeException </item>
+			<item> InvalidTransactionException </item>
+			<item> InvalidTypeForEncoding </item>
+			<item> InvalidTypeForEncodingHelper </item>
+			<item> InvalidValue </item>
+			<item> InvalidValue </item>
+			<item> InvalidValueHelper </item>
+			<item> InvocationEvent </item>
+			<item> InvocationHandler </item>
+			<item> InvocationTargetException </item>
+			<item> InvokeHandler </item>
+			<item> IstringHelper </item>
+			<item> ItemEvent </item>
+			<item> ItemListener </item>
+			<item> ItemSelectable </item>
+			<item> Iterable </item>
+			<item> Iterator </item>
+			<item> IvParameterSpec </item>
+			<item> JApplet </item>
+			<item> JButton </item>
+			<item> JCheckBox </item>
+			<item> JCheckBoxMenuItem </item>
+			<item> JColorChooser </item>
+			<item> JComboBox </item>
+			<item> JComboBox.KeySelectionManager </item>
+			<item> JComponent </item>
+			<item> JDesktopPane </item>
+			<item> JDialog </item>
+			<item> JEditorPane </item>
+			<item> JFileChooser </item>
+			<item> JFormattedTextField </item>
+			<item> JFormattedTextField.AbstractFormatter </item>
+			<item> JFormattedTextField.AbstractFormatterFactory </item>
+			<item> JFrame </item>
+			<item> JInternalFrame </item>
+			<item> JInternalFrame.JDesktopIcon </item>
+			<item> JLabel </item>
+			<item> JLayeredPane </item>
+			<item> JList </item>
+			<item> JMException </item>
+			<item> JMRuntimeException </item>
+			<item> JMXAuthenticator </item>
+			<item> JMXConnectionNotification </item>
+			<item> JMXConnector </item>
+			<item> JMXConnectorFactory </item>
+			<item> JMXConnectorProvider </item>
+			<item> JMXConnectorServer </item>
+			<item> JMXConnectorServerFactory </item>
+			<item> JMXConnectorServerMBean </item>
+			<item> JMXConnectorServerProvider </item>
+			<item> JMXPrincipal </item>
+			<item> JMXProviderException </item>
+			<item> JMXServerErrorException </item>
+			<item> JMXServiceURL </item>
+			<item> JMenu </item>
+			<item> JMenuBar </item>
+			<item> JMenuItem </item>
+			<item> JOptionPane </item>
+			<item> JPEGHuffmanTable </item>
+			<item> JPEGImageReadParam </item>
+			<item> JPEGImageWriteParam </item>
+			<item> JPEGQTable </item>
+			<item> JPanel </item>
+			<item> JPasswordField </item>
+			<item> JPopupMenu </item>
+			<item> JPopupMenu.Separator </item>
+			<item> JProgressBar </item>
+			<item> JRadioButton </item>
+			<item> JRadioButtonMenuItem </item>
+			<item> JRootPane </item>
+			<item> JScrollBar </item>
+			<item> JScrollPane </item>
+			<item> JSeparator </item>
+			<item> JSlider </item>
+			<item> JSpinner </item>
+			<item> JSpinner.DateEditor </item>
+			<item> JSpinner.DefaultEditor </item>
+			<item> JSpinner.ListEditor </item>
+			<item> JSpinner.NumberEditor </item>
+			<item> JSplitPane </item>
+			<item> JTabbedPane </item>
+			<item> JTable </item>
+			<item> JTable.PrintMode </item>
+			<item> JTableHeader </item>
+			<item> JTextArea </item>
+			<item> JTextComponent </item>
+			<item> JTextComponent.KeyBinding </item>
+			<item> JTextField </item>
+			<item> JTextPane </item>
+			<item> JToggleButton </item>
+			<item> JToggleButton.ToggleButtonModel </item>
+			<item> JToolBar </item>
+			<item> JToolBar.Separator </item>
+			<item> JToolTip </item>
+			<item> JTree </item>
+			<item> JTree.DynamicUtilTreeNode </item>
+			<item> JTree.EmptySelectionModel </item>
+			<item> JViewport </item>
+			<item> JWindow </item>
+			<item> JarEntry </item>
+			<item> JarException </item>
+			<item> JarFile </item>
+			<item> JarInputStream </item>
+			<item> JarOutputStream </item>
+			<item> JarURLConnection </item>
+			<item> JdbcRowSet </item>
+			<item> JobAttributes </item>
+			<item> JobAttributes.DefaultSelectionType </item>
+			<item> JobAttributes.DestinationType </item>
+			<item> JobAttributes.DialogType </item>
+			<item> JobAttributes.MultipleDocumentHandlingType </item>
+			<item> JobAttributes.SidesType </item>
+			<item> JobHoldUntil </item>
+			<item> JobImpressions </item>
+			<item> JobImpressionsCompleted </item>
+			<item> JobImpressionsSupported </item>
+			<item> JobKOctets </item>
+			<item> JobKOctetsProcessed </item>
+			<item> JobKOctetsSupported </item>
+			<item> JobMediaSheets </item>
+			<item> JobMediaSheetsCompleted </item>
+			<item> JobMediaSheetsSupported </item>
+			<item> JobMessageFromOperator </item>
+			<item> JobName </item>
+			<item> JobOriginatingUserName </item>
+			<item> JobPriority </item>
+			<item> JobPrioritySupported </item>
+			<item> JobSheets </item>
+			<item> JobState </item>
+			<item> JobStateReason </item>
+			<item> JobStateReasons </item>
+			<item> JoinRowSet </item>
+			<item> Joinable </item>
+			<item> KerberosKey </item>
+			<item> KerberosPrincipal </item>
+			<item> KerberosTicket </item>
+			<item> Kernel </item>
+			<item> Key </item>
+			<item> KeyAdapter </item>
+			<item> KeyAgreement </item>
+			<item> KeyAgreementSpi </item>
+			<item> KeyAlreadyExistsException </item>
+			<item> KeyEvent </item>
+			<item> KeyEventDispatcher </item>
+			<item> KeyEventPostProcessor </item>
+			<item> KeyException </item>
+			<item> KeyFactory </item>
+			<item> KeyFactorySpi </item>
+			<item> KeyGenerator </item>
+			<item> KeyGeneratorSpi </item>
+			<item> KeyListener </item>
+			<item> KeyManagementException </item>
+			<item> KeyManager </item>
+			<item> KeyManagerFactory </item>
+			<item> KeyManagerFactorySpi </item>
+			<item> KeyPair </item>
+			<item> KeyPairGenerator </item>
+			<item> KeyPairGeneratorSpi </item>
+			<item> KeyRep </item>
+			<item> KeyRep.Type </item>
+			<item> KeySpec </item>
+			<item> KeyStore </item>
+			<item> KeyStore.Builder </item>
+			<item> KeyStore.CallbackHandlerProtection </item>
+			<item> KeyStore.Entry </item>
+			<item> KeyStore.LoadStoreParameter </item>
+			<item> KeyStore.PasswordProtection </item>
+			<item> KeyStore.PrivateKeyEntry </item>
+			<item> KeyStore.ProtectionParameter </item>
+			<item> KeyStore.SecretKeyEntry </item>
+			<item> KeyStore.TrustedCertificateEntry </item>
+			<item> KeyStoreBuilderParameters </item>
+			<item> KeyStoreException </item>
+			<item> KeyStoreSpi </item>
+			<item> KeyStroke </item>
+			<item> KeyboardFocusManager </item>
+			<item> Keymap </item>
+			<item> LDAPCertStoreParameters </item>
+			<item> LIFESPAN_POLICY_ID </item>
+			<item> LOCATION_FORWARD </item>
+			<item> LSException </item>
+			<item> LSInput </item>
+			<item> LSLoadEvent </item>
+			<item> LSOutput </item>
+			<item> LSParser </item>
+			<item> LSParserFilter </item>
+			<item> LSProgressEvent </item>
+			<item> LSResourceResolver </item>
+			<item> LSSerializer </item>
+			<item> LSSerializerFilter </item>
+			<item> Label </item>
+			<item> LabelUI </item>
+			<item> LabelView </item>
+			<item> LanguageCallback </item>
+			<item> LastOwnerException </item>
+			<item> LayeredHighlighter </item>
+			<item> LayeredHighlighter.LayerPainter </item>
+			<item> LayoutFocusTraversalPolicy </item>
+			<item> LayoutManager </item>
+			<item> LayoutManager2 </item>
+			<item> LayoutQueue </item>
+			<item> LdapContext </item>
+			<item> LdapName </item>
+			<item> LdapReferralException </item>
+			<item> Lease </item>
+			<item> Level </item>
+			<item> LexicalHandler </item>
+			<item> LifespanPolicy </item>
+			<item> LifespanPolicyOperations </item>
+			<item> LifespanPolicyValue </item>
+			<item> LimitExceededException </item>
+			<item> Line </item>
+			<item> Line.Info </item>
+			<item> Line2D </item>
+			<item> Line2D.Double </item>
+			<item> Line2D.Float </item>
+			<item> LineBorder </item>
+			<item> LineBreakMeasurer </item>
+			<item> LineEvent </item>
+			<item> LineEvent.Type </item>
+			<item> LineListener </item>
+			<item> LineMetrics </item>
+			<item> LineNumberInputStream </item>
+			<item> LineNumberReader </item>
+			<item> LineUnavailableException </item>
+			<item> LinkException </item>
+			<item> LinkLoopException </item>
+			<item> LinkRef </item>
+			<item> LinkageError </item>
+			<item> LinkedBlockingQueue </item>
+			<item> LinkedHashMap </item>
+			<item> LinkedHashSet </item>
+			<item> LinkedList </item>
+			<item> List </item>
+			<item> List </item>
+			<item> ListCellRenderer </item>
+			<item> ListDataEvent </item>
+			<item> ListDataListener </item>
+			<item> ListIterator </item>
+			<item> ListModel </item>
+			<item> ListResourceBundle </item>
+			<item> ListSelectionEvent </item>
+			<item> ListSelectionListener </item>
+			<item> ListSelectionModel </item>
+			<item> ListUI </item>
+			<item> ListView </item>
+			<item> ListenerNotFoundException </item>
+			<item> LoaderHandler </item>
+			<item> LocalObject </item>
+			<item> Locale </item>
+			<item> LocateRegistry </item>
+			<item> Locator </item>
+			<item> Locator2 </item>
+			<item> Locator2Impl </item>
+			<item> LocatorImpl </item>
+			<item> Lock </item>
+			<item> LockSupport </item>
+			<item> LogManager </item>
+			<item> LogRecord </item>
+			<item> LogStream </item>
+			<item> Logger </item>
+			<item> LoggingMXBean </item>
+			<item> LoggingPermission </item>
+			<item> LoginContext </item>
+			<item> LoginException </item>
+			<item> LoginModule </item>
+			<item> Long </item>
+			<item> LongBuffer </item>
+			<item> LongHolder </item>
+			<item> LongLongSeqHelper </item>
+			<item> LongLongSeqHolder </item>
+			<item> LongSeqHelper </item>
+			<item> LongSeqHolder </item>
+			<item> LookAndFeel </item>
+			<item> LookupOp </item>
+			<item> LookupTable </item>
+			<item> MARSHAL </item>
+			<item> MBeanAttributeInfo </item>
+			<item> MBeanConstructorInfo </item>
+			<item> MBeanException </item>
+			<item> MBeanFeatureInfo </item>
+			<item> MBeanInfo </item>
+			<item> MBeanNotificationInfo </item>
+			<item> MBeanOperationInfo </item>
+			<item> MBeanParameterInfo </item>
+			<item> MBeanPermission </item>
+			<item> MBeanRegistration </item>
+			<item> MBeanRegistrationException </item>
+			<item> MBeanServer </item>
+			<item> MBeanServerBuilder </item>
+			<item> MBeanServerConnection </item>
+			<item> MBeanServerDelegate </item>
+			<item> MBeanServerDelegateMBean </item>
+			<item> MBeanServerFactory </item>
+			<item> MBeanServerForwarder </item>
+			<item> MBeanServerInvocationHandler </item>
+			<item> MBeanServerNotification </item>
+			<item> MBeanServerNotificationFilter </item>
+			<item> MBeanServerPermission </item>
+			<item> MBeanTrustPermission </item>
+			<item> MGF1ParameterSpec </item>
+			<item> MLet </item>
+			<item> MLetMBean </item>
+			<item> Mac </item>
+			<item> MacSpi </item>
+			<item> MalformedInputException </item>
+			<item> MalformedLinkException </item>
+			<item> MalformedObjectNameException </item>
+			<item> MalformedParameterizedTypeException </item>
+			<item> MalformedURLException </item>
+			<item> ManageReferralControl </item>
+			<item> ManagementFactory </item>
+			<item> ManagementPermission </item>
+			<item> ManagerFactoryParameters </item>
+			<item> Manifest </item>
+			<item> Map </item>
+			<item> Map.Entry </item>
+			<item> MappedByteBuffer </item>
+			<item> MarshalException </item>
+			<item> MarshalledObject </item>
+			<item> MaskFormatter </item>
+			<item> MatchResult </item>
+			<item> Matcher </item>
+			<item> Math </item>
+			<item> MathContext </item>
+			<item> MatteBorder </item>
+			<item> Media </item>
+			<item> MediaName </item>
+			<item> MediaPrintableArea </item>
+			<item> MediaSize </item>
+			<item> MediaSize.Engineering </item>
+			<item> MediaSize.ISO </item>
+			<item> MediaSize.JIS </item>
+			<item> MediaSize.NA </item>
+			<item> MediaSize.Other </item>
+			<item> MediaSizeName </item>
+			<item> MediaTracker </item>
+			<item> MediaTray </item>
+			<item> Member </item>
+			<item> MemoryCacheImageInputStream </item>
+			<item> MemoryCacheImageOutputStream </item>
+			<item> MemoryHandler </item>
+			<item> MemoryImageSource </item>
+			<item> MemoryMXBean </item>
+			<item> MemoryManagerMXBean </item>
+			<item> MemoryNotificationInfo </item>
+			<item> MemoryPoolMXBean </item>
+			<item> MemoryType </item>
+			<item> MemoryUsage </item>
+			<item> Menu </item>
+			<item> MenuBar </item>
+			<item> MenuBarUI </item>
+			<item> MenuComponent </item>
+			<item> MenuContainer </item>
+			<item> MenuDragMouseEvent </item>
+			<item> MenuDragMouseListener </item>
+			<item> MenuElement </item>
+			<item> MenuEvent </item>
+			<item> MenuItem </item>
+			<item> MenuItemUI </item>
+			<item> MenuKeyEvent </item>
+			<item> MenuKeyListener </item>
+			<item> MenuListener </item>
+			<item> MenuSelectionManager </item>
+			<item> MenuShortcut </item>
+			<item> MessageDigest </item>
+			<item> MessageDigestSpi </item>
+			<item> MessageFormat </item>
+			<item> MessageFormat.Field </item>
+			<item> MessageProp </item>
+			<item> MetaEventListener </item>
+			<item> MetaMessage </item>
+			<item> MetalBorders </item>
+			<item> MetalBorders.ButtonBorder </item>
+			<item> MetalBorders.Flush3DBorder </item>
+			<item> MetalBorders.InternalFrameBorder </item>
+			<item> MetalBorders.MenuBarBorder </item>
+			<item> MetalBorders.MenuItemBorder </item>
+			<item> MetalBorders.OptionDialogBorder </item>
+			<item> MetalBorders.PaletteBorder </item>
+			<item> MetalBorders.PopupMenuBorder </item>
+			<item> MetalBorders.RolloverButtonBorder </item>
+			<item> MetalBorders.ScrollPaneBorder </item>
+			<item> MetalBorders.TableHeaderBorder </item>
+			<item> MetalBorders.TextFieldBorder </item>
+			<item> MetalBorders.ToggleButtonBorder </item>
+			<item> MetalBorders.ToolBarBorder </item>
+			<item> MetalButtonUI </item>
+			<item> MetalCheckBoxIcon </item>
+			<item> MetalCheckBoxUI </item>
+			<item> MetalComboBoxButton </item>
+			<item> MetalComboBoxEditor </item>
+			<item> MetalComboBoxEditor.UIResource </item>
+			<item> MetalComboBoxIcon </item>
+			<item> MetalComboBoxUI </item>
+			<item> MetalDesktopIconUI </item>
+			<item> MetalFileChooserUI </item>
+			<item> MetalIconFactory </item>
+			<item> MetalIconFactory.FileIcon16 </item>
+			<item> MetalIconFactory.FolderIcon16 </item>
+			<item> MetalIconFactory.PaletteCloseIcon </item>
+			<item> MetalIconFactory.TreeControlIcon </item>
+			<item> MetalIconFactory.TreeFolderIcon </item>
+			<item> MetalIconFactory.TreeLeafIcon </item>
+			<item> MetalInternalFrameTitlePane </item>
+			<item> MetalInternalFrameUI </item>
+			<item> MetalLabelUI </item>
+			<item> MetalLookAndFeel </item>
+			<item> MetalMenuBarUI </item>
+			<item> MetalPopupMenuSeparatorUI </item>
+			<item> MetalProgressBarUI </item>
+			<item> MetalRadioButtonUI </item>
+			<item> MetalRootPaneUI </item>
+			<item> MetalScrollBarUI </item>
+			<item> MetalScrollButton </item>
+			<item> MetalScrollPaneUI </item>
+			<item> MetalSeparatorUI </item>
+			<item> MetalSliderUI </item>
+			<item> MetalSplitPaneUI </item>
+			<item> MetalTabbedPaneUI </item>
+			<item> MetalTextFieldUI </item>
+			<item> MetalTheme </item>
+			<item> MetalToggleButtonUI </item>
+			<item> MetalToolBarUI </item>
+			<item> MetalToolTipUI </item>
+			<item> MetalTreeUI </item>
+			<item> Method </item>
+			<item> MethodDescriptor </item>
+			<item> MidiChannel </item>
+			<item> MidiDevice </item>
+			<item> MidiDevice.Info </item>
+			<item> MidiDeviceProvider </item>
+			<item> MidiEvent </item>
+			<item> MidiFileFormat </item>
+			<item> MidiFileReader </item>
+			<item> MidiFileWriter </item>
+			<item> MidiMessage </item>
+			<item> MidiSystem </item>
+			<item> MidiUnavailableException </item>
+			<item> MimeTypeParseException </item>
+			<item> MinimalHTMLWriter </item>
+			<item> MissingFormatArgumentException </item>
+			<item> MissingFormatWidthException </item>
+			<item> MissingResourceException </item>
+			<item> Mixer </item>
+			<item> Mixer.Info </item>
+			<item> MixerProvider </item>
+			<item> ModelMBean </item>
+			<item> ModelMBeanAttributeInfo </item>
+			<item> ModelMBeanConstructorInfo </item>
+			<item> ModelMBeanInfo </item>
+			<item> ModelMBeanInfoSupport </item>
+			<item> ModelMBeanNotificationBroadcaster </item>
+			<item> ModelMBeanNotificationInfo </item>
+			<item> ModelMBeanOperationInfo </item>
+			<item> ModificationItem </item>
+			<item> Modifier </item>
+			<item> Monitor </item>
+			<item> MonitorMBean </item>
+			<item> MonitorNotification </item>
+			<item> MonitorSettingException </item>
+			<item> MouseAdapter </item>
+			<item> MouseDragGestureRecognizer </item>
+			<item> MouseEvent </item>
+			<item> MouseInfo </item>
+			<item> MouseInputAdapter </item>
+			<item> MouseInputListener </item>
+			<item> MouseListener </item>
+			<item> MouseMotionAdapter </item>
+			<item> MouseMotionListener </item>
+			<item> MouseWheelEvent </item>
+			<item> MouseWheelListener </item>
+			<item> MultiButtonUI </item>
+			<item> MultiColorChooserUI </item>
+			<item> MultiComboBoxUI </item>
+			<item> MultiDesktopIconUI </item>
+			<item> MultiDesktopPaneUI </item>
+			<item> MultiDoc </item>
+			<item> MultiDocPrintJob </item>
+			<item> MultiDocPrintService </item>
+			<item> MultiFileChooserUI </item>
+			<item> MultiInternalFrameUI </item>
+			<item> MultiLabelUI </item>
+			<item> MultiListUI </item>
+			<item> MultiLookAndFeel </item>
+			<item> MultiMenuBarUI </item>
+			<item> MultiMenuItemUI </item>
+			<item> MultiOptionPaneUI </item>
+			<item> MultiPanelUI </item>
+			<item> MultiPixelPackedSampleModel </item>
+			<item> MultiPopupMenuUI </item>
+			<item> MultiProgressBarUI </item>
+			<item> MultiRootPaneUI </item>
+			<item> MultiScrollBarUI </item>
+			<item> MultiScrollPaneUI </item>
+			<item> MultiSeparatorUI </item>
+			<item> MultiSliderUI </item>
+			<item> MultiSpinnerUI </item>
+			<item> MultiSplitPaneUI </item>
+			<item> MultiTabbedPaneUI </item>
+			<item> MultiTableHeaderUI </item>
+			<item> MultiTableUI </item>
+			<item> MultiTextUI </item>
+			<item> MultiToolBarUI </item>
+			<item> MultiToolTipUI </item>
+			<item> MultiTreeUI </item>
+			<item> MultiViewportUI </item>
+			<item> MulticastSocket </item>
+			<item> MultipleComponentProfileHelper </item>
+			<item> MultipleComponentProfileHolder </item>
+			<item> MultipleDocumentHandling </item>
+			<item> MultipleMaster </item>
+			<item> MutableAttributeSet </item>
+			<item> MutableComboBoxModel </item>
+			<item> MutableTreeNode </item>
+			<item> NON_EXISTENT </item>
+			<item> NO_IMPLEMENT </item>
+			<item> NO_MEMORY </item>
+			<item> NO_PERMISSION </item>
+			<item> NO_RESOURCES </item>
+			<item> NO_RESPONSE </item>
+			<item> NVList </item>
+			<item> Name </item>
+			<item> NameAlreadyBoundException </item>
+			<item> NameCallback </item>
+			<item> NameClassPair </item>
+			<item> NameComponent </item>
+			<item> NameComponentHelper </item>
+			<item> NameComponentHolder </item>
+			<item> NameDynAnyPair </item>
+			<item> NameDynAnyPairHelper </item>
+			<item> NameDynAnyPairSeqHelper </item>
+			<item> NameHelper </item>
+			<item> NameHolder </item>
+			<item> NameList </item>
+			<item> NameNotFoundException </item>
+			<item> NameParser </item>
+			<item> NameValuePair </item>
+			<item> NameValuePair </item>
+			<item> NameValuePairHelper </item>
+			<item> NameValuePairHelper </item>
+			<item> NameValuePairSeqHelper </item>
+			<item> NamedNodeMap </item>
+			<item> NamedValue </item>
+			<item> NamespaceChangeListener </item>
+			<item> NamespaceContext </item>
+			<item> NamespaceSupport </item>
+			<item> Naming </item>
+			<item> NamingContext </item>
+			<item> NamingContextExt </item>
+			<item> NamingContextExtHelper </item>
+			<item> NamingContextExtHolder </item>
+			<item> NamingContextExtOperations </item>
+			<item> NamingContextExtPOA </item>
+			<item> NamingContextHelper </item>
+			<item> NamingContextHolder </item>
+			<item> NamingContextOperations </item>
+			<item> NamingContextPOA </item>
+			<item> NamingEnumeration </item>
+			<item> NamingEvent </item>
+			<item> NamingException </item>
+			<item> NamingExceptionEvent </item>
+			<item> NamingListener </item>
+			<item> NamingManager </item>
+			<item> NamingSecurityException </item>
+			<item> NavigationFilter </item>
+			<item> NavigationFilter.FilterBypass </item>
+			<item> NegativeArraySizeException </item>
+			<item> NetPermission </item>
+			<item> NetworkInterface </item>
+			<item> NoClassDefFoundError </item>
+			<item> NoConnectionPendingException </item>
+			<item> NoContext </item>
+			<item> NoContextHelper </item>
+			<item> NoInitialContextException </item>
+			<item> NoPermissionException </item>
+			<item> NoRouteToHostException </item>
+			<item> NoServant </item>
+			<item> NoServantHelper </item>
+			<item> NoSuchAlgorithmException </item>
+			<item> NoSuchAttributeException </item>
+			<item> NoSuchElementException </item>
+			<item> NoSuchFieldError </item>
+			<item> NoSuchFieldException </item>
+			<item> NoSuchMethodError </item>
+			<item> NoSuchMethodException </item>
+			<item> NoSuchObjectException </item>
+			<item> NoSuchPaddingException </item>
+			<item> NoSuchProviderException </item>
+			<item> Node </item>
+			<item> NodeChangeEvent </item>
+			<item> NodeChangeListener </item>
+			<item> NodeList </item>
+			<item> NonReadableChannelException </item>
+			<item> NonWritableChannelException </item>
+			<item> NoninvertibleTransformException </item>
+			<item> NotActiveException </item>
+			<item> NotBoundException </item>
+			<item> NotCompliantMBeanException </item>
+			<item> NotContextException </item>
+			<item> NotEmpty </item>
+			<item> NotEmptyHelper </item>
+			<item> NotEmptyHolder </item>
+			<item> NotFound </item>
+			<item> NotFoundHelper </item>
+			<item> NotFoundHolder </item>
+			<item> NotFoundReason </item>
+			<item> NotFoundReasonHelper </item>
+			<item> NotFoundReasonHolder </item>
+			<item> NotOwnerException </item>
+			<item> NotSerializableException </item>
+			<item> NotYetBoundException </item>
+			<item> NotYetConnectedException </item>
+			<item> Notation </item>
+			<item> Notification </item>
+			<item> NotificationBroadcaster </item>
+			<item> NotificationBroadcasterSupport </item>
+			<item> NotificationEmitter </item>
+			<item> NotificationFilter </item>
+			<item> NotificationFilterSupport </item>
+			<item> NotificationListener </item>
+			<item> NotificationResult </item>
+			<item> NullCipher </item>
+			<item> NullPointerException </item>
+			<item> Number </item>
+			<item> NumberFormat </item>
+			<item> NumberFormat.Field </item>
+			<item> NumberFormatException </item>
+			<item> NumberFormatter </item>
+			<item> NumberOfDocuments </item>
+			<item> NumberOfInterveningJobs </item>
+			<item> NumberUp </item>
+			<item> NumberUpSupported </item>
+			<item> NumericShaper </item>
+			<item> OAEPParameterSpec </item>
+			<item> OBJECT_NOT_EXIST </item>
+			<item> OBJ_ADAPTER </item>
+			<item> OMGVMCID </item>
+			<item> ORB </item>
+			<item> ORB </item>
+			<item> ORBIdHelper </item>
+			<item> ORBInitInfo </item>
+			<item> ORBInitInfoOperations </item>
+			<item> ORBInitializer </item>
+			<item> ORBInitializerOperations </item>
+			<item> ObjID </item>
+			<item> Object </item>
+			<item> Object </item>
+			<item> ObjectAlreadyActive </item>
+			<item> ObjectAlreadyActiveHelper </item>
+			<item> ObjectChangeListener </item>
+			<item> ObjectFactory </item>
+			<item> ObjectFactoryBuilder </item>
+			<item> ObjectHelper </item>
+			<item> ObjectHolder </item>
+			<item> ObjectIdHelper </item>
+			<item> ObjectIdHelper </item>
+			<item> ObjectImpl </item>
+			<item> ObjectImpl </item>
+			<item> ObjectInput </item>
+			<item> ObjectInputStream </item>
+			<item> ObjectInputStream.GetField </item>
+			<item> ObjectInputValidation </item>
+			<item> ObjectInstance </item>
+			<item> ObjectName </item>
+			<item> ObjectNotActive </item>
+			<item> ObjectNotActiveHelper </item>
+			<item> ObjectOutput </item>
+			<item> ObjectOutputStream </item>
+			<item> ObjectOutputStream.PutField </item>
+			<item> ObjectReferenceFactory </item>
+			<item> ObjectReferenceFactoryHelper </item>
+			<item> ObjectReferenceFactoryHolder </item>
+			<item> ObjectReferenceTemplate </item>
+			<item> ObjectReferenceTemplateHelper </item>
+			<item> ObjectReferenceTemplateHolder </item>
+			<item> ObjectReferenceTemplateSeqHelper </item>
+			<item> ObjectReferenceTemplateSeqHolder </item>
+			<item> ObjectStreamClass </item>
+			<item> ObjectStreamConstants </item>
+			<item> ObjectStreamException </item>
+			<item> ObjectStreamField </item>
+			<item> ObjectView </item>
+			<item> Observable </item>
+			<item> Observer </item>
+			<item> OceanTheme </item>
+			<item> OctetSeqHelper </item>
+			<item> OctetSeqHolder </item>
+			<item> Oid </item>
+			<item> OpenDataException </item>
+			<item> OpenMBeanAttributeInfo </item>
+			<item> OpenMBeanAttributeInfoSupport </item>
+			<item> OpenMBeanConstructorInfo </item>
+			<item> OpenMBeanConstructorInfoSupport </item>
+			<item> OpenMBeanInfo </item>
+			<item> OpenMBeanInfoSupport </item>
+			<item> OpenMBeanOperationInfo </item>
+			<item> OpenMBeanOperationInfoSupport </item>
+			<item> OpenMBeanParameterInfo </item>
+			<item> OpenMBeanParameterInfoSupport </item>
+			<item> OpenType </item>
+			<item> OpenType </item>
+			<item> OperatingSystemMXBean </item>
+			<item> Operation </item>
+			<item> OperationNotSupportedException </item>
+			<item> OperationsException </item>
+			<item> Option </item>
+			<item> OptionPaneUI </item>
+			<item> OptionalDataException </item>
+			<item> OrientationRequested </item>
+			<item> OutOfMemoryError </item>
+			<item> OutputDeviceAssigned </item>
+			<item> OutputKeys </item>
+			<item> OutputStream </item>
+			<item> OutputStream </item>
+			<item> OutputStream </item>
+			<item> OutputStreamWriter </item>
+			<item> OverlappingFileLockException </item>
+			<item> OverlayLayout </item>
+			<item> Override </item>
+			<item> Owner </item>
+			<item> PBEKey </item>
+			<item> PBEKeySpec </item>
+			<item> PBEParameterSpec </item>
+			<item> PDLOverrideSupported </item>
+			<item> PERSIST_STORE </item>
+			<item> PKCS8EncodedKeySpec </item>
+			<item> PKIXBuilderParameters </item>
+			<item> PKIXCertPathBuilderResult </item>
+			<item> PKIXCertPathChecker </item>
+			<item> PKIXCertPathValidatorResult </item>
+			<item> PKIXParameters </item>
+			<item> POA </item>
+			<item> POAHelper </item>
+			<item> POAManager </item>
+			<item> POAManagerOperations </item>
+			<item> POAOperations </item>
+			<item> PRIVATE_MEMBER </item>
+			<item> PSSParameterSpec </item>
+			<item> PSource </item>
+			<item> PSource.PSpecified </item>
+			<item> PUBLIC_MEMBER </item>
+			<item> Pack200 </item>
+			<item> Pack200.Packer </item>
+			<item> Pack200.Unpacker </item>
+			<item> Package </item>
+			<item> PackedColorModel </item>
+			<item> PageAttributes </item>
+			<item> PageAttributes.ColorType </item>
+			<item> PageAttributes.MediaType </item>
+			<item> PageAttributes.OrientationRequestedType </item>
+			<item> PageAttributes.OriginType </item>
+			<item> PageAttributes.PrintQualityType </item>
+			<item> PageFormat </item>
+			<item> PageRanges </item>
+			<item> Pageable </item>
+			<item> PagedResultsControl </item>
+			<item> PagedResultsResponseControl </item>
+			<item> PagesPerMinute </item>
+			<item> PagesPerMinuteColor </item>
+			<item> Paint </item>
+			<item> PaintContext </item>
+			<item> PaintEvent </item>
+			<item> Panel </item>
+			<item> PanelUI </item>
+			<item> Paper </item>
+			<item> ParagraphView </item>
+			<item> ParagraphView </item>
+			<item> Parameter </item>
+			<item> ParameterBlock </item>
+			<item> ParameterDescriptor </item>
+			<item> ParameterMetaData </item>
+			<item> ParameterMode </item>
+			<item> ParameterModeHelper </item>
+			<item> ParameterModeHolder </item>
+			<item> ParameterizedType </item>
+			<item> ParseException </item>
+			<item> ParsePosition </item>
+			<item> Parser </item>
+			<item> Parser </item>
+			<item> ParserAdapter </item>
+			<item> ParserConfigurationException </item>
+			<item> ParserDelegator </item>
+			<item> ParserFactory </item>
+			<item> PartialResultException </item>
+			<item> PasswordAuthentication </item>
+			<item> PasswordCallback </item>
+			<item> PasswordView </item>
+			<item> Patch </item>
+			<item> PathIterator </item>
+			<item> Pattern </item>
+			<item> PatternSyntaxException </item>
+			<item> Permission </item>
+			<item> Permission </item>
+			<item> PermissionCollection </item>
+			<item> Permissions </item>
+			<item> PersistenceDelegate </item>
+			<item> PersistentMBean </item>
+			<item> PhantomReference </item>
+			<item> Pipe </item>
+			<item> Pipe.SinkChannel </item>
+			<item> Pipe.SourceChannel </item>
+			<item> PipedInputStream </item>
+			<item> PipedOutputStream </item>
+			<item> PipedReader </item>
+			<item> PipedWriter </item>
+			<item> PixelGrabber </item>
+			<item> PixelInterleavedSampleModel </item>
+			<item> PlainDocument </item>
+			<item> PlainView </item>
+			<item> Point </item>
+			<item> Point2D </item>
+			<item> Point2D.Double </item>
+			<item> Point2D.Float </item>
+			<item> PointerInfo </item>
+			<item> Policy </item>
+			<item> Policy </item>
+			<item> Policy </item>
+			<item> PolicyError </item>
+			<item> PolicyErrorCodeHelper </item>
+			<item> PolicyErrorHelper </item>
+			<item> PolicyErrorHolder </item>
+			<item> PolicyFactory </item>
+			<item> PolicyFactoryOperations </item>
+			<item> PolicyHelper </item>
+			<item> PolicyHolder </item>
+			<item> PolicyListHelper </item>
+			<item> PolicyListHolder </item>
+			<item> PolicyNode </item>
+			<item> PolicyOperations </item>
+			<item> PolicyQualifierInfo </item>
+			<item> PolicyTypeHelper </item>
+			<item> Polygon </item>
+			<item> PooledConnection </item>
+			<item> Popup </item>
+			<item> PopupFactory </item>
+			<item> PopupMenu </item>
+			<item> PopupMenuEvent </item>
+			<item> PopupMenuListener </item>
+			<item> PopupMenuUI </item>
+			<item> Port </item>
+			<item> Port.Info </item>
+			<item> PortUnreachableException </item>
+			<item> PortableRemoteObject </item>
+			<item> PortableRemoteObjectDelegate </item>
+			<item> Position </item>
+			<item> Position.Bias </item>
+			<item> Predicate </item>
+			<item> PreferenceChangeEvent </item>
+			<item> PreferenceChangeListener </item>
+			<item> Preferences </item>
+			<item> PreferencesFactory </item>
+			<item> PreparedStatement </item>
+			<item> PresentationDirection </item>
+			<item> Principal </item>
+			<item> Principal </item>
+			<item> PrincipalHolder </item>
+			<item> PrintEvent </item>
+			<item> PrintException </item>
+			<item> PrintGraphics </item>
+			<item> PrintJob </item>
+			<item> PrintJobAdapter </item>
+			<item> PrintJobAttribute </item>
+			<item> PrintJobAttributeEvent </item>
+			<item> PrintJobAttributeListener </item>
+			<item> PrintJobAttributeSet </item>
+			<item> PrintJobEvent </item>
+			<item> PrintJobListener </item>
+			<item> PrintQuality </item>
+			<item> PrintRequestAttribute </item>
+			<item> PrintRequestAttributeSet </item>
+			<item> PrintService </item>
+			<item> PrintServiceAttribute </item>
+			<item> PrintServiceAttributeEvent </item>
+			<item> PrintServiceAttributeListener </item>
+			<item> PrintServiceAttributeSet </item>
+			<item> PrintServiceLookup </item>
+			<item> PrintStream </item>
+			<item> PrintWriter </item>
+			<item> Printable </item>
+			<item> PrinterAbortException </item>
+			<item> PrinterException </item>
+			<item> PrinterGraphics </item>
+			<item> PrinterIOException </item>
+			<item> PrinterInfo </item>
+			<item> PrinterIsAcceptingJobs </item>
+			<item> PrinterJob </item>
+			<item> PrinterLocation </item>
+			<item> PrinterMakeAndModel </item>
+			<item> PrinterMessageFromOperator </item>
+			<item> PrinterMoreInfo </item>
+			<item> PrinterMoreInfoManufacturer </item>
+			<item> PrinterName </item>
+			<item> PrinterResolution </item>
+			<item> PrinterState </item>
+			<item> PrinterStateReason </item>
+			<item> PrinterStateReasons </item>
+			<item> PrinterURI </item>
+			<item> PriorityBlockingQueue </item>
+			<item> PriorityQueue </item>
+			<item> PrivateClassLoader </item>
+			<item> PrivateCredentialPermission </item>
+			<item> PrivateKey </item>
+			<item> PrivateMLet </item>
+			<item> PrivilegedAction </item>
+			<item> PrivilegedActionException </item>
+			<item> PrivilegedExceptionAction </item>
+			<item> Process </item>
+			<item> ProcessBuilder </item>
+			<item> ProcessingInstruction </item>
+			<item> ProfileDataException </item>
+			<item> ProfileIdHelper </item>
+			<item> ProgressBarUI </item>
+			<item> ProgressMonitor </item>
+			<item> ProgressMonitorInputStream </item>
+			<item> Properties </item>
+			<item> PropertyChangeEvent </item>
+			<item> PropertyChangeListener </item>
+			<item> PropertyChangeListenerProxy </item>
+			<item> PropertyChangeSupport </item>
+			<item> PropertyDescriptor </item>
+			<item> PropertyEditor </item>
+			<item> PropertyEditorManager </item>
+			<item> PropertyEditorSupport </item>
+			<item> PropertyPermission </item>
+			<item> PropertyResourceBundle </item>
+			<item> PropertyVetoException </item>
+			<item> ProtectionDomain </item>
+			<item> ProtocolException </item>
+			<item> Provider </item>
+			<item> Provider.Service </item>
+			<item> ProviderException </item>
+			<item> Proxy </item>
+			<item> Proxy </item>
+			<item> Proxy.Type </item>
+			<item> ProxySelector </item>
+			<item> PublicKey </item>
+			<item> PushbackInputStream </item>
+			<item> PushbackReader </item>
+			<item> QName </item>
+			<item> QuadCurve2D </item>
+			<item> QuadCurve2D.Double </item>
+			<item> QuadCurve2D.Float </item>
+			<item> Query </item>
+			<item> QueryEval </item>
+			<item> QueryExp </item>
+			<item> Queue </item>
+			<item> QueuedJobCount </item>
+			<item> RC2ParameterSpec </item>
+			<item> RC5ParameterSpec </item>
+			<item> REBIND </item>
+			<item> REQUEST_PROCESSING_POLICY_ID </item>
+			<item> RGBImageFilter </item>
+			<item> RMIClassLoader </item>
+			<item> RMIClassLoaderSpi </item>
+			<item> RMIClientSocketFactory </item>
+			<item> RMIConnection </item>
+			<item> RMIConnectionImpl </item>
+			<item> RMIConnectionImpl_Stub </item>
+			<item> RMIConnector </item>
+			<item> RMIConnectorServer </item>
+			<item> RMICustomMaxStreamFormat </item>
+			<item> RMIFailureHandler </item>
+			<item> RMIIIOPServerImpl </item>
+			<item> RMIJRMPServerImpl </item>
+			<item> RMISecurityException </item>
+			<item> RMISecurityManager </item>
+			<item> RMIServer </item>
+			<item> RMIServerImpl </item>
+			<item> RMIServerImpl_Stub </item>
+			<item> RMIServerSocketFactory </item>
+			<item> RMISocketFactory </item>
+			<item> RSAKey </item>
+			<item> RSAKeyGenParameterSpec </item>
+			<item> RSAMultiPrimePrivateCrtKey </item>
+			<item> RSAMultiPrimePrivateCrtKeySpec </item>
+			<item> RSAOtherPrimeInfo </item>
+			<item> RSAPrivateCrtKey </item>
+			<item> RSAPrivateCrtKeySpec </item>
+			<item> RSAPrivateKey </item>
+			<item> RSAPrivateKeySpec </item>
+			<item> RSAPublicKey </item>
+			<item> RSAPublicKeySpec </item>
+			<item> RTFEditorKit </item>
+			<item> Random </item>
+			<item> RandomAccess </item>
+			<item> RandomAccessFile </item>
+			<item> Raster </item>
+			<item> RasterFormatException </item>
+			<item> RasterOp </item>
+			<item> Rdn </item>
+			<item> ReadOnlyBufferException </item>
+			<item> ReadWriteLock </item>
+			<item> Readable </item>
+			<item> ReadableByteChannel </item>
+			<item> Reader </item>
+			<item> RealmCallback </item>
+			<item> RealmChoiceCallback </item>
+			<item> Receiver </item>
+			<item> Rectangle </item>
+			<item> Rectangle2D </item>
+			<item> Rectangle2D.Double </item>
+			<item> Rectangle2D.Float </item>
+			<item> RectangularShape </item>
+			<item> ReentrantLock </item>
+			<item> ReentrantReadWriteLock </item>
+			<item> ReentrantReadWriteLock.ReadLock </item>
+			<item> ReentrantReadWriteLock.WriteLock </item>
+			<item> Ref </item>
+			<item> RefAddr </item>
+			<item> Reference </item>
+			<item> Reference </item>
+			<item> ReferenceQueue </item>
+			<item> ReferenceUriSchemesSupported </item>
+			<item> Referenceable </item>
+			<item> ReferralException </item>
+			<item> ReflectPermission </item>
+			<item> ReflectionException </item>
+			<item> RefreshFailedException </item>
+			<item> Refreshable </item>
+			<item> Region </item>
+			<item> RegisterableService </item>
+			<item> Registry </item>
+			<item> RegistryHandler </item>
+			<item> RejectedExecutionException </item>
+			<item> RejectedExecutionHandler </item>
+			<item> Relation </item>
+			<item> RelationException </item>
+			<item> RelationNotFoundException </item>
+			<item> RelationNotification </item>
+			<item> RelationService </item>
+			<item> RelationServiceMBean </item>
+			<item> RelationServiceNotRegisteredException </item>
+			<item> RelationSupport </item>
+			<item> RelationSupportMBean </item>
+			<item> RelationType </item>
+			<item> RelationTypeNotFoundException </item>
+			<item> RelationTypeSupport </item>
+			<item> RemarshalException </item>
+			<item> Remote </item>
+			<item> RemoteCall </item>
+			<item> RemoteException </item>
+			<item> RemoteObject </item>
+			<item> RemoteObjectInvocationHandler </item>
+			<item> RemoteRef </item>
+			<item> RemoteServer </item>
+			<item> RemoteStub </item>
+			<item> RenderContext </item>
+			<item> RenderableImage </item>
+			<item> RenderableImageOp </item>
+			<item> RenderableImageProducer </item>
+			<item> RenderedImage </item>
+			<item> RenderedImageFactory </item>
+			<item> Renderer </item>
+			<item> RenderingHints </item>
+			<item> RenderingHints.Key </item>
+			<item> RepaintManager </item>
+			<item> ReplicateScaleFilter </item>
+			<item> RepositoryIdHelper </item>
+			<item> Request </item>
+			<item> RequestInfo </item>
+			<item> RequestInfoOperations </item>
+			<item> RequestProcessingPolicy </item>
+			<item> RequestProcessingPolicyOperations </item>
+			<item> RequestProcessingPolicyValue </item>
+			<item> RequestingUserName </item>
+			<item> RequiredModelMBean </item>
+			<item> RescaleOp </item>
+			<item> ResolutionSyntax </item>
+			<item> ResolveResult </item>
+			<item> Resolver </item>
+			<item> ResourceBundle </item>
+			<item> ResponseCache </item>
+			<item> ResponseHandler </item>
+			<item> Result </item>
+			<item> ResultSet </item>
+			<item> ResultSetMetaData </item>
+			<item> Retention </item>
+			<item> RetentionPolicy </item>
+			<item> ReverbType </item>
+			<item> Robot </item>
+			<item> Role </item>
+			<item> RoleInfo </item>
+			<item> RoleInfoNotFoundException </item>
+			<item> RoleList </item>
+			<item> RoleNotFoundException </item>
+			<item> RoleResult </item>
+			<item> RoleStatus </item>
+			<item> RoleUnresolved </item>
+			<item> RoleUnresolvedList </item>
+			<item> RootPaneContainer </item>
+			<item> RootPaneUI </item>
+			<item> RoundRectangle2D </item>
+			<item> RoundRectangle2D.Double </item>
+			<item> RoundRectangle2D.Float </item>
+			<item> RoundingMode </item>
+			<item> RowMapper </item>
+			<item> RowSet </item>
+			<item> RowSetEvent </item>
+			<item> RowSetInternal </item>
+			<item> RowSetListener </item>
+			<item> RowSetMetaData </item>
+			<item> RowSetMetaDataImpl </item>
+			<item> RowSetReader </item>
+			<item> RowSetWarning </item>
+			<item> RowSetWriter </item>
+			<item> RuleBasedCollator </item>
+			<item> RunTime </item>
+			<item> RunTimeOperations </item>
+			<item> Runnable </item>
+			<item> Runtime </item>
+			<item> RuntimeErrorException </item>
+			<item> RuntimeException </item>
+			<item> RuntimeMBeanException </item>
+			<item> RuntimeMXBean </item>
+			<item> RuntimeOperationsException </item>
+			<item> RuntimePermission </item>
+			<item> SAXException </item>
+			<item> SAXNotRecognizedException </item>
+			<item> SAXNotSupportedException </item>
+			<item> SAXParseException </item>
+			<item> SAXParser </item>
+			<item> SAXParserFactory </item>
+			<item> SAXResult </item>
+			<item> SAXSource </item>
+			<item> SAXTransformerFactory </item>
+			<item> SERVANT_RETENTION_POLICY_ID </item>
+			<item> SQLData </item>
+			<item> SQLException </item>
+			<item> SQLInput </item>
+			<item> SQLInputImpl </item>
+			<item> SQLOutput </item>
+			<item> SQLOutputImpl </item>
+			<item> SQLPermission </item>
+			<item> SQLWarning </item>
+			<item> SSLContext </item>
+			<item> SSLContextSpi </item>
+			<item> SSLEngine </item>
+			<item> SSLEngineResult </item>
+			<item> SSLEngineResult.HandshakeStatus </item>
+			<item> SSLEngineResult.Status </item>
+			<item> SSLException </item>
+			<item> SSLHandshakeException </item>
+			<item> SSLKeyException </item>
+			<item> SSLPeerUnverifiedException </item>
+			<item> SSLPermission </item>
+			<item> SSLProtocolException </item>
+			<item> SSLServerSocket </item>
+			<item> SSLServerSocketFactory </item>
+			<item> SSLSession </item>
+			<item> SSLSessionBindingEvent </item>
+			<item> SSLSessionBindingListener </item>
+			<item> SSLSessionContext </item>
+			<item> SSLSocket </item>
+			<item> SSLSocketFactory </item>
+			<item> SUCCESSFUL </item>
+			<item> SYNC_WITH_TRANSPORT </item>
+			<item> SYSTEM_EXCEPTION </item>
+			<item> SampleModel </item>
+			<item> Sasl </item>
+			<item> SaslClient </item>
+			<item> SaslClientFactory </item>
+			<item> SaslException </item>
+			<item> SaslServer </item>
+			<item> SaslServerFactory </item>
+			<item> Savepoint </item>
+			<item> Scanner </item>
+			<item> ScatteringByteChannel </item>
+			<item> ScheduledExecutorService </item>
+			<item> ScheduledFuture </item>
+			<item> ScheduledThreadPoolExecutor </item>
+			<item> Schema </item>
+			<item> SchemaFactory </item>
+			<item> SchemaFactoryLoader </item>
+			<item> SchemaViolationException </item>
+			<item> ScrollBarUI </item>
+			<item> ScrollPane </item>
+			<item> ScrollPaneAdjustable </item>
+			<item> ScrollPaneConstants </item>
+			<item> ScrollPaneLayout </item>
+			<item> ScrollPaneLayout.UIResource </item>
+			<item> ScrollPaneUI </item>
+			<item> Scrollable </item>
+			<item> Scrollbar </item>
+			<item> SealedObject </item>
+			<item> SearchControls </item>
+			<item> SearchResult </item>
+			<item> SecretKey </item>
+			<item> SecretKeyFactory </item>
+			<item> SecretKeyFactorySpi </item>
+			<item> SecretKeySpec </item>
+			<item> SecureCacheResponse </item>
+			<item> SecureClassLoader </item>
+			<item> SecureRandom </item>
+			<item> SecureRandomSpi </item>
+			<item> Security </item>
+			<item> SecurityException </item>
+			<item> SecurityManager </item>
+			<item> SecurityPermission </item>
+			<item> Segment </item>
+			<item> SelectableChannel </item>
+			<item> SelectionKey </item>
+			<item> Selector </item>
+			<item> SelectorProvider </item>
+			<item> Semaphore </item>
+			<item> SeparatorUI </item>
+			<item> Sequence </item>
+			<item> SequenceInputStream </item>
+			<item> Sequencer </item>
+			<item> Sequencer.SyncMode </item>
+			<item> SerialArray </item>
+			<item> SerialBlob </item>
+			<item> SerialClob </item>
+			<item> SerialDatalink </item>
+			<item> SerialException </item>
+			<item> SerialJavaObject </item>
+			<item> SerialRef </item>
+			<item> SerialStruct </item>
+			<item> Serializable </item>
+			<item> SerializablePermission </item>
+			<item> Servant </item>
+			<item> ServantActivator </item>
+			<item> ServantActivatorHelper </item>
+			<item> ServantActivatorOperations </item>
+			<item> ServantActivatorPOA </item>
+			<item> ServantAlreadyActive </item>
+			<item> ServantAlreadyActiveHelper </item>
+			<item> ServantLocator </item>
+			<item> ServantLocatorHelper </item>
+			<item> ServantLocatorOperations </item>
+			<item> ServantLocatorPOA </item>
+			<item> ServantManager </item>
+			<item> ServantManagerOperations </item>
+			<item> ServantNotActive </item>
+			<item> ServantNotActiveHelper </item>
+			<item> ServantObject </item>
+			<item> ServantRetentionPolicy </item>
+			<item> ServantRetentionPolicyOperations </item>
+			<item> ServantRetentionPolicyValue </item>
+			<item> ServerCloneException </item>
+			<item> ServerError </item>
+			<item> ServerException </item>
+			<item> ServerIdHelper </item>
+			<item> ServerNotActiveException </item>
+			<item> ServerRef </item>
+			<item> ServerRequest </item>
+			<item> ServerRequestInfo </item>
+			<item> ServerRequestInfoOperations </item>
+			<item> ServerRequestInterceptor </item>
+			<item> ServerRequestInterceptorOperations </item>
+			<item> ServerRuntimeException </item>
+			<item> ServerSocket </item>
+			<item> ServerSocketChannel </item>
+			<item> ServerSocketFactory </item>
+			<item> ServiceContext </item>
+			<item> ServiceContextHelper </item>
+			<item> ServiceContextHolder </item>
+			<item> ServiceContextListHelper </item>
+			<item> ServiceContextListHolder </item>
+			<item> ServiceDetail </item>
+			<item> ServiceDetailHelper </item>
+			<item> ServiceIdHelper </item>
+			<item> ServiceInformation </item>
+			<item> ServiceInformationHelper </item>
+			<item> ServiceInformationHolder </item>
+			<item> ServiceNotFoundException </item>
+			<item> ServicePermission </item>
+			<item> ServiceRegistry </item>
+			<item> ServiceRegistry.Filter </item>
+			<item> ServiceUI </item>
+			<item> ServiceUIFactory </item>
+			<item> ServiceUnavailableException </item>
+			<item> Set </item>
+			<item> SetOfIntegerSyntax </item>
+			<item> SetOverrideType </item>
+			<item> SetOverrideTypeHelper </item>
+			<item> Severity </item>
+			<item> Shape </item>
+			<item> ShapeGraphicAttribute </item>
+			<item> SheetCollate </item>
+			<item> Short </item>
+			<item> ShortBuffer </item>
+			<item> ShortBufferException </item>
+			<item> ShortHolder </item>
+			<item> ShortLookupTable </item>
+			<item> ShortMessage </item>
+			<item> ShortSeqHelper </item>
+			<item> ShortSeqHolder </item>
+			<item> Sides </item>
+			<item> Signature </item>
+			<item> SignatureException </item>
+			<item> SignatureSpi </item>
+			<item> SignedObject </item>
+			<item> Signer </item>
+			<item> SimpleAttributeSet </item>
+			<item> SimpleBeanInfo </item>
+			<item> SimpleDateFormat </item>
+			<item> SimpleDoc </item>
+			<item> SimpleFormatter </item>
+			<item> SimpleTimeZone </item>
+			<item> SimpleType </item>
+			<item> SinglePixelPackedSampleModel </item>
+			<item> SingleSelectionModel </item>
+			<item> Size2DSyntax </item>
+			<item> SizeLimitExceededException </item>
+			<item> SizeRequirements </item>
+			<item> SizeSequence </item>
+			<item> Skeleton </item>
+			<item> SkeletonMismatchException </item>
+			<item> SkeletonNotFoundException </item>
+			<item> SliderUI </item>
+			<item> Socket </item>
+			<item> SocketAddress </item>
+			<item> SocketChannel </item>
+			<item> SocketException </item>
+			<item> SocketFactory </item>
+			<item> SocketHandler </item>
+			<item> SocketImpl </item>
+			<item> SocketImplFactory </item>
+			<item> SocketOptions </item>
+			<item> SocketPermission </item>
+			<item> SocketSecurityException </item>
+			<item> SocketTimeoutException </item>
+			<item> SoftBevelBorder </item>
+			<item> SoftReference </item>
+			<item> SortControl </item>
+			<item> SortKey </item>
+			<item> SortResponseControl </item>
+			<item> SortedMap </item>
+			<item> SortedSet </item>
+			<item> SortingFocusTraversalPolicy </item>
+			<item> Soundbank </item>
+			<item> SoundbankReader </item>
+			<item> SoundbankResource </item>
+			<item> Source </item>
+			<item> SourceDataLine </item>
+			<item> SourceLocator </item>
+			<item> SpinnerDateModel </item>
+			<item> SpinnerListModel </item>
+			<item> SpinnerModel </item>
+			<item> SpinnerNumberModel </item>
+			<item> SpinnerUI </item>
+			<item> SplitPaneUI </item>
+			<item> Spring </item>
+			<item> SpringLayout </item>
+			<item> SpringLayout.Constraints </item>
+			<item> SslRMIClientSocketFactory </item>
+			<item> SslRMIServerSocketFactory </item>
+			<item> Stack </item>
+			<item> StackOverflowError </item>
+			<item> StackTraceElement </item>
+			<item> StandardMBean </item>
+			<item> StartTlsRequest </item>
+			<item> StartTlsResponse </item>
+			<item> State </item>
+			<item> StateEdit </item>
+			<item> StateEditable </item>
+			<item> StateFactory </item>
+			<item> Statement </item>
+			<item> Statement </item>
+			<item> StreamCorruptedException </item>
+			<item> StreamHandler </item>
+			<item> StreamPrintService </item>
+			<item> StreamPrintServiceFactory </item>
+			<item> StreamResult </item>
+			<item> StreamSource </item>
+			<item> StreamTokenizer </item>
+			<item> Streamable </item>
+			<item> StreamableValue </item>
+			<item> StrictMath </item>
+			<item> String </item>
+			<item> StringBuffer </item>
+			<item> StringBufferInputStream </item>
+			<item> StringBuilder </item>
+			<item> StringCharacterIterator </item>
+			<item> StringContent </item>
+			<item> StringHolder </item>
+			<item> StringIndexOutOfBoundsException </item>
+			<item> StringMonitor </item>
+			<item> StringMonitorMBean </item>
+			<item> StringNameHelper </item>
+			<item> StringReader </item>
+			<item> StringRefAddr </item>
+			<item> StringSelection </item>
+			<item> StringSeqHelper </item>
+			<item> StringSeqHolder </item>
+			<item> StringTokenizer </item>
+			<item> StringValueExp </item>
+			<item> StringValueHelper </item>
+			<item> StringWriter </item>
+			<item> Stroke </item>
+			<item> Struct </item>
+			<item> StructMember </item>
+			<item> StructMemberHelper </item>
+			<item> Stub </item>
+			<item> StubDelegate </item>
+			<item> StubNotFoundException </item>
+			<item> Style </item>
+			<item> StyleConstants </item>
+			<item> StyleConstants.CharacterConstants </item>
+			<item> StyleConstants.ColorConstants </item>
+			<item> StyleConstants.FontConstants </item>
+			<item> StyleConstants.ParagraphConstants </item>
+			<item> StyleContext </item>
+			<item> StyleSheet </item>
+			<item> StyleSheet.BoxPainter </item>
+			<item> StyleSheet.ListPainter </item>
+			<item> StyledDocument </item>
+			<item> StyledEditorKit </item>
+			<item> StyledEditorKit.AlignmentAction </item>
+			<item> StyledEditorKit.BoldAction </item>
+			<item> StyledEditorKit.FontFamilyAction </item>
+			<item> StyledEditorKit.FontSizeAction </item>
+			<item> StyledEditorKit.ForegroundAction </item>
+			<item> StyledEditorKit.ItalicAction </item>
+			<item> StyledEditorKit.StyledTextAction </item>
+			<item> StyledEditorKit.UnderlineAction </item>
+			<item> Subject </item>
+			<item> SubjectDelegationPermission </item>
+			<item> SubjectDomainCombiner </item>
+			<item> SupportedValuesAttribute </item>
+			<item> SuppressWarnings </item>
+			<item> SwingConstants </item>
+			<item> SwingPropertyChangeSupport </item>
+			<item> SwingUtilities </item>
+			<item> SyncFactory </item>
+			<item> SyncFactoryException </item>
+			<item> SyncFailedException </item>
+			<item> SyncProvider </item>
+			<item> SyncProviderException </item>
+			<item> SyncResolver </item>
+			<item> SyncScopeHelper </item>
+			<item> SynchronousQueue </item>
+			<item> SynthConstants </item>
+			<item> SynthContext </item>
+			<item> SynthGraphicsUtils </item>
+			<item> SynthLookAndFeel </item>
+			<item> SynthPainter </item>
+			<item> SynthStyle </item>
+			<item> SynthStyleFactory </item>
+			<item> Synthesizer </item>
+			<item> SysexMessage </item>
+			<item> System </item>
+			<item> SystemColor </item>
+			<item> SystemException </item>
+			<item> SystemFlavorMap </item>
+			<item> TAG_ALTERNATE_IIOP_ADDRESS </item>
+			<item> TAG_CODE_SETS </item>
+			<item> TAG_INTERNET_IOP </item>
+			<item> TAG_JAVA_CODEBASE </item>
+			<item> TAG_MULTIPLE_COMPONENTS </item>
+			<item> TAG_ORB_TYPE </item>
+			<item> TAG_POLICIES </item>
+			<item> TAG_RMI_CUSTOM_MAX_STREAM_FORMAT </item>
+			<item> TCKind </item>
+			<item> THREAD_POLICY_ID </item>
+			<item> TIMEOUT </item>
+			<item> TRANSACTION_MODE </item>
+			<item> TRANSACTION_REQUIRED </item>
+			<item> TRANSACTION_ROLLEDBACK </item>
+			<item> TRANSACTION_UNAVAILABLE </item>
+			<item> TRANSIENT </item>
+			<item> TRANSPORT_RETRY </item>
+			<item> TabExpander </item>
+			<item> TabSet </item>
+			<item> TabStop </item>
+			<item> TabableView </item>
+			<item> TabbedPaneUI </item>
+			<item> TableCellEditor </item>
+			<item> TableCellRenderer </item>
+			<item> TableColumn </item>
+			<item> TableColumnModel </item>
+			<item> TableColumnModelEvent </item>
+			<item> TableColumnModelListener </item>
+			<item> TableHeaderUI </item>
+			<item> TableModel </item>
+			<item> TableModelEvent </item>
+			<item> TableModelListener </item>
+			<item> TableUI </item>
+			<item> TableView </item>
+			<item> TabularData </item>
+			<item> TabularDataSupport </item>
+			<item> TabularType </item>
+			<item> TagElement </item>
+			<item> TaggedComponent </item>
+			<item> TaggedComponentHelper </item>
+			<item> TaggedComponentHolder </item>
+			<item> TaggedProfile </item>
+			<item> TaggedProfileHelper </item>
+			<item> TaggedProfileHolder </item>
+			<item> Target </item>
+			<item> TargetDataLine </item>
+			<item> TargetedNotification </item>
+			<item> Templates </item>
+			<item> TemplatesHandler </item>
+			<item> Text </item>
+			<item> TextAction </item>
+			<item> TextArea </item>
+			<item> TextAttribute </item>
+			<item> TextComponent </item>
+			<item> TextEvent </item>
+			<item> TextField </item>
+			<item> TextHitInfo </item>
+			<item> TextInputCallback </item>
+			<item> TextLayout </item>
+			<item> TextLayout.CaretPolicy </item>
+			<item> TextListener </item>
+			<item> TextMeasurer </item>
+			<item> TextOutputCallback </item>
+			<item> TextSyntax </item>
+			<item> TextUI </item>
+			<item> TexturePaint </item>
+			<item> Thread </item>
+			<item> Thread.State </item>
+			<item> Thread.UncaughtExceptionHandler </item>
+			<item> ThreadDeath </item>
+			<item> ThreadFactory </item>
+			<item> ThreadGroup </item>
+			<item> ThreadInfo </item>
+			<item> ThreadLocal </item>
+			<item> ThreadMXBean </item>
+			<item> ThreadPolicy </item>
+			<item> ThreadPolicyOperations </item>
+			<item> ThreadPolicyValue </item>
+			<item> ThreadPoolExecutor </item>
+			<item> ThreadPoolExecutor.AbortPolicy </item>
+			<item> ThreadPoolExecutor.CallerRunsPolicy </item>
+			<item> ThreadPoolExecutor.DiscardOldestPolicy </item>
+			<item> ThreadPoolExecutor.DiscardPolicy </item>
+			<item> Throwable </item>
+			<item> Tie </item>
+			<item> TileObserver </item>
+			<item> Time </item>
+			<item> TimeLimitExceededException </item>
+			<item> TimeUnit </item>
+			<item> TimeZone </item>
+			<item> TimeoutException </item>
+			<item> Timer </item>
+			<item> Timer </item>
+			<item> Timer </item>
+			<item> TimerAlarmClockNotification </item>
+			<item> TimerMBean </item>
+			<item> TimerNotification </item>
+			<item> TimerTask </item>
+			<item> Timestamp </item>
+			<item> Timestamp </item>
+			<item> TitledBorder </item>
+			<item> TooManyListenersException </item>
+			<item> ToolBarUI </item>
+			<item> ToolTipManager </item>
+			<item> ToolTipUI </item>
+			<item> Toolkit </item>
+			<item> Track </item>
+			<item> TransactionRequiredException </item>
+			<item> TransactionRolledbackException </item>
+			<item> TransactionService </item>
+			<item> TransactionalWriter </item>
+			<item> TransferHandler </item>
+			<item> Transferable </item>
+			<item> TransformAttribute </item>
+			<item> Transformer </item>
+			<item> TransformerConfigurationException </item>
+			<item> TransformerException </item>
+			<item> TransformerFactory </item>
+			<item> TransformerFactoryConfigurationError </item>
+			<item> TransformerHandler </item>
+			<item> Transmitter </item>
+			<item> Transparency </item>
+			<item> TreeCellEditor </item>
+			<item> TreeCellRenderer </item>
+			<item> TreeExpansionEvent </item>
+			<item> TreeExpansionListener </item>
+			<item> TreeMap </item>
+			<item> TreeModel </item>
+			<item> TreeModelEvent </item>
+			<item> TreeModelListener </item>
+			<item> TreeNode </item>
+			<item> TreePath </item>
+			<item> TreeSelectionEvent </item>
+			<item> TreeSelectionListener </item>
+			<item> TreeSelectionModel </item>
+			<item> TreeSet </item>
+			<item> TreeUI </item>
+			<item> TreeWillExpandListener </item>
+			<item> TrustAnchor </item>
+			<item> TrustManager </item>
+			<item> TrustManagerFactory </item>
+			<item> TrustManagerFactorySpi </item>
+			<item> Type </item>
+			<item> TypeCode </item>
+			<item> TypeCodeHolder </item>
+			<item> TypeInfo </item>
+			<item> TypeInfoProvider </item>
+			<item> TypeMismatch </item>
+			<item> TypeMismatch </item>
+			<item> TypeMismatch </item>
+			<item> TypeMismatchHelper </item>
+			<item> TypeMismatchHelper </item>
+			<item> TypeNotPresentException </item>
+			<item> TypeVariable </item>
+			<item> Types </item>
+			<item> UID </item>
+			<item> UIDefaults </item>
+			<item> UIDefaults.ActiveValue </item>
+			<item> UIDefaults.LazyInputMap </item>
+			<item> UIDefaults.LazyValue </item>
+			<item> UIDefaults.ProxyLazyValue </item>
+			<item> UIManager </item>
+			<item> UIManager.LookAndFeelInfo </item>
+			<item> UIResource </item>
+			<item> ULongLongSeqHelper </item>
+			<item> ULongLongSeqHolder </item>
+			<item> ULongSeqHelper </item>
+			<item> ULongSeqHolder </item>
+			<item> UNKNOWN </item>
+			<item> UNKNOWN </item>
+			<item> UNSUPPORTED_POLICY </item>
+			<item> UNSUPPORTED_POLICY_VALUE </item>
+			<item> URI </item>
+			<item> URIException </item>
+			<item> URIResolver </item>
+			<item> URISyntax </item>
+			<item> URISyntaxException </item>
+			<item> URL </item>
+			<item> URLClassLoader </item>
+			<item> URLConnection </item>
+			<item> URLDecoder </item>
+			<item> URLEncoder </item>
+			<item> URLStreamHandler </item>
+			<item> URLStreamHandlerFactory </item>
+			<item> URLStringHelper </item>
+			<item> USER_EXCEPTION </item>
+			<item> UShortSeqHelper </item>
+			<item> UShortSeqHolder </item>
+			<item> UTFDataFormatException </item>
+			<item> UUID </item>
+			<item> UndeclaredThrowableException </item>
+			<item> UndoManager </item>
+			<item> UndoableEdit </item>
+			<item> UndoableEditEvent </item>
+			<item> UndoableEditListener </item>
+			<item> UndoableEditSupport </item>
+			<item> UnexpectedException </item>
+			<item> UnicastRemoteObject </item>
+			<item> UnionMember </item>
+			<item> UnionMemberHelper </item>
+			<item> UnknownEncoding </item>
+			<item> UnknownEncodingHelper </item>
+			<item> UnknownError </item>
+			<item> UnknownException </item>
+			<item> UnknownFormatConversionException </item>
+			<item> UnknownFormatFlagsException </item>
+			<item> UnknownGroupException </item>
+			<item> UnknownHostException </item>
+			<item> UnknownHostException </item>
+			<item> UnknownObjectException </item>
+			<item> UnknownServiceException </item>
+			<item> UnknownUserException </item>
+			<item> UnknownUserExceptionHelper </item>
+			<item> UnknownUserExceptionHolder </item>
+			<item> UnmappableCharacterException </item>
+			<item> UnmarshalException </item>
+			<item> UnmodifiableClassException </item>
+			<item> UnmodifiableSetException </item>
+			<item> UnrecoverableEntryException </item>
+			<item> UnrecoverableKeyException </item>
+			<item> Unreferenced </item>
+			<item> UnresolvedAddressException </item>
+			<item> UnresolvedPermission </item>
+			<item> UnsatisfiedLinkError </item>
+			<item> UnsolicitedNotification </item>
+			<item> UnsolicitedNotificationEvent </item>
+			<item> UnsolicitedNotificationListener </item>
+			<item> UnsupportedAddressTypeException </item>
+			<item> UnsupportedAudioFileException </item>
+			<item> UnsupportedCallbackException </item>
+			<item> UnsupportedCharsetException </item>
+			<item> UnsupportedClassVersionError </item>
+			<item> UnsupportedEncodingException </item>
+			<item> UnsupportedFlavorException </item>
+			<item> UnsupportedLookAndFeelException </item>
+			<item> UnsupportedOperationException </item>
+			<item> UserDataHandler </item>
+			<item> UserException </item>
+			<item> Util </item>
+			<item> UtilDelegate </item>
+			<item> Utilities </item>
+			<item> VMID </item>
+			<item> VM_ABSTRACT </item>
+			<item> VM_CUSTOM </item>
+			<item> VM_NONE </item>
+			<item> VM_TRUNCATABLE </item>
+			<item> Validator </item>
+			<item> ValidatorHandler </item>
+			<item> ValueBase </item>
+			<item> ValueBaseHelper </item>
+			<item> ValueBaseHolder </item>
+			<item> ValueExp </item>
+			<item> ValueFactory </item>
+			<item> ValueHandler </item>
+			<item> ValueHandlerMultiFormat </item>
+			<item> ValueInputStream </item>
+			<item> ValueMember </item>
+			<item> ValueMemberHelper </item>
+			<item> ValueOutputStream </item>
+			<item> VariableHeightLayoutCache </item>
+			<item> Vector </item>
+			<item> VerifyError </item>
+			<item> VersionSpecHelper </item>
+			<item> VetoableChangeListener </item>
+			<item> VetoableChangeListenerProxy </item>
+			<item> VetoableChangeSupport </item>
+			<item> View </item>
+			<item> ViewFactory </item>
+			<item> ViewportLayout </item>
+			<item> ViewportUI </item>
+			<item> VirtualMachineError </item>
+			<item> Visibility </item>
+			<item> VisibilityHelper </item>
+			<item> VoiceStatus </item>
+			<item> Void </item>
+			<item> VolatileImage </item>
+			<item> WCharSeqHelper </item>
+			<item> WCharSeqHolder </item>
+			<item> WStringSeqHelper </item>
+			<item> WStringSeqHolder </item>
+			<item> WStringValueHelper </item>
+			<item> WeakHashMap </item>
+			<item> WeakReference </item>
+			<item> WebRowSet </item>
+			<item> WildcardType </item>
+			<item> Window </item>
+			<item> WindowAdapter </item>
+			<item> WindowConstants </item>
+			<item> WindowEvent </item>
+			<item> WindowFocusListener </item>
+			<item> WindowListener </item>
+			<item> WindowStateListener </item>
+			<item> WrappedPlainView </item>
+			<item> WritableByteChannel </item>
+			<item> WritableRaster </item>
+			<item> WritableRenderedImage </item>
+			<item> WriteAbortedException </item>
+			<item> Writer </item>
+			<item> WrongAdapter </item>
+			<item> WrongAdapterHelper </item>
+			<item> WrongPolicy </item>
+			<item> WrongPolicyHelper </item>
+			<item> WrongTransaction </item>
+			<item> WrongTransactionHelper </item>
+			<item> WrongTransactionHolder </item>
+			<item> X500Principal </item>
+			<item> X500PrivateCredential </item>
+			<item> X509CRL </item>
+			<item> X509CRLEntry </item>
+			<item> X509CRLSelector </item>
+			<item> X509CertSelector </item>
+			<item> X509Certificate </item>
+			<item> X509Certificate </item>
+			<item> X509EncodedKeySpec </item>
+			<item> X509ExtendedKeyManager </item>
+			<item> X509Extension </item>
+			<item> X509KeyManager </item>
+			<item> X509TrustManager </item>
+			<item> XAConnection </item>
+			<item> XADataSource </item>
+			<item> XAException </item>
+			<item> XAResource </item>
+			<item> XMLConstants </item>
+			<item> XMLDecoder </item>
+			<item> XMLEncoder </item>
+			<item> XMLFilter </item>
+			<item> XMLFilterImpl </item>
+			<item> XMLFormatter </item>
+			<item> XMLGregorianCalendar </item>
+			<item> XMLParseException </item>
+			<item> XMLReader </item>
+			<item> XMLReaderAdapter </item>
+			<item> XMLReaderFactory </item>
+			<item> XPath </item>
+			<item> XPathConstants </item>
+			<item> XPathException </item>
+			<item> XPathExpression </item>
+			<item> XPathExpressionException </item>
+			<item> XPathFactory </item>
+			<item> XPathFactoryConfigurationException </item>
+			<item> XPathFunction </item>
+			<item> XPathFunctionException </item>
+			<item> XPathFunctionResolver </item>
+			<item> XPathVariableResolver </item>
+			<item> Xid </item>
+			<item> XmlReader </item>
+			<item> XmlWriter </item>
+			<item> ZipEntry </item>
+			<item> ZipException </item>
+			<item> ZipFile </item>
+			<item> ZipInputStream </item>
+			<item> ZipOutputStream </item>
+			<item> ZoneView </item>
+			<item> _BindingIteratorImplBase </item>
+			<item> _BindingIteratorStub </item>
+			<item> _DynAnyFactoryStub </item>
+			<item> _DynAnyStub </item>
+			<item> _DynArrayStub </item>
+			<item> _DynEnumStub </item>
+			<item> _DynFixedStub </item>
+			<item> _DynSequenceStub </item>
+			<item> _DynStructStub </item>
+			<item> _DynUnionStub </item>
+			<item> _DynValueStub </item>
+			<item> _IDLTypeStub </item>
+			<item> _NamingContextExtStub </item>
+			<item> _NamingContextImplBase </item>
+			<item> _NamingContextStub </item>
+			<item> _PolicyStub </item>
+			<item> _Remote_Stub </item>
+			<item> _ServantActivatorStub </item>
+			<item> _ServantLocatorStub </item>
+			
+<!-- 			new classes of jdk 6.0 -->
+
+			<item> AbstractAnnotationValueVisitor6 </item>
+			<item> AbstractElementVisitor6 </item>
+			<item> AbstractMarshallerImpl </item>
+			<item> AbstractOwnableSynchronizer </item>
+			<item> AbstractProcessor </item>
+			<item> AbstractQueuedLongSynchronizer </item>
+			<item> AbstractScriptEngine </item>
+			<item> AbstractTypeVisitor6 </item>
+			<item> AbstractUnmarshallerImpl </item>
+			<item> ActivationDataFlavor </item>
+			<item> AlgorithmMethod </item>
+			<item> AnnotationMirror </item>
+			<item> AnnotationValue </item>
+			<item> AnnotationValueVisitor </item>
+			<item> ArrayDeque </item>
+			<item> AsyncHandler </item>
+			<item> AttachmentMarshaller </item>
+			<item> AttachmentPart </item>
+			<item> AttachmentUnmarshaller </item>
+			<item> Binder </item>
+			<item> BindingProvider </item>
+			<item> Bindings </item>
+			<item> BlockingDeque </item>
+			<item> BreakIteratorProvider </item>
+			<item> C14NMethodParameterSpec </item>
+			<item> CanonicalizationMethod </item>
+			<item> Characters </item>
+			<item> ClientInfoStatus </item>
+			<item> CollapsedStringAdapter </item>
+			<item> CollatorProvider </item>
+			<item> CommandInfo </item>
+			<item> CommandMap </item>
+			<item> CommandObject </item>
+			<item> CommonDataSource </item>
+			<item> Compilable </item>
+			<item> CompiledScript </item>
+			<item> Completion </item>
+			<item> Completions </item>
+			<item> CompositeDataInvocationHandler </item>
+			<item> CompositeDataView </item>
+			<item> ConcurrentNavigableMap </item>
+			<item> ConcurrentSkipListMap </item>
+			<item> ConcurrentSkipListSet </item>
+			<item> ConfigurationSpi </item>
+			<item> Console </item>
+			<item> ConstructorProperties </item>
+			<item> CookieManager </item>
+			<item> CookiePolicy </item>
+			<item> CookieStore </item>
+			<item> CurrencyNameProvider </item>
+			<item> Data </item>
+			<item> DataContentHandler </item>
+			<item> DataContentHandlerFactory </item>
+			<item> DataHandler </item>
+			<item> DatatypeConverter </item>
+			<item> DatatypeConverterInterface </item>
+			<item> DateFormatProvider </item>
+			<item> DateFormatSymbolsProvider </item>
+			<item> DecimalFormatSymbolsProvider </item>
+			<item> DeclaredType </item>
+			<item> DefaultRowSorter </item>
+			<item> DefaultValidationEventHandler </item>
+			<item> DeflaterInputStream </item>
+			<item> Deque </item>
+			<item> DescriptorKey </item>
+			<item> DescriptorRead </item>
+			<item> Desktop </item>
+			<item> Detail </item>
+			<item> DetailEntry </item>
+			<item> Diagnostic </item>
+			<item> DiagnosticCollector </item>
+			<item> DiagnosticListener </item>
+			<item> DigestMethod </item>
+			<item> DigestMethodParameterSpec </item>
+			<item> Dispatch </item>
+			<item> DOMCryptoContext </item>
+			<item> DomHandler </item>
+			<item> DOMSignContext </item>
+			<item> DOMStructure </item>
+			<item> DOMURIReference </item>
+			<item> DOMValidateContext </item>
+			<item> DropMode </item>
+			<item> ElementFilter </item>
+			<item> ElementKind </item>
+			<item> ElementKindVisitor6 </item>
+			<item> Elements </item>
+			<item> ElementScanner6 </item>
+			<item> ElementVisitor </item>
+			<item> EndDocument </item>
+			<item> EndElement </item>
+			<item> Endpoint </item>
+			<item> EntityDeclaration </item>
+			<item> ErrorType </item>
+			<item> EventException </item>
+			<item> EventFilter </item>
+			<item> EventReaderDelegate </item>
+			<item> EventTarget </item>
+			<item> ExcC14NParameterSpec </item>
+			<item> ExecutableElement </item>
+			<item> ExecutableType </item>
+			<item> FileDataSource </item>
+			<item> FileNameExtensionFilter </item>
+			<item> FileObject </item>
+			<item> Filer </item>
+			<item> FilerException </item>
+			<item> FileTypeMap </item>
+			<item> ForwardingFileObject </item>
+			<item> ForwardingJavaFileManager </item>
+			<item> ForwardingJavaFileObject </item>
+			<item> Generated </item>
+			<item> GridBagLayoutInfo </item>
+			<item> GroupLayout </item>
+			<item> HandlerChain </item>
+			<item> HandlerResolver </item>
+			<item> HexBinaryAdapter </item>
+			<item> HMACParameterSpec </item>
+			<item> Holder </item>
+			<item> HTTPBinding </item>
+			<item> HttpCookie </item>
+			<item> HTTPException </item>
+			<item> IDN </item>
+			<item> ImmutableDescriptor </item>
+			<item> InflaterOutputStream </item>
+			<item> InitParam </item>
+			<item> InterfaceAddress </item>
+			<item> Invocable </item>
+			<item> IOError </item>
+			<item> JavaCompiler </item>
+			<item> JavaFileManager </item>
+			<item> JavaFileObject </item>
+			<item> JAXBContext </item>
+			<item> JAXBElement </item>
+			<item> JAXBException </item>
+			<item> JAXBIntrospector </item>
+			<item> JAXBResult </item>
+			<item> JAXBSource </item>
+			<item> JMX </item>
+			<item> JMXAddressable </item>
+			<item> KeyInfo </item>
+			<item> KeyInfoFactory </item>
+			<item> KeyName </item>
+			<item> KeySelector </item>
+			<item> KeySelectorException </item>
+			<item> KeySelectorResult </item>
+			<item> KeyValue </item>
+			<item> LayoutPath </item>
+			<item> LayoutStyle </item>
+			<item> LinearGradientPaint </item>
+			<item> LinkedBlockingDeque </item>
+			<item> LocaleNameProvider </item>
+			<item> LocaleServiceProvider </item>
+			<item> Location </item>
+			<item> LockInfo </item>
+			<item> LogicalHandler </item>
+			<item> LogicalMessage </item>
+			<item> LogicalMessageContext </item>
+			<item> MailcapCommandMap </item>
+			<item> Marshaller </item>
+			<item> MessageContext </item>
+			<item> MessageFactory </item>
+			<item> Messager </item>
+			<item> MimeHeader </item>
+			<item> MimeHeaders </item>
+			<item> MimeType </item>
+			<item> MimeTypeParameterList </item>
+			<item> MimetypesFileTypeMap </item>
+			<item> MirroredTypeException </item>
+			<item> MirroredTypesException </item>
+			<item> MLetContent </item>
+			<item> MonitorInfo </item>
+			<item> MultipleGradientPaint </item>
+			<item> MutationEvent </item>
+			<item> MXBean </item>
+			<item> Namespace </item>
+			<item> NavigableMap </item>
+			<item> NavigableSet </item>
+			<item> NClob </item>
+			<item> NestingKind </item>
+			<item> NodeSetData </item>
+			<item> NormalizedStringAdapter </item>
+			<item> Normalizer </item>
+			<item> NoSuchMechanismException </item>
+			<item> NotationDeclaration </item>
+			<item> NotIdentifiableEvent </item>
+			<item> NotIdentifiableEventImpl </item>
+			<item> NoType </item>
+			<item> NullType </item>
+			<item> NumberFormatProvider </item>
+			<item> OctetStreamData </item>
+			<item> Oneway </item>
+			<item> OptionChecker </item>
+			<item> PackageElement </item>
+			<item> ParseConversionEvent </item>
+			<item> ParseConversionEventImpl </item>
+			<item> Path2D </item>
+			<item> PGPData </item>
+			<item> PolicySpi </item>
+			<item> PortInfo </item>
+			<item> PostConstruct </item>
+			<item> PreDestroy </item>
+			<item> PrimitiveType </item>
+			<item> PrintConversionEvent </item>
+			<item> PrintConversionEventImpl </item>
+			<item> ProcessingEnvironment </item>
+			<item> Processor </item>
+			<item> PropertyException </item>
+			<item> RadialGradientPaint </item>
+			<item> ReferenceType </item>
+			<item> RequestWrapper </item>
+			<item> Resource </item>
+			<item> Resources </item>
+			<item> Response </item>
+			<item> ResponseWrapper </item>
+			<item> RetrievalMethod </item>
+			<item> RoundEnvironment </item>
+			<item> RowFilter </item>
+			<item> RowId </item>
+			<item> RowIdLifetime </item>
+			<item> RowSorter </item>
+			<item> RowSorterEvent </item>
+			<item> RowSorterListener </item>
+			<item> RunnableFuture </item>
+			<item> RunnableScheduledFuture </item>
+			<item> SAAJMetaFactory </item>
+			<item> SAAJResult </item>
+			<item> SchemaOutputResolver </item>
+			<item> ScriptContext </item>
+			<item> ScriptEngine </item>
+			<item> ScriptEngineFactory </item>
+			<item> ScriptEngineManager </item>
+			<item> ScriptException </item>
+			<item> Service </item>
+			<item> ServiceConfigurationError </item>
+			<item> ServiceDelegate </item>
+			<item> ServiceLoader </item>
+			<item> ServiceMode </item>
+			<item> SignatureMethod </item>
+			<item> SignatureMethodParameterSpec </item>
+			<item> SignatureProperties </item>
+			<item> SignatureProperty </item>
+			<item> SignedInfo </item>
+			<item> SimpleAnnotationValueVisitor6 </item>
+			<item> SimpleBindings </item>
+			<item> SimpleElementVisitor6 </item>
+			<item> SimpleJavaFileObject </item>
+			<item> SimpleScriptContext </item>
+			<item> SimpleTypeVisitor6 </item>
+			<item> SOAPBinding </item>
+			<item> SOAPBinding </item>
+			<item> SOAPBody </item>
+			<item> SOAPBodyElement </item>
+			<item> SOAPConnection </item>
+			<item> SOAPConnectionFactory </item>
+			<item> SOAPConstants </item>
+			<item> SOAPElement </item>
+			<item> SOAPElementFactory </item>
+			<item> SOAPEnvelope </item>
+			<item> SOAPException </item>
+			<item> SOAPFactory </item>
+			<item> SOAPFault </item>
+			<item> SOAPFaultElement </item>
+			<item> SOAPFaultException </item>
+			<item> SOAPHandler </item>
+			<item> SOAPHeader </item>
+			<item> SOAPHeaderElement </item>
+			<item> SOAPMessage </item>
+			<item> SOAPMessageContext </item>
+			<item> SOAPMessageHandler </item>
+			<item> SOAPMessageHandlers </item>
+			<item> SOAPPart </item>
+			<item> SortOrder </item>
+			<item> SourceVersion </item>
+			<item> SplashScreen </item>
+			<item> SQLClientInfoException </item>
+			<item> SQLDataException </item>
+			<item> SQLFeatureNotSupportedException </item>
+			<item> SQLIntegrityConstraintViolationException </item>
+			<item> SQLInvalidAuthorizationSpecException </item>
+			<item> SQLNonTransientConnectionException </item>
+			<item> SQLNonTransientException </item>
+			<item> SQLRecoverableException </item>
+			<item> SQLSyntaxErrorException </item>
+			<item> SQLTimeoutException </item>
+			<item> SQLTransactionRollbackException </item>
+			<item> SQLTransientConnectionException </item>
+			<item> SQLTransientException </item>
+			<item> SQLXML </item>
+			<item> SSLParameters </item>
+			<item> StandardEmitterMBean </item>
+			<item> StandardJavaFileManager </item>
+			<item> StandardLocation </item>
+			<item> StartDocument </item>
+			<item> StartElement </item>
+			<item> StatementEvent </item>
+			<item> StatementEventListener </item>
+			<item> StAXResult </item>
+			<item> StAXSource </item>
+			<item> StreamFilter </item>
+			<item> StreamReaderDelegate </item>
+			<item> SupportedAnnotationTypes </item>
+			<item> SupportedOptions </item>
+			<item> SupportedSourceVersion </item>
+			<item> SwingWorker </item>
+			<item> SystemTray </item>
+			<item> TableRowSorter </item>
+			<item> TableStringConverter </item>
+			<item> TimeZoneNameProvider </item>
+			<item> Tool </item>
+			<item> ToolProvider </item>
+			<item> Transform </item>
+			<item> TransformException </item>
+			<item> TransformParameterSpec </item>
+			<item> TransformService </item>
+			<item> TrayIcon </item>
+			<item> TypeConstraintException </item>
+			<item> TypeElement </item>
+			<item> TypeKind </item>
+			<item> TypeKindVisitor6 </item>
+			<item> TypeMirror </item>
+			<item> TypeParameterElement </item>
+			<item> TypeVisitor </item>
+			<item> UIEvent </item>
+			<item> UnknownAnnotationValueException </item>
+			<item> UnknownElementException </item>
+			<item> UnknownTypeException </item>
+			<item> Unmarshaller </item>
+			<item> UnmarshallerHandler </item>
+			<item> UnsupportedDataTypeException </item>
+			<item> URIDereferencer </item>
+			<item> URIParameter </item>
+			<item> URIReference </item>
+			<item> URIReferenceException </item>
+			<item> URLDataSource </item>
+			<item> ValidationEvent </item>
+			<item> ValidationEventCollector </item>
+			<item> ValidationEventHandler </item>
+			<item> ValidationEventImpl </item>
+			<item> ValidationEventLocator </item>
+			<item> ValidationEventLocatorImpl </item>
+			<item> ValidationException </item>
+			<item> VariableElement </item>
+			<item> W3CDomHandler </item>
+			<item> WebEndpoint </item>
+			<item> WebFault </item>
+			<item> WebMethod </item>
+			<item> WebParam </item>
+			<item> WebResult </item>
+			<item> WebService </item>
+			<item> WebServiceClient </item>
+			<item> WebServiceContext </item>
+			<item> WebServiceException </item>
+			<item> WebServicePermission </item>
+			<item> WebServiceProvider </item>
+			<item> WebServiceRef </item>
+			<item> WebServiceRefs </item>
+			<item> Wrapper </item>
+			<item> X509Data </item>
+			<item> X509IssuerSerial </item>
+			<item> XmlAccessOrder </item>
+			<item> XmlAccessorOrder </item>
+			<item> XmlAccessorType </item>
+			<item> XmlAccessType </item>
+			<item> XmlAdapter </item>
+			<item> XmlAnyAttribute </item>
+			<item> XmlAnyElement </item>
+			<item> XmlAttachmentRef </item>
+			<item> XmlAttribute </item>
+			<item> XMLCryptoContext </item>
+			<item> XmlElement </item>
+			<item> XmlElementDecl </item>
+			<item> XmlElementRef </item>
+			<item> XmlElementRefs </item>
+			<item> XmlElements </item>
+			<item> XmlElementWrapper </item>
+			<item> XmlEnum </item>
+			<item> XmlEnumValue </item>
+			<item> XMLEvent </item>
+			<item> XMLEventAllocator </item>
+			<item> XMLEventConsumer </item>
+			<item> XMLEventFactory </item>
+			<item> XMLEventReader </item>
+			<item> XMLEventWriter </item>
+			<item> XmlID </item>
+			<item> XmlIDREF </item>
+			<item> XmlInlineBinaryData </item>
+			<item> XMLInputFactory </item>
+			<item> XmlJavaTypeAdapter </item>
+			<item> XmlJavaTypeAdapters </item>
+			<item> XmlList </item>
+			<item> XmlMimeType </item>
+			<item> XmlMixed </item>
+			<item> XmlNs </item>
+			<item> XmlNsForm </item>
+			<item> XMLObject </item>
+			<item> XMLOutputFactory </item>
+			<item> XmlRegistry </item>
+			<item> XMLReporter </item>
+			<item> XMLResolver </item>
+			<item> XmlRootElement </item>
+			<item> XmlSchema </item>
+			<item> XmlSchemaType </item>
+			<item> XmlSchemaTypes </item>
+			<item> XMLSignature </item>
+			<item> XMLSignatureException </item>
+			<item> XMLSignatureFactory </item>
+			<item> XMLSignContext </item>
+			<item> XMLStreamConstants </item>
+			<item> XMLStreamException </item>
+			<item> XMLStreamReader </item>
+			<item> XMLStreamWriter </item>
+			<item> XMLStructure </item>
+			<item> XmlTransient </item>
+			<item> XmlType </item>
+			<item> XMLValidateContext </item>
+			<item> XmlValue </item>
+			<item> XPathFilter2ParameterSpec </item>
+			<item> XPathFilterParameterSpec </item>
+			<item> XPathType </item>
+			<item> XSLTTransformParameterSpec </item>
+			<item> ZipError </item>
+			
+<!-- 			end new classes -->
+		</list>
+		<list name="keywords">
+			<item> abstract </item>
+			<item> break </item>
+			<item> case </item>
+			<item> catch </item>
+			<item> class </item>
+			<item> continue </item>
+			<item> default </item>
+			<item> do </item>
+			<item> else </item>
+			<item> enum </item>
+			<item> extends </item>
+			<item> false </item>
+			<item> finally </item>
+			<item> for </item>
+			<item> goto </item>
+			<item> if </item>
+			<item> implements </item>
+			<item> instanceof </item>
+			<item> @interface </item>
+			<item> interface </item>
+			<item> native </item>
+			<item> new </item>
+			<item> null </item>
+			<item> private </item>
+			<item> protected </item>
+			<item> public </item>
+			<item> return </item>
+			<item> super </item>
+			<item> strictfp </item>
+			<item> switch </item>
+			<item> synchronized </item>
+			<item> this </item>
+			<item> throws </item>
+			<item> throw </item>
+			<item> transient </item>
+			<item> true </item>
+			<item> try </item>
+			<item> volatile </item>
+			<item> while </item>
+		</list>
+		<list name="types">
+			<item> boolean </item>
+			<item> byte </item>
+			<item> char </item>
+			<item> const </item>
+			<item> double </item>
+			<item> final </item>
+			<item> float </item>
+			<item> int </item>
+			<item> long </item>
+			<item> short </item>
+			<item> static </item>
+			<item> void </item>
+		</list>
+		<contexts>
+			<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+				<!-- Comment next line if you don't use Javadoc tool -->
+				<IncludeRules context="##Javadoc"/>
+				<keyword attribute="Keyword" context="#stay" String="keywords"/>
+				<keyword attribute="Data Type" context="#stay" String="types"/>
+				<keyword attribute="Java15" context="#stay" String="java15"/>
+				<Float attribute="Float" context="#stay">
+					<AnyChar String="fF" attribute="Float" context="#stay"/>
+				</Float>
+				<HlCOct attribute="Octal" context="#stay"/>
+				<HlCHex attribute="Hex" context="#stay"/>
+				<Int attribute="Decimal" context="#stay">
+					<StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+				</Int>
+				<HlCChar attribute="Char" context="#stay"/>
+				<RegExpr attribute="Char" context="#stay" String="'\\u[0-9a-fA-F]{4}'"/>
+				<RegExpr attribute="Decimal" context="#stay" String="//\s*BEGIN.*$" beginRegion="Region1"/>
+				<RegExpr attribute="Decimal" context="#stay" String="//\s*END.*$" endRegion="Region1"/>
+				<DetectChar attribute="String" context="String" char="&quot;"/>
+				<RegExpr attribute="Function" context="EnterPrintf" String="\.(format|printf)\b"/>
+				<Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+				<Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+				<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
+				<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
+				<RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" />
+				<RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" />
+				<RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" />
+				<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
+				<RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />
+				<DetectChar attribute="Symbol" context="InFunctionCall" char="("/>
+				<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+			</context>
+			<context attribute="Normal Text" lineEndContext="#stay" name="InFunctionCall">
+				<IncludeRules context="Normal"/>
+				<DetectChar attribute="Symbol" context="#pop" char=")"/>
+			</context>
+			<context attribute="String" lineEndContext="#pop" name="String">
+				<LineContinue attribute="String" context="#stay"/>
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Char" context="#stay" String="\\u[0-9a-fA-F]{4}"/>
+				<DetectChar attribute="String" context="#pop" char="&quot;"/>
+			</context>
+			<context attribute="Normal Text" lineEndContext="#stay" name="EnterPrintf" fallthrough="true" fallthroughContext="#pop">
+				<DetectChar attribute="Symbol" context="Printf" char="("/>
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
+			</context>
+			<context attribute="Printf" lineEndContext="#stay" name="Printf">
+				<DetectChar attribute="String" context="PrintfString" char="&quot;"/>
+				<IncludeRules context="InFunctionCall"/>
+			</context>
+			<context attribute="PrintfString" lineEndContext="#pop" name="PrintfString">
+				<LineContinue attribute="String" context="#stay"/>
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<DetectChar attribute="String" context="#pop" char="&quot;"/>
+				<RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(\.\d+)?[a-hosxA-CEGHSX]" />
+				<RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)" />
+				<RegExpr attribute="String Char" context="#stay" String="%(%|n)" />
+			</context>
+			<context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
+				<RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />
+			</context>
+			<context attribute="Normal Text" lineEndContext="#pop" name="StaticImports">
+				<RegExpr attribute="StaticImports" context="#pop" String="\s*.*;" />
+			</context>
+			<context attribute="Normal Text" lineEndContext="#pop" name="Imports">
+				<RegExpr attribute="Imports" context="#pop" String="\s*.*;" />
+			</context>
+			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
+			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+			</context>
+		</contexts>
+		<itemDatas>
+			<itemData name="Normal Text"  defStyleNum="dsNormal"/>
+			<itemData name="Keyword"      defStyleNum="dsKeyword"/>
+			<itemData name="Function"     defStyleNum="dsFunction"/>
+			<itemData name="StaticImports"      defStyleNum="dsKeyword" color="#800080" selColor="#FFFFFF" bold="0" italic="0"/>
+			<itemData name="Imports"      defStyleNum="dsKeyword" color="#808000" selColor="#FFFFFF" bold="0" italic="0"/>
+			<itemData name="Data Type"    defStyleNum="dsDataType"/>
+			<itemData name="Decimal"      defStyleNum="dsDecVal"/>
+			<itemData name="Octal"        defStyleNum="dsBaseN"/>
+			<itemData name="Hex"          defStyleNum="dsBaseN"/>
+			<itemData name="Float"        defStyleNum="dsFloat"/>
+			<itemData name="Char"         defStyleNum="dsChar"/>
+			<itemData name="String"       defStyleNum="dsString"/>
+			<itemData name="String Char"  defStyleNum="dsChar"/>
+			<itemData name="PrintfString" defStyleNum="dsString"/>
+			<itemData name="Comment"      defStyleNum="dsComment"/>
+			<itemData name="Symbol"       defStyleNum="dsNormal"/>
+			<itemData name="Java15"       defStyleNum="dsNormal" color="#0095FF" selColor="#FFFFFF" bold="1" italic="0"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="//"/>
+			<comment name="multiLine" start="/*" end="*/"/>
+		</comments>
+		<keywords casesensitive="1"/>
+	</general>
+</language>
diff --git a/src/plugins/genericeditor/XML/javadoc.xml b/src/plugins/genericeditor/XML/javadoc.xml
new file mode 100644
index 00000000000..ca20b5808cf
--- /dev/null
+++ b/src/plugins/genericeditor/XML/javadoc.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Javadoc" version="1.04" kateversion="2.4" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+	<highlighting>
+		<contexts>
+			<context name="Start" attribute="Normal Text" lineEndContext="#stay">
+				<IncludeRules context="FindJavadoc" />
+			</context>
+			<context name="FindJavadoc" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect attribute="JavadocFS" context="#stay" String="/**/"/>
+				<StringDetect attribute="JavadocFS" context="JavadocFSar" String="/**" beginRegion="Javadoc"/>
+			</context>
+			<context attribute="JavadocFS" lineEndContext="#stay" name="JavadocFSar">
+				<Detect2Chars attribute="JavadocFS" context="#pop" char="*" char1="/" endRegion="Javadoc"/>
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="(!|\?)" />
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="(\.\s*$)" />
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="(\.\s)(?![\da-z])" />
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="\**\s*(?=@(author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version)(\s|$))" firstNonSpace="true"/>
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@docRoot}" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@inheritDoc}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link&#009;" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain&#009;" />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
+				<IncludeRules context="##HTML"/>
+			</context>
+			<context attribute="Javadoc" lineEndContext="#stay" name="Javadocar">
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop" char="*" char1="/" endRegion="Javadoc"/>
+				<RegExpr attribute="JavadocFS" context="#stay" String="\*+(?!/)" firstNonSpace="true"/>
+				<StringDetect attribute="BlockTag" context="#stay" String="@author " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@deprecated " />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@exception " />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@param " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@return " />
+				<StringDetect attribute="BlockTag" context="SeeTag" String="@see "/>
+				<StringDetect attribute="BlockTag" context="#stay" String="@serial " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialData " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialField " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@since " />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@throws " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@version " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@author&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@deprecated&#009;" />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@exception&#009;" />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@param&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@return&#009;" />
+				<StringDetect attribute="BlockTag" context="SeeTag" String="@see&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serial&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialData&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialField&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@since&#009;" />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@throws&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@version&#009;" />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@docRoot}" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@inheritDoc}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link&#009;" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain&#009;" />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
+				<IncludeRules context="##HTML"/>
+			</context>
+			<context attribute="Javadoc" lineEndContext="#pop" name="JavadocParam">
+				<DetectSpaces />
+				<RegExpr attribute="JavadocParam" context="#pop#pop" String="\S*(?=\*/)" />
+				<RegExpr attribute="JavadocParam" context="#pop" String="\S*(\s|$)" />
+			</context>
+			<context attribute="InlineTag" lineEndContext="#pop" name="InlineTagar">
+				<DetectChar attribute="InlineTag" context="#pop" char="}" />
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" />
+				<IncludeRules context="##HTML"/>
+			</context>
+			<context attribute="InlineTag" lineEndContext="#pop" name="LiteralTagar">
+				<DetectChar attribute="InlineTag" context="#pop" char="}" />
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" />
+			</context>
+			<context attribute="SeeTag" lineEndContext="#pop" name="SeeTag">
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" />
+				<IncludeRules context="##HTML"/>
+			</context>
+		</contexts>
+		<itemDatas>
+			<itemData name="Normal Text"  defStyleNum="dsNormal"/>
+			<itemData name="BlockTag"     defStyleNum="dsKeyword" color="#808080" selColor="#FFFFFF" bold="1" italic="0"/>
+			<itemData name="InlineTag"    defStyleNum="dsKeyword" color="#808080" selColor="#FFFFFF" bold="0" italic="0"/>
+			<itemData name="JavadocParam" defStyleNum="dsKeyword" color="#008080" selColor="#FFFFFF" bold="0" italic="1"/>
+			<itemData name="SeeTag"       defStyleNum="dsKeyword" color="#008080" selColor="#FFFFFF" bold="0" italic="1"/>
+			<itemData name="JavadocFS"    defStyleNum="dsComment" color="#008000" selColor="#FFFFFF" bold="1" italic="0"/>
+			<itemData name="Javadoc"      defStyleNum="dsComment" color="#008000" selColor="#FFFFFF"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<keywords casesensitive="1"/>
+	</general>
+</language>
diff --git a/src/plugins/genericeditor/XML/javascript.xml b/src/plugins/genericeditor/XML/javascript.xml
new file mode 100644
index 00000000000..be2e33d8bdf
--- /dev/null
+++ b/src/plugins/genericeditor/XML/javascript.xml
@@ -0,0 +1,503 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Author: Anders Lund <anders@alweb.dk> //-->
+<!-- Minor changes: Joseph Wenninger <jowenn@kde.org> //-->
+<!-- Full JavaScript 1.0 support by Whitehawk Stormchaser //-->
+<language name="JavaScript" version="1.13" kateversion="2.3" section="Scripts" extensions="*.js" mimetype="text/x-javascript;application/x-javascript" author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
+  <highlighting>
+    <list name="keywords">
+        <item> if </item>
+        <item> else </item>
+        <item> for </item>
+        <item> in </item>
+        <item> while </item>
+        <item> do </item>
+        <item> continue </item>
+        <item> break </item>
+        <item> with </item>
+        <item> try </item>
+        <item> catch </item>
+        <item> finally </item>
+        <item> switch </item>
+        <item> case </item>
+        <item> new </item>
+        <item> var </item>
+        <item> function </item>
+        <item> return </item>
+        <item> delete </item>
+        <item> true </item>
+        <item> false </item>
+        <item> void </item>
+        <item> throw </item>
+        <item> typeof </item>
+        <item> const </item>
+        <item> default </item>
+    </list>
+    <list name="functions">
+        <item> escape </item>
+        <item> isFinite </item>
+        <item> isNaN </item>
+        <item> Number </item>
+        <item> parseFloat </item>
+        <item> parseInt </item>
+        <item> reload </item>
+        <item> taint </item>
+        <item> unescape </item>
+        <item> untaint </item>
+        <item> write </item>
+        </list>
+    <list name="objects">
+        <item>Anchor</item>
+        <item>Applet</item>
+        <item>Area</item>
+        <item>Array</item>
+        <item>Boolean</item>
+        <item>Button</item>
+        <item>Checkbox</item>
+        <item>Date</item>
+        <item>document</item>
+        <item>window</item>
+        <item>Image</item>
+        <item>FileUpload</item>
+        <item>Form</item>
+        <item>Frame</item>
+        <item>Function</item>
+        <item>Hidden</item>
+        <item>Link</item>
+        <item>MimeType</item>
+        <item>Math</item>
+        <item>Max</item>
+        <item>Min</item>
+        <item>Layer</item>
+        <item>navigator</item>
+        <item>Object</item>
+        <item>Password</item>
+        <item>Plugin</item>
+        <item>Radio</item>
+        <item>RegExp</item>
+        <item>Reset</item>
+        <item>Screen</item>
+        <item>Select</item>
+        <item>String</item>
+        <item>Text</item>
+        <item>Textarea</item>
+        <item>this</item>
+        <item>Window</item>
+        </list>
+    <list name="math">
+        <item> abs </item>
+        <item> acos </item>
+        <item> asin </item>
+        <item> atan </item>
+        <item> atan2 </item>
+        <item> ceil </item>
+        <item> cos </item>
+        <item> ctg </item>
+        <item> E </item>
+        <item> exp </item>
+        <item> floor </item>
+        <item> LN2 </item>
+        <item> LN10 </item>
+        <item> log </item>
+        <item> LOG2E </item>
+        <item> LOG10E </item>
+        <item> PI </item>
+        <item> pow </item>
+        <item> round </item>
+        <item> sin </item>
+        <item> sqrt </item>
+        <item> SQRT1_2 </item>
+        <item> SQRT2 </item>
+        <item> tan </item>
+    </list>
+    <list name="events">
+         <item>onAbort</item>
+         <item>onBlur</item>
+         <item>onChange</item>
+         <item>onClick</item>
+         <item>onError</item>
+         <item>onFocus</item>
+         <item>onLoad</item>
+         <item>onMouseOut</item>
+         <item>onMouseOver</item>
+         <item>onReset</item>
+         <item>onSelect</item>
+         <item>onSubmit</item>
+         <item>onUnload</item>
+    </list>
+    <list name="methods">
+        <item>above</item>
+        <item>action</item>
+        <item>alinkColor</item>
+        <item>alert</item>
+        <item>anchor</item>
+        <item>anchors</item>
+        <item>appCodeName</item>
+        <item>applets</item>
+        <item>apply</item>
+        <item>appName</item>
+        <item>appVersion</item>
+        <item>argument</item>
+        <item>arguments</item>
+        <item>arity</item>
+        <item>availHeight</item>
+        <item>availWidth</item>
+        <item>back</item>
+        <item>background</item>
+        <item>below</item>
+        <item>bgColor</item>
+        <item>border</item>
+        <item>big</item>
+        <item>blink</item>
+        <item>blur</item>
+        <item>bold</item>
+        <item>border</item>
+        <item>call</item>
+        <item>caller</item>
+        <item>charAt</item>
+        <item>charCodeAt</item>
+        <item>checked</item>
+        <item>clearInterval</item>
+        <item>clearTimeout</item>
+        <item>click</item>
+        <item>clip</item>
+        <item>close</item>
+        <item>closed</item>
+        <item>colorDepth</item>
+        <item>complete</item>
+        <item>compile</item>
+        <item>constructor</item>
+        <item>confirm</item>
+        <item>cookie</item>
+        <item>current</item>
+        <item>cursor</item>
+        <item>data</item>
+        <item>defaultChecked</item>
+        <item>defaultSelected</item>
+        <item>defaultStatus</item>
+        <item>defaultValue</item>
+        <item>description</item>
+        <item>disableExternalCapture</item>
+        <item>domain</item>
+        <item>elements</item>
+        <item>embeds</item>
+        <item>enabledPlugin</item>
+        <item>enableExternalCapture</item>
+        <item>encoding</item>
+        <item>eval</item>
+        <item>exec</item>
+        <item>fgColor</item>
+        <item>filename</item>
+        <item>find</item>
+        <item>fixed</item>
+        <item>focus</item>
+        <item>fontcolor</item>
+        <item>fontsize</item>
+        <item>form</item>
+        <item>forms</item>
+        <item>formName</item>
+        <item>forward</item>
+        <item>frames</item>
+        <item>fromCharCode</item>
+        <item>getDate</item>
+        <item>getDay</item>
+        <item>getHours</item>
+        <item>getMiliseconds</item>
+        <item>getMinutes</item>
+        <item>getMonth</item>
+        <item>getSeconds</item>
+        <item>getSelection</item>
+        <item>getTime</item>
+        <item>getTimezoneOffset</item>
+        <item>getUTCDate</item>
+        <item>getUTCDay</item>
+        <item>getUTCFullYear</item>
+        <item>getUTCHours</item>
+        <item>getUTCMilliseconds</item>
+        <item>getUTCMinutes</item>
+        <item>getUTCMonth</item>
+        <item>getUTCSeconds</item>
+        <item>getYear</item>
+        <item>global</item>
+        <item>go</item>
+        <item>hash</item>
+        <item>height</item>
+        <item>history</item>
+        <item>home</item>
+        <item>host</item>
+        <item>hostname</item>
+        <item>href</item>
+        <item>hspace</item>
+        <item>ignoreCase</item>
+        <item>images</item>
+        <item>index</item>
+        <item>indexOf</item>
+        <item>innerHeight</item>
+        <item>innerWidth</item>
+        <item>input</item>
+        <item>italics</item>
+        <item>javaEnabled</item>
+        <item>join</item>
+        <item>language</item>
+        <item>lastIndex</item>
+        <item>lastIndexOf</item>
+        <item>lastModified</item>
+        <item>lastParen</item>
+        <item>layers</item>
+        <item>layerX</item>
+        <item>layerY</item>
+        <item>left</item>
+        <item>leftContext</item>
+        <item>length</item>
+        <item>link</item>
+        <item>linkColor</item>
+        <item>links</item>
+        <item>location</item>
+        <item>locationbar</item>
+        <item>load</item>
+        <item>lowsrc</item>
+        <item>match</item>
+        <item>MAX_VALUE</item>
+        <item>menubar</item>
+        <item>method</item>
+        <item>mimeTypes</item>
+        <item>MIN_VALUE</item>
+        <item>modifiers</item>
+        <item>moveAbove</item>
+        <item>moveBelow</item>
+        <item>moveBy</item>
+        <item>moveTo</item>
+        <item>moveToAbsolute</item>
+        <item>multiline</item>
+        <item>name</item>
+        <item>NaN</item>
+        <item>NEGATIVE_INFINITY</item>
+        <item>negative_infinity</item>
+        <item>next</item>
+        <item>open</item>
+        <item>opener</item>
+        <item>options</item>
+        <item>outerHeight</item>
+        <item>outerWidth</item>
+        <item>pageX</item>
+        <item>pageY</item>
+        <item>pageXoffset</item>
+        <item>pageYoffset</item>
+        <item>parent</item>
+        <item>parse</item>
+        <item>pathname</item>
+        <item>personalbar</item>
+        <item>pixelDepth</item>
+        <item>platform</item>
+        <item>plugins</item>
+        <item>pop</item>
+        <item>port</item>
+        <item>POSITIVE_INFINITY</item>
+        <item>positive_infinity</item>
+        <item>preference</item>
+        <item>previous</item>
+        <item>print</item>
+        <item>prompt</item>
+        <item>protocol</item>
+        <item>prototype</item>
+        <item>push</item>
+        <item>referrer</item>
+        <item>refresh</item>
+        <item>releaseEvents</item>
+        <item>reload</item>
+        <item>replace</item>
+        <item>reset</item>
+        <item>resizeBy</item>
+        <item>resizeTo</item>
+        <item>reverse</item>
+        <item>rightContext</item>
+        <item>screenX</item>
+        <item>screenY</item>
+        <item>scroll</item>
+        <item>scrollbar</item>
+        <item>scrollBy</item>
+        <item>scrollTo</item>
+        <item>search</item>
+        <item>select</item>
+        <item>selected</item>
+        <item>selectedIndex</item>
+        <item>self</item>
+        <item>setDate</item>
+        <item>setHours</item>
+        <item>setMinutes</item>
+        <item>setMonth</item>
+        <item>setSeconds</item>
+        <item>setTime</item>
+        <item>setTimeout</item>
+        <item>setUTCDate</item>
+        <item>setUTCDay</item>
+        <item>setUTCFullYear</item>
+        <item>setUTCHours</item>
+        <item>setUTCMilliseconds</item>
+        <item>setUTCMinutes</item>
+        <item>setUTCMonth</item>
+        <item>setUTCSeconds</item>
+        <item>setYear</item>
+        <item>shift</item>
+        <item>siblingAbove</item>
+        <item>siblingBelow</item>
+        <item>small</item>
+        <item>sort</item>
+        <item>source</item>
+        <item>splice</item>
+        <item>split</item>
+        <item>src</item>
+        <item>status</item>
+        <item>statusbar</item>
+        <item>strike</item>
+        <item>sub</item>
+        <item>submit</item>
+        <item>substr</item>
+        <item>substring</item>
+        <item>suffixes</item>
+        <item>sup</item>
+        <item>taintEnabled</item>
+        <item>target</item>
+        <item>test</item>
+        <item>text</item>
+        <item>title</item>
+        <item>toGMTString</item>
+        <item>toLocaleString</item>
+        <item>toLowerCase</item>
+        <item>toolbar</item>
+        <item>toSource</item>
+        <item>toString</item>
+        <item>top</item>
+        <item>toUpperCase</item>
+        <item>toUTCString</item>
+        <item>type</item>
+        <item>URL</item>
+        <item>unshift</item>
+        <item>unwatch</item>
+        <item>userAgent</item>
+        <item>UTC</item>
+        <item>value</item>
+        <item>valueOf</item>
+        <item>visibility</item>
+        <item>vlinkColor</item>
+        <item>vspace</item>
+        <item>width</item>
+        <item>watch</item>
+        <item>which</item>
+        <item>width</item>
+        <item>write</item>
+        <item>writeln</item>
+        <item>x</item>
+        <item>y</item>
+        <item>zIndex</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+	<DetectSpaces/>
+        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1"/>
+        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Objects" context="#stay" String="objects" />
+        <keyword attribute="Math" context="#stay" String="math" />
+        <keyword attribute="Events" context="#stay" String="events" />
+        <keyword attribute="Data Type" context="#stay" String="methods" />
+	<DetectIdentifier/>
+        <Float attribute="Float" context="#stay" />
+        <Int attribute="Decimal" context="#stay" />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String" context="String 1" char="'"/>
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="[=?:]" />
+        <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="\(" />
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+	<DetectIdentifier/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <LineContinue attribute="String" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="String Char" lineEndContext="#pop" name="String 1">
+        <DetectIdentifier/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <LineContinue attribute="String" context="#stay"/>
+        <DetectChar attribute="String Char" context="#pop" char="'"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
+        <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+      </context>
+
+      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
+        <RegExpr attribute="Regular Expression" context="#pop#pop#pop" String="/[ig]{0,2}" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[bB]" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[nrtvfDdSsWw]" />
+        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\." />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+        <AnyChar attribute="Pattern Internal Operator" context="#stay" String="?+*()|" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*" />
+        <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" />
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+      </context>
+      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[\[\]]" />
+        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
+      </context>
+
+      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" >
+	<DetectIdentifier />
+	<DetectSpaces />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Function" defStyleNum="dsFunction"/>
+      <itemData name="Objects" defStyleNum="dsKeyword" color="#008000" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Math" defStyleNum="dsKeyword" color="#DBA716" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Events" defStyleNum="dsKeyword" color="#F766D5" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Regular Expression" defStyleNum="dsOthers"   />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsFloat" />
+      <itemData name="Pattern Character Class" defStyleNum="dsBaseN" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/objectivec.xml b/src/plugins/genericeditor/XML/objectivec.xml
new file mode 100644
index 00000000000..0e931f7f001
--- /dev/null
+++ b/src/plugins/genericeditor/XML/objectivec.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Objective-C" version="1.07" kateversion="2.3" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
+  <highlighting>
+    <list name="keywords">
+      <item> break </item>
+      <item> case </item>
+      <item> continue </item>
+      <item> default </item>
+      <item> do </item>
+      <item> else </item>
+      <item> enum </item>
+      <item> extern </item>
+      <item> for </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> return </item>
+      <item> sizeof </item>
+      <item> struct </item>
+      <item> switch </item>
+      <item> typedef </item>
+      <item> union </item>
+      <item> while </item>
+      <item> @class </item>
+      <item> @defs </item>
+      <item> @encode </item>
+      <item> @end </item>
+      <item> @implementation </item>
+      <item> @interface </item>
+      <item> @private </item>
+      <item> @protected </item>
+      <item> @protocol </item>
+      <item> @public </item>
+      <item> @selector </item>
+      <item> self </item>
+      <item> super </item>
+    </list>
+    <list name="types">
+      <item> auto </item>
+      <item> char </item>
+      <item> const </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> register </item>
+      <item> short </item>
+      <item> signed </item>
+      <item> static </item>
+      <item> unsigned </item>
+      <item> void </item>
+      <item> volatile </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Default">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Int attribute="Decimal" context="#stay" >
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="^#"/>
+        <Detect2Chars attribute="String" context="String" char="@" char1="&quot;" />
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment"/>
+      <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+      </context>
+      <context attribute="Preprocessor" lineEndContext="Default" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="MultiLineCommentPrep" char="/" char1="*"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="MultiLineCommentPrep">
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword"  defStyleNum="dsKeyword"/>
+      <itemData name="Data Type"  defStyleNum="dsDataType"/>
+      <itemData name="Decimal"  defStyleNum="dsDecVal"/>
+      <itemData name="Octal"  defStyleNum="dsBaseN"/>
+      <itemData name="Hex"  defStyleNum="dsBaseN"/>
+      <itemData name="Float"  defStyleNum="dsFloat"/>
+      <itemData name="Char"  defStyleNum="dsChar"/>
+      <itemData name="String"  defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"  defStyleNum="dsComment"/>
+      <itemData name="Symbol"  defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor"  defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"  defStyleNum="dsOthers"/> <!--,Qt::darkYellow,Qt::yellow,false,false)); -->
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/perl.xml b/src/plugins/genericeditor/XML/perl.xml
new file mode 100644
index 00000000000..0b725045757
--- /dev/null
+++ b/src/plugins/genericeditor/XML/perl.xml
@@ -0,0 +1,833 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+   This file is part of the KDE project
+   Copyright (C) 2001, 2002, 2003, 2004 Anders Lund <anders@alweb.dk>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+
+   *** NOTICE ***
+   This file is maintained by Anders Lund <anders@alweb.dk>
+   Please do not commit changes without checking with me.
+
+   *** TODO ***
+
+   Work on the comment support in the REPLACEMENT part of s/// - we may support
+   the comment, if the line remainder does not contain the delimiter char.
+
+   Try to support ?PATTERN? (at least in one line, like if "\?(?=.*\?)" matches).
+
+   parse code behind '<<HEREDELIMITER' as code, or at least ignore it, to eol.
+   Requires the ability to pass the delimiter through a context level.
+
+   find a here delimiter like '*END*' (Shell.pm). Requires that when a regex is
+   inserting a dynamic string, it escapes [*(){}$[]
+
+   support for more regex extensions, such as (?>), (?{}), (?(cond)yes|no)
+
+   Enhance tr/// and y/// support.
+-->
+<language name="Perl" version="1.23" kateversion="2.4" section="Scripts" extensions="*.pl;*.pm" mimetype="application/x-perl;text/x-perl" author="Anders Lund (anders@alweb.dk)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <item> if </item>
+      <item> unless </item>
+      <item> else </item>
+      <item> elsif </item>
+      <item> while </item>
+      <item> until </item>
+      <item> for </item>
+      <item> each </item>
+      <item> foreach </item>
+      <item> next </item>
+      <item> last </item>
+      <item> break </item>
+      <item> continue </item>
+      <item> return </item>
+      <item> use </item>
+      <item> no </item>
+      <item> require </item>
+      <item> my </item>
+      <item> our </item>
+      <item> local </item>
+      <item> BEGIN </item>
+      <item> END </item>
+      <item>require</item>
+      <item> package </item>
+      <item> sub </item>
+      <item> do </item>
+      <item> __END__ </item>
+      <item> __DATA__ </item>
+      <item> __FILE__ </item>
+      <item> __LINE__ </item>
+      <item> __PACKAGE__ </item>
+    </list>
+    <list name="operators">
+      <item> = </item>
+      <item> != </item>
+      <item> ~= </item>
+      <item> += </item>
+      <item> -= </item>
+      <item> *= </item>
+      <item> /= </item>
+      <item> **= </item>
+      <item> |= </item>
+      <item> ||= </item>
+      <item> &amp;= </item>
+      <item> &amp;&amp;= </item>
+      <item> ?= </item>
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+     <!-- <item> / </item>//-->
+      <item> % </item>
+      <item> || </item>
+      <item> &amp;&amp; </item>
+      <item> | </item>
+      <item> &amp; </item>
+      <item> &lt; </item>
+      <item> &lt;&lt; </item>
+      <item> &gt; </item>
+      <item> &gt;&gt; </item>
+      <item> ^ </item>
+      <item> -&gt; </item>
+      <item> =&gt; </item>
+      <item> . </item>
+      <item> , </item>
+      <item> ; </item>
+      <item> :: </item>
+      <item> \ </item>
+      <item> and </item>
+      <item> or </item>
+      <item> not </item>
+      <item> eq </item>
+      <item> ne </item>
+      <item> lt </item>
+      <item> gt </item>
+      <item> le </item>
+      <item> ge </item>
+      <item> cmp </item>
+    </list>
+    <list name="functions">
+      <item>abs</item>
+      <item>accept</item>
+      <item>alarm</item>
+      <item>atan2</item>
+      <item>bind</item>
+      <item>binmode</item>
+      <item>bless</item>
+      <item>caller</item>
+      <item>chdir</item>
+      <item>chmod</item>
+      <item>chomp</item>
+      <item>chop</item>
+      <item>chown</item>
+      <item>chr</item>
+      <item>chroot</item>
+      <item>close</item>
+      <item>closedir</item>
+      <item>connect</item>
+      <item>cos</item>
+      <item>crypt</item>
+      <item>dbmclose</item>
+      <item>dbmopen</item>
+      <item>defined</item>
+      <item>delete</item>
+      <item>die</item>
+      <item>dump</item>
+      <item>endgrent</item>
+      <item>endhostent</item>
+      <item>endnetent</item>
+      <item>endprotoent</item>
+      <item>endpwent</item>
+      <item>endservent</item>
+      <item>eof</item>
+      <item>eval</item>
+      <item>exec</item>
+      <item>exists</item>
+      <item>exit</item>
+      <item>exp</item>
+      <item>fcntl</item>
+      <item>fileno</item>
+      <item>flock</item>
+      <item>fork</item>
+      <item>format</item>
+      <item>formline</item>
+      <item>getc</item>
+      <item>getgrent</item>
+      <item>getgrgid</item>
+      <item>getgrnam</item>
+      <item>gethostbyaddr</item>
+      <item>gethostbyname</item>
+      <item>gethostent</item>
+      <item>getlogin</item>
+      <item>getnetbyaddr</item>
+      <item>getnetbyname</item>
+      <item>getnetent</item>
+      <item>getpeername</item>
+      <item>getpgrp</item>
+      <item>getppid</item>
+      <item>getpriority</item>
+      <item>getprotobyname</item>
+      <item>getprotobynumber</item>
+      <item>getprotoent</item>
+      <item>getpwent</item>
+      <item>getpwnam</item>
+      <item>getpwuid</item>
+      <item>getservbyname</item>
+      <item>getservbyport</item>
+      <item>getservent</item>
+      <item>getsockname</item>
+      <item>getsockopt</item>
+      <item>glob</item>
+      <item>gmtime</item>
+      <item>goto</item>
+      <item>grep</item>
+      <item>hex</item>
+      <item>import</item>
+      <item>index</item>
+      <item>int</item>
+      <item>ioctl</item>
+      <item>join</item>
+      <item>keys</item>
+      <item>kill</item>
+      <item>last</item>
+      <item>lc</item>
+      <item>lcfirst</item>
+      <item>length</item>
+      <item>link</item>
+      <item>listen</item>
+      <item>localtime</item>
+      <item>lock</item>
+      <item>log</item>
+      <item>lstat</item>
+      <item>map</item>
+      <item>mkdir</item>
+      <item>msgctl</item>
+      <item>msgget</item>
+      <item>msgrcv</item>
+      <item>msgsnd</item>
+      <item>oct</item>
+      <item>open</item>
+      <item>opendir</item>
+      <item>ord</item>
+      <item>pack</item>
+      <item>package</item>
+      <item>pipe</item>
+      <item>pop</item>
+      <item>pos</item>
+      <item>print</item>
+      <item>printf</item>
+      <item>prototype</item>
+      <item>push</item>
+      <item>quotemeta</item>
+      <item>rand</item>
+      <item>read</item>
+      <item>readdir</item>
+      <item>readline</item>
+      <item>readlink</item>
+      <item>recv</item>
+      <item>redo</item>
+      <item>ref</item>
+      <item>rename</item>
+      <item>reset</item>
+      <item>return</item>
+      <item>reverse</item>
+      <item>rewinddir</item>
+      <item>rindex</item>
+      <item>rmdir</item>
+      <item>scalar</item>
+      <item>seek</item>
+      <item>seekdir</item>
+      <item>select</item>
+      <item>semctl</item>
+      <item>semget</item>
+      <item>semop</item>
+      <item>send</item>
+      <item>setgrent</item>
+      <item>sethostent</item>
+      <item>setnetent</item>
+      <item>setpgrp</item>
+      <item>setpriority</item>
+      <item>setprotoent</item>
+      <item>setpwent</item>
+      <item>setservent</item>
+      <item>setsockopt</item>
+      <item>shift</item>
+      <item>shmctl</item>
+      <item>shmget</item>
+      <item>shmread</item>
+      <item>shmwrite</item>
+      <item>shutdown</item>
+      <item>sin</item>
+      <item>sleep</item>
+      <item>socket</item>
+      <item>socketpair</item>
+      <item>sort</item>
+      <item>splice</item>
+      <item>split</item>
+      <item>sprintf</item>
+      <item>sqrt</item>
+      <item>srand</item>
+      <item>stat</item>
+      <item>study</item>
+      <item>sub</item>
+      <item>substr</item>
+      <item>symlink</item>
+      <item>syscall</item>
+      <item>sysread</item>
+      <item>sysseek</item>
+      <item>system</item>
+      <item>syswrite</item>
+      <item>tell</item>
+      <item>telldir</item>
+      <item>tie</item>
+      <item>time</item>
+      <item>times</item>
+      <item>truncate</item>
+      <item>uc</item>
+      <item>ucfirst</item>
+      <item>umask</item>
+      <item>undef</item>
+      <item>unlink</item>
+      <item>unpack</item>
+      <item>unshift</item>
+      <item>untie</item>
+      <item>utime</item>
+      <item>values</item>
+      <item>vec</item>
+      <item>wait</item>
+      <item>waitpid</item>
+      <item>wantarray</item>
+      <item>warn</item>
+      <item>write</item>
+    </list>
+    <list name="pragmas">
+      <item>strict</item>
+      <item>english</item>
+      <item>warnings</item>
+      <item>vars</item>
+      <item>subs</item>
+      <item>utf8</item>
+      <item>sigtrap</item>
+      <item>locale</item>
+      <item>open</item>
+      <item>less</item>
+      <item>integer</item>
+      <item>filetest</item>
+      <item>constant</item>
+      <item>bytes</item>
+      <item>diagnostics</item>
+    </list>
+    <contexts>
+      <context name="normal" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Keyword" context="#stay" String="^#!\/.*" />
+        <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
+        <StringDetect attribute="Keyword" context="#stay" String="__END__" firstNonSpace="true"/>
+        <RegExpr attribute="Keyword" context="sub_name_def" String="\bsub\s+" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Operator" context="#stay" String="operators" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Pragma" context="#stay" String="pragmas" />
+        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)(\s|$)" column="0" beginRegion="POD"/>
+        <DetectSpaces />
+        <DetectChar attribute="Comment" context="comment" char="#" />
+
+        <HlCOct attribute="Octal" context="slash_safe_escape" />
+        <HlCHex attribute="Hex" context="slash_safe_escape" />
+        <Float attribute="Float" context="slash_safe_escape" />
+        <Int attribute="Decimal" context="slash_safe_escape" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="\\([&quot;'])[^\1]" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="&amp;" char1="'" /><!-- ??? -->
+        <DetectChar attribute="Operator" context="ip_string" char="&quot;" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string" char="'"  beginRegion="String"/>
+        <DetectChar attribute="Operator" context="Backticked" char="`" />
+
+        <RegExpr attribute="Normal Text" context="find_variable" String="(?:[$@]\S|%[\w{]|\*[^\d\*{\$@%=(])" lookAhead="true" />
+
+        <RegExpr attribute="Keyword" context="#stay" String="&lt;[A-Z0-9_]+&gt;" />
+
+        <RegExpr attribute="Operator" context="find_here_document" String="\s*&lt;&lt;(?=\w+|\s*[&quot;'])" beginRegion="HereDocument" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*\}\s*/" endRegion="Block"/>
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*[)]\s*/" />
+        <RegExpr attribute="Function" context="sub_name_def" String="\w+::" />
+        <RegExpr attribute="Normal Text" context="#stay" String="\w+[=]" />
+
+        <RegExpr attribute="Operator" context="find_quoted" String="\bq(?=[qwx]?\s*[^\w\s])" />
+        <RegExpr attribute="Operator" context="find_subst" String="\bs(?=\s*[^\w\s\]})])" />
+        <RegExpr attribute="Operator" context="tr" String="\b(?:tr|y)\s*(?=[^\w\s\]})])" />
+
+        <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*/" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[&lt;&gt;&quot;':]/" />
+        <DetectChar attribute="Operator" context="pattern_slash" char="/" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="#stay" String="-[rwxoRWXOeszfdlpSbctugkTBMAC]" />
+
+        <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Block" />
+      </context>
+
+      <!-- ====== quoted construct central ===== -->
+      <context name="find_quoted" attribute="Normal Text" lineEndContext="#stay" >
+        <!-- NOTE - qx'not interpolated regex' does not cover newline between "qr" and "'" -->
+        <RegExpr attribute="Operator" context="string_6" String="x\s*(')" beginRegion="String" />
+        <AnyChar attribute="Operator" context="find_qqx" String="qx" />
+        <DetectChar attribute="Operator" context="find_qw" char="w" />
+        <DetectChar attribute="Operator" context="string_2" char="(" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_3" char="{" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_4" char="[" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_5" char="&lt;" beginRegion="String" />
+        <RegExpr attribute="Operator" context="string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+      <context name="find_qqx" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Operator" context="ip_string_2" char="(" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_3" char="{" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_4" char="[" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_5" char="&lt;" beginRegion="String" />
+        <RegExpr attribute="Operator" context="ip_string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+      <context name="find_qw" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Operator" context="quote_word_paren" char="(" beginRegion="Wordlist" />
+        <DetectChar attribute="Operator" context="quote_word_brace" char="{" beginRegion="Wordlist" />
+        <DetectChar attribute="Operator" context="quote_word_bracket" char="[" beginRegion="Wordlist" />
+        <RegExpr attribute="Operator" context="quote_word" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="Wordlist" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+
+      <!-- ====== Contexts for strings ===== -->
+      <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectIdentifier />
+        <RegExpr attribute="String Special Character" context="#stay" String="\\[UuLlEtnaefr]" />
+        <RegExpr attribute="String (interpolated)" context="#stay" String="\\." />
+        <RegExpr attribute="Normal Text" context="find_variable_unsafe" String="(?:[\$@]\S|%[\w{])" lookAhead="true" />
+      </context>
+      <context name="ip_string" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectChar attribute="Operator" context="#pop" char="&quot;" endRegion="String"/>
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_2" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="(" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_3" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="{" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_4" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="[" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_5" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="&lt;" char1="&gt;" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="&gt;" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_6" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true"  endRegion="String"/>
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <context name="string" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="'" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <DetectChar attribute="Operator" context="#pop" char="'" endRegion="String" />
+      </context>
+      <context name="string_2" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1=")" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="(" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop" char=")" endRegion="String" />
+      </context>
+      <context name="string_3" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="}" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="{" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="}" endRegion="String" />
+      </context>
+      <context name="string_4" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="]" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="[" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="]" endRegion="String" />
+      </context>
+      <context name="string_5" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="&lt;" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="String" context="#stay" char="\" char1="&gt;" />
+        <RangeDetect attribute="String" context="#stay" char="&lt;" char1="&gt;" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="&gt;" endRegion="String" />
+      </context>
+      <context name="string_6" attribute="String" lineEndContext="#stay" dynamic="true">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RegExpr attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/>
+        <DetectChar attribute="Operator" context="#pop#pop" char="1" dynamic="true" endRegion="String" />
+      </context>
+
+      <!-- ====== contexts for  s/// ====== -->
+      <context name="find_subst" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <DetectChar attribute="Operator" context="subst_curlybrace_pattern" char="{" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_paren_pattern" char="(" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_bracket_pattern" char="[" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_sq_pattern" char="'" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="subst_slash_pattern" String="([^\w\s[\]{}()])" beginRegion="Pattern" />
+      </context>
+
+      <!-- Fully parse s {} {}.
+           This means that
+           - comments are legal between PATTERN and REPLACEMENT
+           - REPLACEMENT can contain resursive {} blocks -->
+      <context name="subst_curlybrace_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_middle" char="}" endRegion="Pattern" />
+      </context>
+      <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr attribute="Comment" context="#stay" String="#.*$" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Normal Text" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\}[cegimosx]*" endRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
+        <DetectChar attribute="String (interpolated)" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Block" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_paren_replace" char="}" endRegion="Pattern" />
+      </context>
+      <context name="subst_paren_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Operator" context="#stay" char="(" beginRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\)[cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" />
+      </context>
+      <context name="subst_bracket_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Operator" context="#stay" char="[" beginRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\][cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_slash_pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
+        <RegExpr attribute="Operator" context="subst_slash_replace" String="(%1)" dynamic="true" endRegion="Pattern" beginRegion="Replacement" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="subst_slash_replace" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1[cegimosx]*" dynamic="true" endRegion="Replacement" />
+        <IncludeRules context="ipstring_internal" />
+
+      </context>
+
+      <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal" />
+        <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" />
+      </context>
+      <context name="subst_sq_replace" attribute="String" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="'[cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="tr" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Pattern" context="#pop" String="([^)]*\)\s*\(?:[^)]*\)" />
+        <RegExpr attribute="Pattern" context="#pop" String="{[^}]*\}\s*\{[^}]*\}" />
+        <RegExpr attribute="Pattern" context="#pop" String="\[[^}]*\]\s*\[[^\]]*\]" />
+        <RegExpr attribute="Pattern" context="#pop" String="([^a-zA-Z0-9_\s[\]{}()]).*\1.*\1" minimal="true"/>
+      </context>
+
+      <!-- ====== PATTERNs ====== -->
+      <context name="find_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <DetectChar attribute="Operator" context="pattern_brace" char="{" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_paren" char="(" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_bracket" char="[" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_sq" char="'" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="pattern" String="([^\w\s])" beginRegion="Pattern" />
+      </context>
+      <context name="pattern_slash" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <RegExpr attribute="Operator" context="#pop" String="/[cgimosx]*" endRegion="Pattern" />
+      </context>
+      <context name="pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
+        <RegExpr attribute="Operator" context="#pop#pop" String="%1[cgimosx]*" dynamic="true" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\%1)" dynamic="true" />
+      </context>
+      <context name="pattern_brace" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\}[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_bracket" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\][cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_paren" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\)[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_sq" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="'[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal" />
+      </context>
+
+      <!-- rules internal stuff wrt regex patterns -->
+      <context name="regex_pattern_internal_rules_1" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="#.*$" firstNonSpace="true" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[anDdSsWw]" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[ABbEGLlNUuQdQZz]" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\\[\d]+" />
+        <RegExpr attribute="Pattern" context="#stay" String="\\." />
+      </context>
+      <context name="regex_pattern_internal_rules_2" lineEndContext="#stay">
+        <Detect2Chars attribute="Pattern Internal Operator" context="pat_ext" char="(" char1="?" />
+        <DetectChar attribute="Pattern Internal Operator" context="pat_char_class" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="[()?^*+|]" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
+        <DetectChar attribute="Pattern Internal Operator" context="#stay" char="$" />
+        <RegExpr attribute="Comment" context="#stay" String="\s{3,}#.*$" />
+      </context>
+      <context name="regex_pattern_internal" attribute="Pattern" lineEndContext="#stay">
+        <IncludeRules context="regex_pattern_internal_rules_1" />
+        <IncludeRules context="regex_pattern_internal_rules_2" />
+      </context>
+      <context name="regex_pattern_internal_ip" attribute="Pattern" lineEndContext="#stay" >
+        <IncludeRules context="regex_pattern_internal_rules_1" />
+        <!-- NOTE the below means that the special variables $' $], $} and $> are not supported
+             within interpolated PATTERNs (apart from $(, $) and ${ and $| not supported by perl).
+             This is because perl considers
+             s{foo$} {bar} OK as well as s{foo$}} {bar}, and detecting that is a huge work overload
+             for something that is unlikely to happen. -->
+        <RegExpr attribute="Data Type" context="find_variable_unsafe" String="[$@][^]\s{}()|&gt;']" lookAhead="true" />
+        <IncludeRules context="regex_pattern_internal_rules_2" />
+      </context>
+      <context name="pat_ext" attribute="Pattern Internal Operator" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#pop" String="\#[^)]*" />
+        <RegExpr attribute="Pattern Internal Operator" context="#pop" String="[:=!&gt;&lt;]+" />
+        <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" />
+      </context>
+      <context name="pat_char_class" attribute="Pattern Character Class" lineEndContext="#stay">
+        <DetectChar attribute="Pattern Internal Operator" context="#stay" char="^" />
+        <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="]" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\[:^?[a-z]+:\]" />
+        <DetectChar attribute="Pattern Internal Operator" context="#pop" char="]" />
+      </context>
+
+      <!-- ====== Variables ====== -->
+      <context name="find_variable" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Special Variable" context="var_detect" String="\$[0-9]+" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$\$[\$\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$[#_][\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
+        <RegExpr attribute="Data Type" context="var_detect" String="[\$@%]\{[\w_]+\}" />
+        <AnyChar attribute="Data Type" context="var_detect" String="$@%" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\*[a-zA-Z_]+" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\*[^a-zA-Z0-9\s{][A-Z]?" />
+        <!-- this should be a rare case! -->
+        <AnyChar attribute="Operator" context="#pop" String="$@%*" />
+      </context>
+      <!-- This does not check fo a trailing slash, for usage in strings. -->
+      <context name="find_variable_unsafe" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="\$[0-9]+" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$\$[\$\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$[#_][\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]\{[\w_]+\}" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\*\w+" />
+        <AnyChar attribute="Operator" context="#pop" String="$@%*" />
+      </context>
+      <context name="var_detect"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+        <IncludeRules context="var_detect_rules" />
+        <IncludeRules context="slash_safe_escape" />
+      </context>
+      <context name="var_detect_unsafe"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+        <IncludeRules context="var_detect_rules" />
+      </context>
+      <context name="var_detect_rules" attribute="Data Type" lineEndContext="#pop#pop" >
+        <RegExpr attribute="Data Type" context="#stay" String="[\w_]+" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
+        <DetectChar attribute="Operator" context="#stay" char="'" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="&gt;" />
+        <!-- safe with operator / -->
+        <Detect2Chars attribute="Normal Text" context="#stay" char="+" char1="+" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="-" />
+      </context>
+
+
+      <!-- ====== Word lists ====== -->
+      <context name="quote_word" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <RegExpr attribute="Normal Text" context="#stay" String="\\%1" dynamic="true" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_paren" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_brace" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_bracket" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="Wordlist" />
+      </context>
+
+      <!-- ====== Here Documents ====== -->
+      <context name="find_here_document" attribute="Normal Text" lineEndContext="#pop" >
+        <RegExpr attribute="Keyword" context="here_document" String="(\w+)\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="\s*&quot;([^&quot;]+)&quot;\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="\s*`([^`]+)`\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document_dumb" String="\s*'([^']+)'\s*;?" />
+      </context>
+      <context name="here_document" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <RegExpr attribute="Keyword" context="here_document" String="\=\s*&lt;&lt;\s*[&quot;']?([A-Z0-9_\-]+)[&quot;']?" beginRegion="HEREDoc" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="here_document_dumb" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <DetectIdentifier />
+      </context>
+
+      <!-- ====== Misc ====== -->
+      <context name="data_handle" attribute="Data" lineEndContext="#stay">
+        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s+.*" column="0" beginRegion="POD"/>
+        <StringDetect attribute="Keyword" context="normal" String="__END__" firstNonSpace="true" />
+      </context>
+      <context name="end_handle" attribute="Nothing" lineEndContext="#stay">
+        <RegExpr attribute="Pod" context="pod" String="^\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*"/>
+        <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
+      </context>
+
+      <context name="Backticked" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal"/>
+        <DetectChar attribute="Operator" context="#pop" char="`"/>
+      </context>
+
+      <context name="slash_safe_escape" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\]?\s*/" />
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\}?\s*/" endRegion="Block" />
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\)?\s*/" />
+        <keyword attribute="Keyword" context="#pop" String="keywords" />
+      </context>
+
+      <context name="package_qualified_blank" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Normal Text" context="#pop" String="[\w_]+" />
+      </context>
+
+      <context name="sub_name_def" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#stay" String="\w+" />
+        <RegExpr attribute="Normal Text" context="find_variable" String="\$\S" lookAhead="true" />
+        <RegExpr attribute="Normal Text" context="sub_arg_definition" String="\s*\(" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
+      </context>
+
+      <context name="sub_arg_definition" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">
+        <AnyChar attribute="Data Type" context="#stay" String="*$@%" />
+        <AnyChar attribute="Normal Text" context="#stay" String="&amp;\[];" />
+        <DetectChar attribute="Normal Text" context="slash_safe_escape" char=")" />
+      </context>
+
+      <context name="pod" attribute="Pod" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>
+        <RegExpr attribute="Pod" context="#pop" String="\=cut.*$" column="0" endRegion="POD"/>
+      </context>
+
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"               defStyleNum="dsNormal" />
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" />
+      <itemData name="Pragma"                    defStyleNum="dsKeyword" />
+      <itemData name="Function"                  defStyleNum="dsFunction" />
+      <itemData name="Operator"                  defStyleNum="dsKeyword" color="#008000"/>
+      <itemData name="Data Type"                 defStyleNum="dsDataType" />
+      <itemData name="Special Variable"          defStyleNum="dsDataType" color="#C00000" selColor="#C00000" bold="0" italic="0" />
+      <itemData name="Decimal"                   defStyleNum="dsDecVal" />
+      <itemData name="Octal"                     defStyleNum="dsBaseN" />
+      <itemData name="Hex"                       defStyleNum="dsBaseN" />
+      <itemData name="Float"                     defStyleNum="dsFloat" />
+      <itemData name="String"                    defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" />
+      <itemData name="String (interpolated)"     defStyleNum="dsString" />
+      <itemData name="String Special Character"  defStyleNum="dsChar" />
+      <itemData name="Pattern"                   defStyleNum="dsOthers" />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsChar" />
+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" />
+      <itemData name="Data"                      defStyleNum="dsNormal" />
+      <itemData name="Comment"                   defStyleNum="dsComment" />
+      <itemData name="Pod"                       defStyleNum="dsComment" />
+      <itemData name="Nothing"                   defStyleNum="dsComment" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/src/plugins/genericeditor/XML/php.xml b/src/plugins/genericeditor/XML/php.xml
new file mode 100644
index 00000000000..879e2ce236e
--- /dev/null
+++ b/src/plugins/genericeditor/XML/php.xml
@@ -0,0 +1,6583 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Changes:
+
+[ Version 1.35 (2009-04-08) ]
+
+- fix uppercase <?PHP
+- add missing magic constants
+
+[ Version 1.32 (2007-12-02) ]
+
+- When leaving PHP context, make sure to close all brace regions (braces open a nested phpsource context for this purpose). This is a WORKAROUND for bug #143022 until feature #103257 is available.
+
+[ Version 1.31 (2007-11-29) ]
+
+- Add support for backtick operator. This has basically the same syntax as double quotes, so the two share most rules.
+
+[ Version 1.28 (2006-11-02) ]
+
+- Moved the special method names to a dedicated section (the coloration will default to the coloration of functions, but it can be customized independently, to revert to the previous coloration styles, that is, black, and bold).
+
+[ Version 1.27 (2006-11-01) ]
+
+- Added new special method names, from PHP 5.
+- Moved the special method names to the function list.
+
+[  Version 1.26 (2006-01-26) ]
+
+- Added alternative syntax control structures, and named logical operators ("and", "or", and "xor") (by Nicola Gigante).
+
+-->
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="PHP/PHP" version="1.35" kateversion="2.4" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+  <highlighting>
+    <list name="control structures">
+      <item>as</item>
+      <item>case</item>
+      <item>default</item>
+      <item>if</item>
+      <item>else</item>
+      <item>elseif</item>
+      <item>while</item>
+      <item>do</item>
+      <item>for</item>
+      <item>foreach</item>
+      <item>break</item>
+      <item>continue</item>
+      <item>switch</item>
+      <item>declare</item>
+      <item>return</item>
+      <item>require</item>
+      <item>include</item>
+      <item>require_once</item>
+      <item>include_once</item>
+      <item>endif</item>
+      <item>endwhile</item>
+      <item>endfor</item>
+      <item>endforeach</item>
+      <item>endswitch</item>
+    </list>
+    <list name="keywords">
+      <item> abstract </item>
+      <item> catch </item>
+      <item> class </item>
+      <item> clone </item>
+      <item> const </item>
+      <item> exception </item>
+      <item> extends </item>
+      <item> final </item>
+      <item> function </item>
+      <item> implements </item>
+      <item> instanceof </item>
+      <item> interface </item>
+      <item> new </item>
+      <item> self </item>
+      <item> static </item>
+      <item> parent </item>
+      <item> private </item>
+      <item> protected </item>
+      <item> public </item>
+      <item> throw </item>
+      <item> try </item>
+      <item> and </item>
+      <item> or </item>
+      <item> xor </item>
+      <item> var </item>
+      <!-- magic constants, see http://php.net/manual/en/language.constants.predefined.php -->
+      <item> __LINE__ </item>
+      <item> __FILE__ </item>
+      <item> __DIR__ </item>
+      <item> __FUNCTION__ </item>
+      <item> __CLASS__ </item>
+      <item> __METHOD__ </item>
+      <item> __NAMESPACE__ </item>
+
+      <item> E_ERROR </item>
+      <item> E_WARNING </item>
+      <item> E_PARSE </item>
+      <item> E_NOTICE </item>
+      <item> E_STRICT </item>
+      <item> E_CORE_ERROR </item>
+      <item> E_CORE_WARNING </item>
+      <item> E_COMPILE_ERROR </item>
+      <item> E_COMPILE_WARNING </item>
+      <item> E_USER_ERROR </item>
+      <item> E_USER_WARNING </item>
+      <item> E_USER_NOTICE </item>
+      <item> E_ALL </item>
+      <item> TRUE </item>
+      <item> FALSE </item>
+      <item> ZEND_THREAD_SAFE </item>
+      <item> NULL </item>
+      <item> PHP_VERSION </item>
+      <item> PHP_OS </item>
+      <item> PHP_SAPI </item>
+      <item> DEFAULT_INCLUDE_PATH </item>
+      <item> PEAR_INSTALL_DIR </item>
+      <item> PEAR_EXTENSION_DIR </item>
+      <item> PHP_EXTENSION_DIR </item>
+      <item> PHP_PREFIX </item>
+      <item> PHP_BINDIR </item>
+      <item> PHP_LIBDIR </item>
+      <item> PHP_DATADIR </item>
+      <item> PHP_SYSCONFDIR </item>
+      <item> PHP_LOCALSTATEDIR </item>
+      <item> PHP_CONFIG_FILE_PATH </item>
+      <item> PHP_CONFIG_FILE_SCAN_DIR </item>
+      <item> PHP_SHLIB_SUFFIX </item>
+      <item> PHP_EOL </item>
+      <item> PHP_OUTPUT_HANDLER_START </item>
+      <item> PHP_OUTPUT_HANDLER_CONT </item>
+      <item> PHP_OUTPUT_HANDLER_END </item>
+      <item> UPLOAD_ERR_OK </item>
+      <item> UPLOAD_ERR_INI_SIZE </item>
+      <item> UPLOAD_ERR_FORM_SIZE </item>
+      <item> UPLOAD_ERR_PARTIAL </item>
+      <item> UPLOAD_ERR_NO_FILE </item>
+      <item> UPLOAD_ERR_NO_TMP_DIR </item>
+      <item> P_STATIC </item>
+      <item> P_PUBLIC </item>
+      <item> P_PROTECTED </item>
+      <item> P_PRIVATE </item>
+      <item> M_STATIC </item>
+      <item> M_PUBLIC </item>
+      <item> M_PROTECTED </item>
+      <item> M_PRIVATE </item>
+      <item> M_ABSTRACT </item>
+      <item> M_FINAL </item>
+      <item> C_IMPLICIT_ABSTRACT </item>
+      <item> C_EXPLICIT_ABSTRACT </item>
+      <item> C_FINAL </item>
+      <item> XML_ERROR_NONE </item>
+      <item> XML_ERROR_NO_MEMORY </item>
+      <item> XML_ERROR_SYNTAX </item>
+      <item> XML_ERROR_NO_ELEMENTS </item>
+      <item> XML_ERROR_INVALID_TOKEN </item>
+      <item> XML_ERROR_UNCLOSED_TOKEN </item>
+      <item> XML_ERROR_PARTIAL_CHAR </item>
+      <item> XML_ERROR_TAG_MISMATCH </item>
+      <item> XML_ERROR_DUPLICATE_ATTRIBUTE </item>
+      <item> XML_ERROR_JUNK_AFTER_DOC_ELEMENT </item>
+      <item> XML_ERROR_PARAM_ENTITY_REF </item>
+      <item> XML_ERROR_UNDEFINED_ENTITY </item>
+      <item> XML_ERROR_RECURSIVE_ENTITY_REF </item>
+      <item> XML_ERROR_ASYNC_ENTITY </item>
+      <item> XML_ERROR_BAD_CHAR_REF </item>
+      <item> XML_ERROR_BINARY_ENTITY_REF </item>
+      <item> XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF </item>
+      <item> XML_ERROR_MISPLACED_XML_PI </item>
+      <item> XML_ERROR_UNKNOWN_ENCODING </item>
+      <item> XML_ERROR_INCORRECT_ENCODING </item>
+      <item> XML_ERROR_UNCLOSED_CDATA_SECTION </item>
+      <item> XML_ERROR_EXTERNAL_ENTITY_HANDLING </item>
+      <item> XML_OPTION_CASE_FOLDING </item>
+      <item> XML_OPTION_TARGET_ENCODING </item>
+      <item> XML_OPTION_SKIP_TAGSTART </item>
+      <item> XML_OPTION_SKIP_WHITE </item>
+      <item> XML_SAX_IMPL </item>
+      <item> CONNECTION_ABORTED </item>
+      <item> CONNECTION_NORMAL </item>
+      <item> CONNECTION_TIMEOUT </item>
+      <item> INI_USER </item>
+      <item> INI_PERDIR </item>
+      <item> INI_SYSTEM </item>
+      <item> INI_ALL </item>
+      <item> SUNFUNCS_RET_TIMESTAMP </item>
+      <item> SUNFUNCS_RET_STRING </item>
+      <item> SUNFUNCS_RET_DOUBLE </item>
+      <item> M_E </item>
+      <item> M_LOG2E </item>
+      <item> M_LOG10E </item>
+      <item> M_LN2 </item>
+      <item> M_LN10 </item>
+      <item> M_PI </item>
+      <item> M_PI_2 </item>
+      <item> M_PI_4 </item>
+      <item> M_1_PI </item>
+      <item> M_2_PI </item>
+      <item> M_2_SQRTPI </item>
+      <item> M_SQRT2 </item>
+      <item> M_SQRT1_2 </item>
+      <item> INF </item>
+      <item> NAN </item>
+      <item> INFO_GENERAL </item>
+      <item> INFO_CREDITS </item>
+      <item> INFO_CONFIGURATION </item>
+      <item> INFO_MODULES </item>
+      <item> INFO_ENVIRONMENT </item>
+      <item> INFO_VARIABLES </item>
+      <item> INFO_LICENSE </item>
+      <item> INFO_ALL </item>
+      <item> CREDITS_GROUP </item>
+      <item> CREDITS_GENERAL </item>
+      <item> CREDITS_SAPI </item>
+      <item> CREDITS_MODULES </item>
+      <item> CREDITS_DOCS </item>
+      <item> CREDITS_FULLPAGE </item>
+      <item> CREDITS_QA </item>
+      <item> CREDITS_ALL </item>
+      <item> HTML_SPECIALCHARS </item>
+      <item> HTML_ENTITIES </item>
+      <item> ENT_COMPAT </item>
+      <item> ENT_QUOTES </item>
+      <item> ENT_NOQUOTES </item>
+      <item> STR_PAD_LEFT </item>
+      <item> STR_PAD_RIGHT </item>
+      <item> STR_PAD_BOTH </item>
+      <item> PATHINFO_DIRNAME </item>
+      <item> PATHINFO_BASENAME </item>
+      <item> PATHINFO_EXTENSION </item>
+      <item> CHAR_MAX </item>
+      <item> LC_CTYPE </item>
+      <item> LC_NUMERIC </item>
+      <item> LC_TIME </item>
+      <item> LC_COLLATE </item>
+      <item> LC_MONETARY </item>
+      <item> LC_ALL </item>
+      <item> LC_MESSAGES </item>
+      <item> SEEK_SET </item>
+      <item> SEEK_CUR </item>
+      <item> SEEK_END </item>
+      <item> LOCK_SH </item>
+      <item> LOCK_EX </item>
+      <item> LOCK_UN </item>
+      <item> LOCK_NB </item>
+      <item> STREAM_NOTIFY_CONNECT </item>
+      <item> STREAM_NOTIFY_AUTH_REQUIRED </item>
+      <item> STREAM_NOTIFY_AUTH_RESULT </item>
+      <item> STREAM_NOTIFY_MIME_TYPE_IS </item>
+      <item> STREAM_NOTIFY_FILE_SIZE_IS </item>
+      <item> STREAM_NOTIFY_REDIRECTED </item>
+      <item> STREAM_NOTIFY_PROGRESS </item>
+      <item> STREAM_NOTIFY_FAILURE </item>
+      <item> STREAM_NOTIFY_COMPLETED </item>
+      <item> STREAM_NOTIFY_RESOLVE </item>
+      <item> STREAM_NOTIFY_SEVERITY_INFO </item>
+      <item> STREAM_NOTIFY_SEVERITY_WARN </item>
+      <item> STREAM_NOTIFY_SEVERITY_ERR </item>
+      <item> STREAM_FILTER_READ </item>
+      <item> STREAM_FILTER_WRITE </item>
+      <item> STREAM_FILTER_ALL </item>
+      <item> STREAM_CLIENT_PERSISTENT </item>
+      <item> STREAM_CLIENT_ASYNC_CONNECT </item>
+      <item> STREAM_CLIENT_CONNECT </item>
+      <item> STREAM_PEEK </item>
+      <item> STREAM_OOB </item>
+      <item> STREAM_SERVER_BIND </item>
+      <item> STREAM_SERVER_LISTEN </item>
+      <item> FILE_USE_INCLUDE_PATH </item>
+      <item> FILE_IGNORE_NEW_LINES </item>
+      <item> FILE_SKIP_EMPTY_LINES </item>
+      <item> FILE_APPEND </item>
+      <item> FILE_NO_DEFAULT_CONTEXT </item>
+      <item> FNM_NOESCAPE </item>
+      <item> FNM_PATHNAME </item>
+      <item> FNM_PERIOD </item>
+      <item> FNM_CASEFOLD </item>
+      <item> PSFS_PASS_ON </item>
+      <item> PSFS_FEED_ME </item>
+      <item> PSFS_ERR_FATAL </item>
+      <item> PSFS_FLAG_NORMAL </item>
+      <item> PSFS_FLAG_FLUSH_INC </item>
+      <item> PSFS_FLAG_FLUSH_CLOSE </item>
+      <item> ABDAY_1 </item>
+      <item> ABDAY_2 </item>
+      <item> ABDAY_3 </item>
+      <item> ABDAY_4 </item>
+      <item> ABDAY_5 </item>
+      <item> ABDAY_6 </item>
+      <item> ABDAY_7 </item>
+      <item> DAY_1 </item>
+      <item> DAY_2 </item>
+      <item> DAY_3 </item>
+      <item> DAY_4 </item>
+      <item> DAY_5 </item>
+      <item> DAY_6 </item>
+      <item> DAY_7 </item>
+      <item> ABMON_1 </item>
+      <item> ABMON_2 </item>
+      <item> ABMON_3 </item>
+      <item> ABMON_4 </item>
+      <item> ABMON_5 </item>
+      <item> ABMON_6 </item>
+      <item> ABMON_7 </item>
+      <item> ABMON_8 </item>
+      <item> ABMON_9 </item>
+      <item> ABMON_10 </item>
+      <item> ABMON_11 </item>
+      <item> ABMON_12 </item>
+      <item> MON_1 </item>
+      <item> MON_2 </item>
+      <item> MON_3 </item>
+      <item> MON_4 </item>
+      <item> MON_5 </item>
+      <item> MON_6 </item>
+      <item> MON_7 </item>
+      <item> MON_8 </item>
+      <item> MON_9 </item>
+      <item> MON_10 </item>
+      <item> MON_11 </item>
+      <item> MON_12 </item>
+      <item> AM_STR </item>
+      <item> PM_STR </item>
+      <item> D_T_FMT </item>
+      <item> D_FMT </item>
+      <item> T_FMT </item>
+      <item> T_FMT_AMPM </item>
+      <item> ERA </item>
+      <item> ERA_D_T_FMT </item>
+      <item> ERA_D_FMT </item>
+      <item> ERA_T_FMT </item>
+      <item> ALT_DIGITS </item>
+      <item> CRNCYSTR </item>
+      <item> RADIXCHAR </item>
+      <item> THOUSEP </item>
+      <item> YESEXPR </item>
+      <item> NOEXPR </item>
+      <item> CODESET </item>
+      <item> CRYPT_SALT_LENGTH </item>
+      <item> CRYPT_STD_DES </item>
+      <item> CRYPT_EXT_DES </item>
+      <item> CRYPT_MD5 </item>
+      <item> CRYPT_BLOWFISH </item>
+      <item> DIRECTORY_SEPARATOR </item>
+      <item> PATH_SEPARATOR </item>
+      <item> GLOB_BRACE </item>
+      <item> GLOB_MARK </item>
+      <item> GLOB_NOSORT </item>
+      <item> GLOB_NOCHECK </item>
+      <item> GLOB_NOESCAPE </item>
+      <item> GLOB_ONLYDIR </item>
+      <item> LOG_EMERG </item>
+      <item> LOG_ALERT </item>
+      <item> LOG_CRIT </item>
+      <item> LOG_ERR </item>
+      <item> LOG_WARNING </item>
+      <item> LOG_NOTICE </item>
+      <item> LOG_INFO </item>
+      <item> LOG_DEBUG </item>
+      <item> LOG_KERN </item>
+      <item> LOG_USER </item>
+      <item> LOG_MAIL </item>
+      <item> LOG_DAEMON </item>
+      <item> LOG_AUTH </item>
+      <item> LOG_SYSLOG </item>
+      <item> LOG_LPR </item>
+      <item> LOG_NEWS </item>
+      <item> LOG_UUCP </item>
+      <item> LOG_CRON </item>
+      <item> LOG_AUTHPRIV </item>
+      <item> LOG_LOCAL0 </item>
+      <item> LOG_LOCAL1 </item>
+      <item> LOG_LOCAL2 </item>
+      <item> LOG_LOCAL3 </item>
+      <item> LOG_LOCAL4 </item>
+      <item> LOG_LOCAL5 </item>
+      <item> LOG_LOCAL6 </item>
+      <item> LOG_LOCAL7 </item>
+      <item> LOG_PID </item>
+      <item> LOG_CONS </item>
+      <item> LOG_ODELAY </item>
+      <item> LOG_NDELAY </item>
+      <item> LOG_NOWAIT </item>
+      <item> LOG_PERROR </item>
+      <item> EXTR_OVERWRITE </item>
+      <item> EXTR_SKIP </item>
+      <item> EXTR_PREFIX_SAME </item>
+      <item> EXTR_PREFIX_ALL </item>
+      <item> EXTR_PREFIX_INVALID </item>
+      <item> EXTR_PREFIX_IF_EXISTS </item>
+      <item> EXTR_IF_EXISTS </item>
+      <item> EXTR_REFS </item>
+      <item> SORT_ASC </item>
+      <item> SORT_DESC </item>
+      <item> SORT_REGULAR </item>
+      <item> SORT_NUMERIC </item>
+      <item> SORT_STRING </item>
+      <item> SORT_LOCALE_STRING </item>
+      <item> CASE_LOWER </item>
+      <item> CASE_UPPER </item>
+      <item> COUNT_NORMAL </item>
+      <item> COUNT_RECURSIVE </item>
+      <item> ASSERT_ACTIVE </item>
+      <item> ASSERT_CALLBACK </item>
+      <item> ASSERT_BAIL </item>
+      <item> ASSERT_WARNING </item>
+      <item> ASSERT_QUIET_EVAL </item>
+      <item> STREAM_USE_PATH </item>
+      <item> STREAM_IGNORE_URL </item>
+      <item> STREAM_ENFORCE_SAFE_MODE </item>
+      <item> STREAM_REPORT_ERRORS </item>
+      <item> STREAM_MUST_SEEK </item>
+      <item> STREAM_URL_STAT_LINK </item>
+      <item> STREAM_URL_STAT_QUIET </item>
+      <item> STREAM_MKDIR_RECURSIVE </item>
+      <item> IMAGETYPE_GIF </item>
+      <item> IMAGETYPE_JPEG </item>
+      <item> IMAGETYPE_PNG </item>
+      <item> IMAGETYPE_SWF </item>
+      <item> IMAGETYPE_PSD </item>
+      <item> IMAGETYPE_BMP </item>
+      <item> IMAGETYPE_TIFF_II </item>
+      <item> IMAGETYPE_TIFF_MM </item>
+      <item> IMAGETYPE_JPC </item>
+      <item> IMAGETYPE_JP2 </item>
+      <item> IMAGETYPE_JPX </item>
+      <item> IMAGETYPE_JB2 </item>
+      <item> IMAGETYPE_IFF </item>
+      <item> IMAGETYPE_WBMP </item>
+      <item> IMAGETYPE_JPEG2000 </item>
+      <item> IMAGETYPE_XBM </item>
+      <item> DNS_A </item>
+      <item> DNS_NS </item>
+      <item> DNS_CNAME </item>
+      <item> DNS_SOA </item>
+      <item> DNS_PTR </item>
+      <item> DNS_HINFO </item>
+      <item> DNS_MX </item>
+      <item> DNS_TXT </item>
+      <item> DNS_SRV </item>
+      <item> DNS_NAPTR </item>
+      <item> DNS_AAAA </item>
+      <item> DNS_ANY </item>
+      <item> DNS_ALL </item>
+      <item> RIT_LEAVES_ONLY </item>
+      <item> RIT_SELF_FIRST </item>
+      <item> RIT_CHILD_FIRST </item>
+      <item> CIT_CALL_TOSTRING </item>
+      <item> CIT_CATCH_GET_CHILD </item>
+      <item> PREG_PATTERN_ORDER </item>
+      <item> PREG_SET_ORDER </item>
+      <item> PREG_OFFSET_CAPTURE </item>
+      <item> PREG_SPLIT_NO_EMPTY </item>
+      <item> PREG_SPLIT_DELIM_CAPTURE </item>
+      <item> PREG_SPLIT_OFFSET_CAPTURE </item>
+      <item> PREG_GREP_INVERT </item>
+      <item> CAL_GREGORIAN </item>
+      <item> CAL_JULIAN </item>
+      <item> CAL_JEWISH </item>
+      <item> CAL_FRENCH </item>
+      <item> CAL_NUM_CALS </item>
+      <item> CAL_DOW_DAYNO </item>
+      <item> CAL_DOW_SHORT </item>
+      <item> CAL_DOW_LONG </item>
+      <item> CAL_MONTH_GREGORIAN_SHORT </item>
+      <item> CAL_MONTH_GREGORIAN_LONG </item>
+      <item> CAL_MONTH_JULIAN_SHORT </item>
+      <item> CAL_MONTH_JULIAN_LONG </item>
+      <item> CAL_MONTH_JEWISH </item>
+      <item> CAL_MONTH_FRENCH </item>
+      <item> CAL_EASTER_DEFAULT </item>
+      <item> CAL_EASTER_ROMAN </item>
+      <item> CAL_EASTER_ALWAYS_GREGORIAN </item>
+      <item> CAL_EASTER_ALWAYS_JULIAN </item>
+      <item> CAL_JEWISH_ADD_ALAFIM_GERESH </item>
+      <item> CAL_JEWISH_ADD_ALAFIM </item>
+      <item> CAL_JEWISH_ADD_GERESHAYIM </item>
+      <item> CURLOPT_DNS_USE_GLOBAL_CACHE </item>
+      <item> CURLOPT_DNS_CACHE_TIMEOUT </item>
+      <item> CURLOPT_PORT </item>
+      <item> CURLOPT_FILE </item>
+      <item> CURLOPT_READDATA </item>
+      <item> CURLOPT_INFILE </item>
+      <item> CURLOPT_INFILESIZE </item>
+      <item> CURLOPT_URL </item>
+      <item> CURLOPT_PROXY </item>
+      <item> CURLOPT_VERBOSE </item>
+      <item> CURLOPT_HEADER </item>
+      <item> CURLOPT_HTTPHEADER </item>
+      <item> CURLOPT_NOPROGRESS </item>
+      <item> CURLOPT_NOBODY </item>
+      <item> CURLOPT_FAILONERROR </item>
+      <item> CURLOPT_UPLOAD </item>
+      <item> CURLOPT_POST </item>
+      <item> CURLOPT_FTPLISTONLY </item>
+      <item> CURLOPT_FTPAPPEND </item>
+      <item> CURLOPT_NETRC </item>
+      <item> CURLOPT_FOLLOWLOCATION </item>
+      <item> CURLOPT_FTPASCII </item>
+      <item> CURLOPT_PUT </item>
+      <item> CURLOPT_MUTE </item>
+      <item> CURLOPT_USERPWD </item>
+      <item> CURLOPT_PROXYUSERPWD </item>
+      <item> CURLOPT_RANGE </item>
+      <item> CURLOPT_TIMEOUT </item>
+      <item> CURLOPT_POSTFIELDS </item>
+      <item> CURLOPT_REFERER </item>
+      <item> CURLOPT_USERAGENT </item>
+      <item> CURLOPT_FTPPORT </item>
+      <item> CURLOPT_FTP_USE_EPSV </item>
+      <item> CURLOPT_LOW_SPEED_LIMIT </item>
+      <item> CURLOPT_LOW_SPEED_TIME </item>
+      <item> CURLOPT_RESUME_FROM </item>
+      <item> CURLOPT_COOKIE </item>
+      <item> CURLOPT_SSLCERT </item>
+      <item> CURLOPT_SSLCERTPASSWD </item>
+      <item> CURLOPT_WRITEHEADER </item>
+      <item> CURLOPT_SSL_VERIFYHOST </item>
+      <item> CURLOPT_COOKIEFILE </item>
+      <item> CURLOPT_SSLVERSION </item>
+      <item> CURLOPT_TIMECONDITION </item>
+      <item> CURLOPT_TIMEVALUE </item>
+      <item> CURLOPT_CUSTOMREQUEST </item>
+      <item> CURLOPT_STDERR </item>
+      <item> CURLOPT_TRANSFERTEXT </item>
+      <item> CURLOPT_RETURNTRANSFER </item>
+      <item> CURLOPT_QUOTE </item>
+      <item> CURLOPT_POSTQUOTE </item>
+      <item> CURLOPT_INTERFACE </item>
+      <item> CURLOPT_KRB4LEVEL </item>
+      <item> CURLOPT_HTTPPROXYTUNNEL </item>
+      <item> CURLOPT_FILETIME </item>
+      <item> CURLOPT_WRITEFUNCTION </item>
+      <item> CURLOPT_READFUNCTION </item>
+      <item> CURLOPT_PASSWDFUNCTION </item>
+      <item> CURLOPT_HEADERFUNCTION </item>
+      <item> CURLOPT_MAXREDIRS </item>
+      <item> CURLOPT_MAXCONNECTS </item>
+      <item> CURLOPT_CLOSEPOLICY </item>
+      <item> CURLOPT_FRESH_CONNECT </item>
+      <item> CURLOPT_FORBID_REUSE </item>
+      <item> CURLOPT_RANDOM_FILE </item>
+      <item> CURLOPT_EGDSOCKET </item>
+      <item> CURLOPT_CONNECTTIMEOUT </item>
+      <item> CURLOPT_SSL_VERIFYPEER </item>
+      <item> CURLOPT_CAINFO </item>
+      <item> CURLOPT_CAPATH </item>
+      <item> CURLOPT_COOKIEJAR </item>
+      <item> CURLOPT_SSL_CIPHER_LIST </item>
+      <item> CURLOPT_BINARYTRANSFER </item>
+      <item> CURLOPT_NOSIGNAL </item>
+      <item> CURLOPT_PROXYTYPE </item>
+      <item> CURLOPT_BUFFERSIZE </item>
+      <item> CURLOPT_HTTPGET </item>
+      <item> CURLOPT_HTTP_VERSION </item>
+      <item> CURLOPT_SSLKEY </item>
+      <item> CURLOPT_SSLKEYTYPE </item>
+      <item> CURLOPT_SSLKEYPASSWD </item>
+      <item> CURLOPT_SSLENGINE </item>
+      <item> CURLOPT_SSLENGINE_DEFAULT </item>
+      <item> CURLOPT_SSLCERTTYPE </item>
+      <item> CURLOPT_CRLF </item>
+      <item> CURLOPT_ENCODING </item>
+      <item> CURLOPT_PROXYPORT </item>
+      <item> CURLOPT_UNRESTRICTED_AUTH </item>
+      <item> CURLOPT_FTP_USE_EPRT </item>
+      <item> CURLOPT_HTTP200ALIASES </item>
+      <item> CURL_TIMECOND_IFMODSINCE </item>
+      <item> CURL_TIMECOND_IFUNMODSINCE </item>
+      <item> CURL_TIMECOND_LASTMOD </item>
+      <item> CURLOPT_HTTPAUTH </item>
+      <item> CURLAUTH_BASIC </item>
+      <item> CURLAUTH_DIGEST </item>
+      <item> CURLAUTH_GSSNEGOTIATE </item>
+      <item> CURLAUTH_NTLM </item>
+      <item> CURLAUTH_ANY </item>
+      <item> CURLAUTH_ANYSAFE </item>
+      <item> CURLOPT_PROXYAUTH </item>
+      <item> CURLCLOSEPOLICY_LEAST_RECENTLY_USED </item>
+      <item> CURLCLOSEPOLICY_LEAST_TRAFFIC </item>
+      <item> CURLCLOSEPOLICY_SLOWEST </item>
+      <item> CURLCLOSEPOLICY_CALLBACK </item>
+      <item> CURLCLOSEPOLICY_OLDEST </item>
+      <item> CURLINFO_EFFECTIVE_URL </item>
+      <item> CURLINFO_HTTP_CODE </item>
+      <item> CURLINFO_HEADER_SIZE </item>
+      <item> CURLINFO_REQUEST_SIZE </item>
+      <item> CURLINFO_TOTAL_TIME </item>
+      <item> CURLINFO_NAMELOOKUP_TIME </item>
+      <item> CURLINFO_CONNECT_TIME </item>
+      <item> CURLINFO_PRETRANSFER_TIME </item>
+      <item> CURLINFO_SIZE_UPLOAD </item>
+      <item> CURLINFO_SIZE_DOWNLOAD </item>
+      <item> CURLINFO_SPEED_DOWNLOAD </item>
+      <item> CURLINFO_SPEED_UPLOAD </item>
+      <item> CURLINFO_FILETIME </item>
+      <item> CURLINFO_SSL_VERIFYRESULT </item>
+      <item> CURLINFO_CONTENT_LENGTH_DOWNLOAD </item>
+      <item> CURLINFO_CONTENT_LENGTH_UPLOAD </item>
+      <item> CURLINFO_STARTTRANSFER_TIME </item>
+      <item> CURLINFO_CONTENT_TYPE </item>
+      <item> CURLINFO_REDIRECT_TIME </item>
+      <item> CURLINFO_REDIRECT_COUNT </item>
+      <item> CURL_VERSION_IPV6 </item>
+      <item> CURL_VERSION_KERBEROS4 </item>
+      <item> CURL_VERSION_SSL </item>
+      <item> CURL_VERSION_LIBZ </item>
+      <item> CURLVERSION_NOW </item>
+      <item> CURLE_OK </item>
+      <item> CURLE_UNSUPPORTED_PROTOCOL </item>
+      <item> CURLE_FAILED_INIT </item>
+      <item> CURLE_URL_MALFORMAT </item>
+      <item> CURLE_URL_MALFORMAT_USER </item>
+      <item> CURLE_COULDNT_RESOLVE_PROXY </item>
+      <item> CURLE_COULDNT_RESOLVE_HOST </item>
+      <item> CURLE_COULDNT_CONNECT </item>
+      <item> CURLE_FTP_WEIRD_SERVER_REPLY </item>
+      <item> CURLE_FTP_ACCESS_DENIED </item>
+      <item> CURLE_FTP_USER_PASSWORD_INCORRECT </item>
+      <item> CURLE_FTP_WEIRD_PASS_REPLY </item>
+      <item> CURLE_FTP_WEIRD_USER_REPLY </item>
+      <item> CURLE_FTP_WEIRD_PASV_REPLY </item>
+      <item> CURLE_FTP_WEIRD_227_FORMAT </item>
+      <item> CURLE_FTP_CANT_GET_HOST </item>
+      <item> CURLE_FTP_CANT_RECONNECT </item>
+      <item> CURLE_FTP_COULDNT_SET_BINARY </item>
+      <item> CURLE_PARTIAL_FILE </item>
+      <item> CURLE_FTP_COULDNT_RETR_FILE </item>
+      <item> CURLE_FTP_WRITE_ERROR </item>
+      <item> CURLE_FTP_QUOTE_ERROR </item>
+      <item> CURLE_HTTP_NOT_FOUND </item>
+      <item> CURLE_WRITE_ERROR </item>
+      <item> CURLE_MALFORMAT_USER </item>
+      <item> CURLE_FTP_COULDNT_STOR_FILE </item>
+      <item> CURLE_READ_ERROR </item>
+      <item> CURLE_OUT_OF_MEMORY </item>
+      <item> CURLE_OPERATION_TIMEOUTED </item>
+      <item> CURLE_FTP_COULDNT_SET_ASCII </item>
+      <item> CURLE_FTP_PORT_FAILED </item>
+      <item> CURLE_FTP_COULDNT_USE_REST </item>
+      <item> CURLE_FTP_COULDNT_GET_SIZE </item>
+      <item> CURLE_HTTP_RANGE_ERROR </item>
+      <item> CURLE_HTTP_POST_ERROR </item>
+      <item> CURLE_SSL_CONNECT_ERROR </item>
+      <item> CURLE_FTP_BAD_DOWNLOAD_RESUME </item>
+      <item> CURLE_FILE_COULDNT_READ_FILE </item>
+      <item> CURLE_LDAP_CANNOT_BIND </item>
+      <item> CURLE_LDAP_SEARCH_FAILED </item>
+      <item> CURLE_LIBRARY_NOT_FOUND </item>
+      <item> CURLE_FUNCTION_NOT_FOUND </item>
+      <item> CURLE_ABORTED_BY_CALLBACK </item>
+      <item> CURLE_BAD_FUNCTION_ARGUMENT </item>
+      <item> CURLE_BAD_CALLING_ORDER </item>
+      <item> CURLE_HTTP_PORT_FAILED </item>
+      <item> CURLE_BAD_PASSWORD_ENTERED </item>
+      <item> CURLE_TOO_MANY_REDIRECTS </item>
+      <item> CURLE_UNKNOWN_TELNET_OPTION </item>
+      <item> CURLE_TELNET_OPTION_SYNTAX </item>
+      <item> CURLE_OBSOLETE </item>
+      <item> CURLE_SSL_PEER_CERTIFICATE </item>
+      <item> CURLE_GOT_NOTHING </item>
+      <item> CURLE_SSL_ENGINE_NOTFOUND </item>
+      <item> CURLE_SSL_ENGINE_SETFAILED </item>
+      <item> CURLE_SEND_ERROR </item>
+      <item> CURLE_RECV_ERROR </item>
+      <item> CURLE_SHARE_IN_USE </item>
+      <item> CURLE_SSL_CERTPROBLEM </item>
+      <item> CURLE_SSL_CIPHER </item>
+      <item> CURLE_SSL_CACERT </item>
+      <item> CURLE_BAD_CONTENT_ENCODING </item>
+      <item> CURLPROXY_HTTP </item>
+      <item> CURLPROXY_SOCKS5 </item>
+      <item> CURL_NETRC_OPTIONAL </item>
+      <item> CURL_NETRC_IGNORED </item>
+      <item> CURL_NETRC_REQUIRED </item>
+      <item> CURL_HTTP_VERSION_NONE </item>
+      <item> CURL_HTTP_VERSION_1_0 </item>
+      <item> CURL_HTTP_VERSION_1_1 </item>
+      <item> CURLM_CALL_MULTI_PERFORM </item>
+      <item> CURLM_OK </item>
+      <item> CURLM_BAD_HANDLE </item>
+      <item> CURLM_BAD_EASY_HANDLE </item>
+      <item> CURLM_OUT_OF_MEMORY </item>
+      <item> CURLM_INTERNAL_ERROR </item>
+      <item> CURLMSG_DONE </item>
+      <item> DBX_MYSQL </item>
+      <item> DBX_ODBC </item>
+      <item> DBX_PGSQL </item>
+      <item> DBX_MSSQL </item>
+      <item> DBX_FBSQL </item>
+      <item> DBX_OCI8 </item>
+      <item> DBX_SYBASECT </item>
+      <item> DBX_SQLITE </item>
+      <item> DBX_PERSISTENT </item>
+      <item> DBX_RESULT_INFO </item>
+      <item> DBX_RESULT_INDEX </item>
+      <item> DBX_RESULT_ASSOC </item>
+      <item> DBX_RESULT_UNBUFFERED </item>
+      <item> DBX_COLNAMES_UNCHANGED </item>
+      <item> DBX_COLNAMES_UPPERCASE </item>
+      <item> DBX_COLNAMES_LOWERCASE </item>
+      <item> DBX_CMP_NATIVE </item>
+      <item> DBX_CMP_TEXT </item>
+      <item> DBX_CMP_NUMBER </item>
+      <item> DBX_CMP_ASC </item>
+      <item> DBX_CMP_DESC </item>
+      <item> O_RDONLY </item>
+      <item> O_WRONLY </item>
+      <item> O_RDWR </item>
+      <item> O_CREAT </item>
+      <item> O_EXCL </item>
+      <item> O_TRUNC </item>
+      <item> O_APPEND </item>
+      <item> O_NONBLOCK </item>
+      <item> O_NDELAY </item>
+      <item> O_SYNC </item>
+      <item> O_ASYNC </item>
+      <item> O_NOCTTY </item>
+      <item> S_IRWXU </item>
+      <item> S_IRUSR </item>
+      <item> S_IWUSR </item>
+      <item> S_IXUSR </item>
+      <item> S_IRWXG </item>
+      <item> S_IRGRP </item>
+      <item> S_IWGRP </item>
+      <item> S_IXGRP </item>
+      <item> S_IRWXO </item>
+      <item> S_IROTH </item>
+      <item> S_IWOTH </item>
+      <item> S_IXOTH </item>
+      <item> F_DUPFD </item>
+      <item> F_GETFD </item>
+      <item> F_GETFL </item>
+      <item> F_SETFL </item>
+      <item> F_GETLK </item>
+      <item> F_SETLK </item>
+      <item> F_SETLKW </item>
+      <item> F_SETOWN </item>
+      <item> F_GETOWN </item>
+      <item> F_UNLCK </item>
+      <item> F_RDLCK </item>
+      <item> F_WRLCK </item>
+      <item> XML_ELEMENT_NODE </item>
+      <item> XML_ATTRIBUTE_NODE </item>
+      <item> XML_TEXT_NODE </item>
+      <item> XML_CDATA_SECTION_NODE </item>
+      <item> XML_ENTITY_REF_NODE </item>
+      <item> XML_ENTITY_NODE </item>
+      <item> XML_PI_NODE </item>
+      <item> XML_COMMENT_NODE </item>
+      <item> XML_DOCUMENT_NODE </item>
+      <item> XML_DOCUMENT_TYPE_NODE </item>
+      <item> XML_DOCUMENT_FRAG_NODE </item>
+      <item> XML_NOTATION_NODE </item>
+      <item> XML_HTML_DOCUMENT_NODE </item>
+      <item> XML_DTD_NODE </item>
+      <item> XML_ELEMENT_DECL_NODE </item>
+      <item> XML_ATTRIBUTE_DECL_NODE </item>
+      <item> XML_ENTITY_DECL_NODE </item>
+      <item> XML_NAMESPACE_DECL_NODE </item>
+      <item> XML_LOCAL_NAMESPACE </item>
+      <item> XML_ATTRIBUTE_CDATA </item>
+      <item> XML_ATTRIBUTE_ID </item>
+      <item> XML_ATTRIBUTE_IDREF </item>
+      <item> XML_ATTRIBUTE_IDREFS </item>
+      <item> XML_ATTRIBUTE_ENTITY </item>
+      <item> XML_ATTRIBUTE_NMTOKEN </item>
+      <item> XML_ATTRIBUTE_NMTOKENS </item>
+      <item> XML_ATTRIBUTE_ENUMERATION </item>
+      <item> XML_ATTRIBUTE_NOTATION </item>
+      <item> DOM_PHP_ERR </item>
+      <item> DOM_INDEX_SIZE_ERR </item>
+      <item> DOMSTRING_SIZE_ERR </item>
+      <item> DOM_HIERARCHY_REQUEST_ERR </item>
+      <item> DOM_WRONG_DOCUMENT_ERR </item>
+      <item> DOM_INVALID_CHARACTER_ERR </item>
+      <item> DOM_NO_DATA_ALLOWED_ERR </item>
+      <item> DOM_NO_MODIFICATION_ALLOWED_ERR </item>
+      <item> DOM_NOT_FOUND_ERR </item>
+      <item> DOM_NOT_SUPPORTED_ERR </item>
+      <item> DOM_INUSE_ATTRIBUTE_ERR </item>
+      <item> DOM_INVALID_STATE_ERR </item>
+      <item> DOM_SYNTAX_ERR </item>
+      <item> DOM_INVALID_MODIFICATION_ERR </item>
+      <item> DOM_NAMESPACE_ERR </item>
+      <item> DOM_INVALID_ACCESS_ERR </item>
+      <item> DOM_VALIDATION_ERR </item>
+      <item> EXIF_USE_MBSTRING </item>
+      <item> FAMChanged </item>
+      <item> FAMDeleted </item>
+      <item> FAMStartExecuting </item>
+      <item> FAMStopExecuting </item>
+      <item> FAMCreated </item>
+      <item> FAMMoved </item>
+      <item> FAMAcknowledge </item>
+      <item> FAMExists </item>
+      <item> FAMEndExist </item>
+      <item> FTP_ASCII </item>
+      <item> FTP_TEXT </item>
+      <item> FTP_BINARY </item>
+      <item> FTP_IMAGE </item>
+      <item> FTP_AUTORESUME </item>
+      <item> FTP_TIMEOUT_SEC </item>
+      <item> FTP_AUTOSEEK </item>
+      <item> FTP_FAILED </item>
+      <item> FTP_FINISHED </item>
+      <item> FTP_MOREDATA </item>
+      <item> IMG_GIF </item>
+      <item> IMG_JPG </item>
+      <item> IMG_JPEG </item>
+      <item> IMG_PNG </item>
+      <item> IMG_WBMP </item>
+      <item> IMG_XPM </item>
+      <item> IMG_COLOR_TILED </item>
+      <item> IMG_COLOR_STYLED </item>
+      <item> IMG_COLOR_BRUSHED </item>
+      <item> IMG_COLOR_STYLEDBRUSHED </item>
+      <item> IMG_COLOR_TRANSPARENT </item>
+      <item> IMG_ARC_ROUNDED </item>
+      <item> IMG_ARC_PIE </item>
+      <item> IMG_ARC_CHORD </item>
+      <item> IMG_ARC_NOFILL </item>
+      <item> IMG_ARC_EDGED </item>
+      <item> IMG_GD2_RAW </item>
+      <item> IMG_GD2_COMPRESSED </item>
+      <item> IMG_EFFECT_REPLACE </item>
+      <item> IMG_EFFECT_ALPHABLEND </item>
+      <item> IMG_EFFECT_NORMAL </item>
+      <item> IMG_EFFECT_OVERLAY </item>
+      <item> GD_BUNDLED </item>
+      <item> IMG_FILTER_NEGATE </item>
+      <item> IMG_FILTER_GRAYSCALE </item>
+      <item> IMG_FILTER_BRIGHTNESS </item>
+      <item> IMG_FILTER_CONTRAST </item>
+      <item> IMG_FILTER_COLORIZE </item>
+      <item> IMG_FILTER_EDGEDETECT </item>
+      <item> IMG_FILTER_GAUSSIAN_BLUR </item>
+      <item> IMG_FILTER_SELECTIVE_BLUR </item>
+      <item> IMG_FILTER_EMBOSS </item>
+      <item> IMG_FILTER_MEAN_REMOVAL </item>
+      <item> IMG_FILTER_SMOOTH </item>
+      <item> GMP_ROUND_ZERO </item>
+      <item> GMP_ROUND_PLUSINF </item>
+      <item> GMP_ROUND_MINUSINF </item>
+      <item> ICONV_IMPL </item>
+      <item> ICONV_VERSION </item>
+      <item> ICONV_MIME_DECODE_STRICT </item>
+      <item> ICONV_MIME_DECODE_CONTINUE_ON_ERROR </item>
+      <item> NIL </item>
+      <item> IMAP_OPENTIMEOUT </item>
+      <item> IMAP_READTIMEOUT </item>
+      <item> IMAP_WRITETIMEOUT </item>
+      <item> IMAP_CLOSETIMEOUT </item>
+      <item> OP_DEBUG </item>
+      <item> OP_READONLY </item>
+      <item> OP_ANONYMOUS </item>
+      <item> OP_SHORTCACHE </item>
+      <item> OP_SILENT </item>
+      <item> OP_PROTOTYPE </item>
+      <item> OP_HALFOPEN </item>
+      <item> OP_EXPUNGE </item>
+      <item> OP_SECURE </item>
+      <item> CL_EXPUNGE </item>
+      <item> FT_UID </item>
+      <item> FT_PEEK </item>
+      <item> FT_NOT </item>
+      <item> FT_INTERNAL </item>
+      <item> FT_PREFETCHTEXT </item>
+      <item> ST_UID </item>
+      <item> ST_SILENT </item>
+      <item> ST_SET </item>
+      <item> CP_UID </item>
+      <item> CP_MOVE </item>
+      <item> SE_UID </item>
+      <item> SE_FREE </item>
+      <item> SE_NOPREFETCH </item>
+      <item> SO_FREE </item>
+      <item> SO_NOSERVER </item>
+      <item> SA_MESSAGES </item>
+      <item> SA_RECENT </item>
+      <item> SA_UNSEEN </item>
+      <item> SA_UIDNEXT </item>
+      <item> SA_UIDVALIDITY </item>
+      <item> SA_ALL </item>
+      <item> LATT_NOINFERIORS </item>
+      <item> LATT_NOSELECT </item>
+      <item> LATT_MARKED </item>
+      <item> LATT_UNMARKED </item>
+      <item> LATT_REFERRAL </item>
+      <item> LATT_HASCHILDREN </item>
+      <item> LATT_HASNOCHILDREN </item>
+      <item> SORTDATE </item>
+      <item> SORTARRIVAL </item>
+      <item> SORTFROM </item>
+      <item> SORTSUBJECT </item>
+      <item> SORTTO </item>
+      <item> SORTCC </item>
+      <item> SORTSIZE </item>
+      <item> TYPETEXT </item>
+      <item> TYPEMULTIPART </item>
+      <item> TYPEMESSAGE </item>
+      <item> TYPEAPPLICATION </item>
+      <item> TYPEAUDIO </item>
+      <item> TYPEIMAGE </item>
+      <item> TYPEVIDEO </item>
+      <item> TYPEMODEL </item>
+      <item> TYPEOTHER </item>
+      <item> ENC7BIT </item>
+      <item> ENC8BIT </item>
+      <item> ENCBINARY </item>
+      <item> ENCBASE64 </item>
+      <item> ENCQUOTEDPRINTABLE </item>
+      <item> ENCOTHER </item>
+      <item> LDAP_DEREF_NEVER </item>
+      <item> LDAP_DEREF_SEARCHING </item>
+      <item> LDAP_DEREF_FINDING </item>
+      <item> LDAP_DEREF_ALWAYS </item>
+      <item> LDAP_OPT_DEREF </item>
+      <item> LDAP_OPT_SIZELIMIT </item>
+      <item> LDAP_OPT_TIMELIMIT </item>
+      <item> LDAP_OPT_PROTOCOL_VERSION </item>
+      <item> LDAP_OPT_ERROR_NUMBER </item>
+      <item> LDAP_OPT_REFERRALS </item>
+      <item> LDAP_OPT_RESTART </item>
+      <item> LDAP_OPT_HOST_NAME </item>
+      <item> LDAP_OPT_ERROR_STRING </item>
+      <item> LDAP_OPT_MATCHED_DN </item>
+      <item> LDAP_OPT_SERVER_CONTROLS </item>
+      <item> LDAP_OPT_CLIENT_CONTROLS </item>
+      <item> LDAP_OPT_DEBUG_LEVEL </item>
+      <item> MB_OVERLOAD_MAIL </item>
+      <item> MB_OVERLOAD_STRING </item>
+      <item> MB_OVERLOAD_REGEX </item>
+      <item> MB_CASE_UPPER </item>
+      <item> MB_CASE_LOWER </item>
+      <item> MB_CASE_TITLE </item>
+      <item> MCRYPT_ENCRYPT </item>
+      <item> MCRYPT_DECRYPT </item>
+      <item> MCRYPT_DEV_RANDOM </item>
+      <item> MCRYPT_DEV_URANDOM </item>
+      <item> MCRYPT_RAND </item>
+      <item> MCRYPT_3DES </item>
+      <item> MCRYPT_ARCFOUR_IV </item>
+      <item> MCRYPT_ARCFOUR </item>
+      <item> MCRYPT_BLOWFISH </item>
+      <item> MCRYPT_BLOWFISH_COMPAT </item>
+      <item> MCRYPT_CAST_128 </item>
+      <item> MCRYPT_CAST_256 </item>
+      <item> MCRYPT_CRYPT </item>
+      <item> MCRYPT_DES </item>
+      <item> MCRYPT_ENIGNA </item>
+      <item> MCRYPT_GOST </item>
+      <item> MCRYPT_LOKI97 </item>
+      <item> MCRYPT_PANAMA </item>
+      <item> MCRYPT_RC2 </item>
+      <item> MCRYPT_RIJNDAEL_128 </item>
+      <item> MCRYPT_RIJNDAEL_192 </item>
+      <item> MCRYPT_RIJNDAEL_256 </item>
+      <item> MCRYPT_SAFER64 </item>
+      <item> MCRYPT_SAFER128 </item>
+      <item> MCRYPT_SAFERPLUS </item>
+      <item> MCRYPT_SERPENT </item>
+      <item> MCRYPT_THREEWAY </item>
+      <item> MCRYPT_TRIPLEDES </item>
+      <item> MCRYPT_TWOFISH </item>
+      <item> MCRYPT_WAKE </item>
+      <item> MCRYPT_XTEA </item>
+      <item> MCRYPT_IDEA </item>
+      <item> MCRYPT_MARS </item>
+      <item> MCRYPT_RC6 </item>
+      <item> MCRYPT_SKIPJACK </item>
+      <item> MCRYPT_MODE_CBC </item>
+      <item> MCRYPT_MODE_CFB </item>
+      <item> MCRYPT_MODE_ECB </item>
+      <item> MCRYPT_MODE_NOFB </item>
+      <item> MCRYPT_MODE_OFB </item>
+      <item> MCRYPT_MODE_STREAM </item>
+      <item> MHASH_CRC32 </item>
+      <item> MHASH_MD5 </item>
+      <item> MHASH_SHA1 </item>
+      <item> MHASH_HAVAL256 </item>
+      <item> MHASH_RIPEMD160 </item>
+      <item> MHASH_TIGER </item>
+      <item> MHASH_GOST </item>
+      <item> MHASH_CRC32B </item>
+      <item> MHASH_HAVAL224 </item>
+      <item> MHASH_HAVAL192 </item>
+      <item> MHASH_HAVAL160 </item>
+      <item> MHASH_HAVAL128 </item>
+      <item> MHASH_TIGER128 </item>
+      <item> MHASH_TIGER160 </item>
+      <item> MHASH_MD4 </item>
+      <item> MHASH_SHA256 </item>
+      <item> MHASH_ADLER32 </item>
+      <item> MHASH_SHA224 </item>
+      <item> MHASH_SHA512 </item>
+      <item> MHASH_SHA384 </item>
+      <item> MHASH_WHIRLPOOL </item>
+      <item> MHASH_RIPEMD128 </item>
+      <item> MHASH_RIPEMD256 </item>
+      <item> MHASH_RIPEMD320 </item>
+      <item> MHASH_SNEFRU128 </item>
+      <item> MHASH_SNEFRU256 </item>
+      <item> MHASH_MD2 </item>
+      <item> MYSQL_ASSOC </item>
+      <item> MYSQL_NUM </item>
+      <item> MYSQL_BOTH </item>
+      <item> MYSQL_CLIENT_COMPRESS </item>
+      <item> MYSQL_CLIENT_SSL </item>
+      <item> MYSQL_CLIENT_INTERACTIVE </item>
+      <item> MYSQL_CLIENT_IGNORE_SPACE </item>
+      <item> MYSQLI_READ_DEFAULT_GROUP </item>
+      <item> MYSQLI_READ_DEFAULT_FILE </item>
+      <item> MYSQLI_OPT_CONNECT_TIMEOUT </item>
+      <item> MYSQLI_OPT_LOCAL_INFILE </item>
+      <item> MYSQLI_INIT_COMMAND </item>
+      <item> MYSQLI_CLIENT_SSL </item>
+      <item> MYSQLI_CLIENT_COMPRESS </item>
+      <item> MYSQLI_CLIENT_INTERACTIVE </item>
+      <item> MYSQLI_CLIENT_IGNORE_SPACE </item>
+      <item> MYSQLI_CLIENT_NO_SCHEMA </item>
+      <item> MYSQLI_CLIENT_FOUND_ROWS </item>
+      <item> MYSQLI_STORE_RESULT </item>
+      <item> MYSQLI_USE_RESULT </item>
+      <item> MYSQLI_ASSOC </item>
+      <item> MYSQLI_NUM </item>
+      <item> MYSQLI_BOTH </item>
+      <item> MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH </item>
+      <item> MYSQLI_NOT_NULL_FLAG </item>
+      <item> MYSQLI_PRI_KEY_FLAG </item>
+      <item> MYSQLI_UNIQUE_KEY_FLAG </item>
+      <item> MYSQLI_MULTIPLE_KEY_FLAG </item>
+      <item> MYSQLI_BLOB_FLAG </item>
+      <item> MYSQLI_UNSIGNED_FLAG </item>
+      <item> MYSQLI_ZEROFILL_FLAG </item>
+      <item> MYSQLI_AUTO_INCREMENT_FLAG </item>
+      <item> MYSQLI_TIMESTAMP_FLAG </item>
+      <item> MYSQLI_SET_FLAG </item>
+      <item> MYSQLI_NUM_FLAG </item>
+      <item> MYSQLI_PART_KEY_FLAG </item>
+      <item> MYSQLI_GROUP_FLAG </item>
+      <item> MYSQLI_TYPE_DECIMAL </item>
+      <item> MYSQLI_TYPE_TINY </item>
+      <item> MYSQLI_TYPE_SHORT </item>
+      <item> MYSQLI_TYPE_LONG </item>
+      <item> MYSQLI_TYPE_FLOAT </item>
+      <item> MYSQLI_TYPE_DOUBLE </item>
+      <item> MYSQLI_TYPE_NULL </item>
+      <item> MYSQLI_TYPE_TIMESTAMP </item>
+      <item> MYSQLI_TYPE_LONGLONG </item>
+      <item> MYSQLI_TYPE_INT24 </item>
+      <item> MYSQLI_TYPE_DATE </item>
+      <item> MYSQLI_TYPE_TIME </item>
+      <item> MYSQLI_TYPE_DATETIME </item>
+      <item> MYSQLI_TYPE_YEAR </item>
+      <item> MYSQLI_TYPE_NEWDATE </item>
+      <item> MYSQLI_TYPE_ENUM </item>
+      <item> MYSQLI_TYPE_SET </item>
+      <item> MYSQLI_TYPE_TINY_BLOB </item>
+      <item> MYSQLI_TYPE_MEDIUM_BLOB </item>
+      <item> MYSQLI_TYPE_LONG_BLOB </item>
+      <item> MYSQLI_TYPE_BLOB </item>
+      <item> MYSQLI_TYPE_VAR_STRING </item>
+      <item> MYSQLI_TYPE_STRING </item>
+      <item> MYSQLI_TYPE_CHAR </item>
+      <item> MYSQLI_TYPE_INTERVAL </item>
+      <item> MYSQLI_TYPE_GEOMETRY </item>
+      <item> MYSQLI_RPL_MASTER </item>
+      <item> MYSQLI_RPL_SLAVE </item>
+      <item> MYSQLI_RPL_ADMIN </item>
+      <item> MYSQLI_NO_DATA </item>
+      <item> MYSQLI_REPORT_INDEX </item>
+      <item> MYSQLI_REPORT_ERROR </item>
+      <item> MYSQLI_REPORT_ALL </item>
+      <item> MYSQLI_REPORT_OFF </item>
+      <item> NCURSES_COLOR_BLACK </item>
+      <item> NCURSES_COLOR_RED </item>
+      <item> NCURSES_COLOR_GREEN </item>
+      <item> NCURSES_COLOR_YELLOW </item>
+      <item> NCURSES_COLOR_BLUE </item>
+      <item> NCURSES_COLOR_MAGENTA </item>
+      <item> NCURSES_COLOR_CYAN </item>
+      <item> NCURSES_COLOR_WHITE </item>
+      <item> NCURSES_KEY_DOWN </item>
+      <item> NCURSES_KEY_UP </item>
+      <item> NCURSES_KEY_LEFT </item>
+      <item> NCURSES_KEY_RIGHT </item>
+      <item> NCURSES_KEY_BACKSPACE </item>
+      <item> NCURSES_KEY_MOUSE </item>
+      <item> NCURSES_KEY_F0 </item>
+      <item> NCURSES_KEY_F1 </item>
+      <item> NCURSES_KEY_F2 </item>
+      <item> NCURSES_KEY_F3 </item>
+      <item> NCURSES_KEY_F4 </item>
+      <item> NCURSES_KEY_F5 </item>
+      <item> NCURSES_KEY_F6 </item>
+      <item> NCURSES_KEY_F7 </item>
+      <item> NCURSES_KEY_F8 </item>
+      <item> NCURSES_KEY_F9 </item>
+      <item> NCURSES_KEY_F10 </item>
+      <item> NCURSES_KEY_F11 </item>
+      <item> NCURSES_KEY_F12 </item>
+      <item> NCURSES_KEY_DL </item>
+      <item> NCURSES_KEY_IL </item>
+      <item> NCURSES_KEY_DC </item>
+      <item> NCURSES_KEY_IC </item>
+      <item> NCURSES_KEY_EIC </item>
+      <item> NCURSES_KEY_CLEAR </item>
+      <item> NCURSES_KEY_EOS </item>
+      <item> NCURSES_KEY_EOL </item>
+      <item> NCURSES_KEY_SF </item>
+      <item> NCURSES_KEY_SR </item>
+      <item> NCURSES_KEY_NPAGE </item>
+      <item> NCURSES_KEY_PPAGE </item>
+      <item> NCURSES_KEY_STAB </item>
+      <item> NCURSES_KEY_CTAB </item>
+      <item> NCURSES_KEY_CATAB </item>
+      <item> NCURSES_KEY_ENTER </item>
+      <item> NCURSES_KEY_SRESET </item>
+      <item> NCURSES_KEY_RESET </item>
+      <item> NCURSES_KEY_PRINT </item>
+      <item> NCURSES_KEY_LL </item>
+      <item> NCURSES_KEY_A1 </item>
+      <item> NCURSES_KEY_A3 </item>
+      <item> NCURSES_KEY_B2 </item>
+      <item> NCURSES_KEY_C1 </item>
+      <item> NCURSES_KEY_C3 </item>
+      <item> NCURSES_KEY_BTAB </item>
+      <item> NCURSES_KEY_BEG </item>
+      <item> NCURSES_KEY_CANCEL </item>
+      <item> NCURSES_KEY_CLOSE </item>
+      <item> NCURSES_KEY_COMMAND </item>
+      <item> NCURSES_KEY_COPY </item>
+      <item> NCURSES_KEY_CREATE </item>
+      <item> NCURSES_KEY_END </item>
+      <item> NCURSES_KEY_EXIT </item>
+      <item> NCURSES_KEY_FIND </item>
+      <item> NCURSES_KEY_HELP </item>
+      <item> NCURSES_KEY_MARK </item>
+      <item> NCURSES_KEY_MESSAGE </item>
+      <item> NCURSES_KEY_MOVE </item>
+      <item> NCURSES_KEY_NEXT </item>
+      <item> NCURSES_KEY_OPEN </item>
+      <item> NCURSES_KEY_OPTIONS </item>
+      <item> NCURSES_KEY_PREVIOUS </item>
+      <item> NCURSES_KEY_REDO </item>
+      <item> NCURSES_KEY_REFERENCE </item>
+      <item> NCURSES_KEY_REFRESH </item>
+      <item> NCURSES_KEY_REPLACE </item>
+      <item> NCURSES_KEY_RESTART </item>
+      <item> NCURSES_KEY_RESUME </item>
+      <item> NCURSES_KEY_SAVE </item>
+      <item> NCURSES_KEY_SBEG </item>
+      <item> NCURSES_KEY_SCANCEL </item>
+      <item> NCURSES_KEY_SCOMMAND </item>
+      <item> NCURSES_KEY_SCOPY </item>
+      <item> NCURSES_KEY_SCREATE </item>
+      <item> NCURSES_KEY_SDC </item>
+      <item> NCURSES_KEY_SDL </item>
+      <item> NCURSES_KEY_SELECT </item>
+      <item> NCURSES_KEY_SEND </item>
+      <item> NCURSES_KEY_SEOL </item>
+      <item> NCURSES_KEY_SEXIT </item>
+      <item> NCURSES_KEY_SFIND </item>
+      <item> NCURSES_KEY_SHELP </item>
+      <item> NCURSES_KEY_SHOME </item>
+      <item> NCURSES_KEY_SIC </item>
+      <item> NCURSES_KEY_SLEFT </item>
+      <item> NCURSES_KEY_SMESSAGE </item>
+      <item> NCURSES_KEY_SMOVE </item>
+      <item> NCURSES_KEY_SNEXT </item>
+      <item> NCURSES_KEY_SOPTIONS </item>
+      <item> NCURSES_KEY_SPREVIOUS </item>
+      <item> NCURSES_KEY_SPRINT </item>
+      <item> NCURSES_KEY_SREDO </item>
+      <item> NCURSES_KEY_SREPLACE </item>
+      <item> NCURSES_KEY_SRIGHT </item>
+      <item> NCURSES_KEY_SRSUME </item>
+      <item> NCURSES_KEY_SSAVE </item>
+      <item> NCURSES_KEY_SSUSPEND </item>
+      <item> NCURSES_KEY_SUNDO </item>
+      <item> NCURSES_KEY_SUSPEND </item>
+      <item> NCURSES_KEY_UNDO </item>
+      <item> NCURSES_KEY_RESIZE </item>
+      <item> NCURSES_A_NORMAL </item>
+      <item> NCURSES_A_STANDOUT </item>
+      <item> NCURSES_A_UNDERLINE </item>
+      <item> NCURSES_A_REVERSE </item>
+      <item> NCURSES_A_BLINK </item>
+      <item> NCURSES_A_DIM </item>
+      <item> NCURSES_A_BOLD </item>
+      <item> NCURSES_A_PROTECT </item>
+      <item> NCURSES_A_INVIS </item>
+      <item> NCURSES_A_ALTCHARSET </item>
+      <item> NCURSES_A_CHARTEXT </item>
+      <item> NCURSES_BUTTON1_PRESSED </item>
+      <item> NCURSES_BUTTON1_RELEASED </item>
+      <item> NCURSES_BUTTON1_CLICKED </item>
+      <item> NCURSES_BUTTON1_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON1_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON2_PRESSED </item>
+      <item> NCURSES_BUTTON2_RELEASED </item>
+      <item> NCURSES_BUTTON2_CLICKED </item>
+      <item> NCURSES_BUTTON2_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON2_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON3_PRESSED </item>
+      <item> NCURSES_BUTTON3_RELEASED </item>
+      <item> NCURSES_BUTTON3_CLICKED </item>
+      <item> NCURSES_BUTTON3_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON3_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON4_PRESSED </item>
+      <item> NCURSES_BUTTON4_RELEASED </item>
+      <item> NCURSES_BUTTON4_CLICKED </item>
+      <item> NCURSES_BUTTON4_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON4_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON_SHIFT </item>
+      <item> NCURSES_BUTTON_CTRL </item>
+      <item> NCURSES_BUTTON_ALT </item>
+      <item> NCURSES_ALL_MOUSE_EVENTS </item>
+      <item> NCURSES_REPORT_MOUSE_POSITION </item>
+      <item> ODBC_TYPE </item>
+      <item> ODBC_BINMODE_PASSTHRU </item>
+      <item> ODBC_BINMODE_RETURN </item>
+      <item> ODBC_BINMODE_CONVERT </item>
+      <item> SQL_ODBC_CURSORS </item>
+      <item> SQL_CUR_USE_DRIVER </item>
+      <item> SQL_CUR_USE_IF_NEEDED </item>
+      <item> SQL_CUR_USE_ODBC </item>
+      <item> SQL_CONCURRENCY </item>
+      <item> SQL_CONCUR_READ_ONLY </item>
+      <item> SQL_CONCUR_LOCK </item>
+      <item> SQL_CONCUR_ROWVER </item>
+      <item> SQL_CONCUR_VALUES </item>
+      <item> SQL_CURSOR_TYPE </item>
+      <item> SQL_CURSOR_FORWARD_ONLY </item>
+      <item> SQL_CURSOR_KEYSET_DRIVEN </item>
+      <item> SQL_CURSOR_DYNAMIC </item>
+      <item> SQL_CURSOR_STATIC </item>
+      <item> SQL_KEYSET_SIZE </item>
+      <item> SQL_FETCH_FIRST </item>
+      <item> SQL_FETCH_NEXT </item>
+      <item> SQL_CHAR </item>
+      <item> SQL_VARCHAR </item>
+      <item> SQL_LONGVARCHAR </item>
+      <item> SQL_DECIMAL </item>
+      <item> SQL_NUMERIC </item>
+      <item> SQL_BIT </item>
+      <item> SQL_TINYINT </item>
+      <item> SQL_SMALLINT </item>
+      <item> SQL_INTEGER </item>
+      <item> SQL_BIGINT </item>
+      <item> SQL_REAL </item>
+      <item> SQL_FLOAT </item>
+      <item> SQL_DOUBLE </item>
+      <item> SQL_BINARY </item>
+      <item> SQL_VARBINARY </item>
+      <item> SQL_LONGVARBINARY </item>
+      <item> SQL_DATE </item>
+      <item> SQL_TIME </item>
+      <item> SQL_TIMESTAMP </item>
+      <item> X509_PURPOSE_SSL_CLIENT </item>
+      <item> X509_PURPOSE_SSL_SERVER </item>
+      <item> X509_PURPOSE_NS_SSL_SERVER </item>
+      <item> X509_PURPOSE_SMIME_SIGN </item>
+      <item> X509_PURPOSE_SMIME_ENCRYPT </item>
+      <item> X509_PURPOSE_CRL_SIGN </item>
+      <item> X509_PURPOSE_ANY </item>
+      <item> OPENSSL_ALGO_SHA1 </item>
+      <item> OPENSSL_ALGO_MD5 </item>
+      <item> OPENSSL_ALGO_MD4 </item>
+      <item> OPENSSL_ALGO_MD2 </item>
+      <item> PKCS7_DETACHED </item>
+      <item> PKCS7_TEXT </item>
+      <item> PKCS7_NOINTERN </item>
+      <item> PKCS7_NOVERIFY </item>
+      <item> PKCS7_NOCHAIN </item>
+      <item> PKCS7_NOCERTS </item>
+      <item> PKCS7_NOATTR </item>
+      <item> PKCS7_BINARY </item>
+      <item> PKCS7_NOSIGS </item>
+      <item> OPENSSL_PKCS1_PADDING </item>
+      <item> OPENSSL_SSLV23_PADDING </item>
+      <item> OPENSSL_NO_PADDING </item>
+      <item> OPENSSL_PKCS1_OAEP_PADDING </item>
+      <item> OPENSSL_CIPHER_RC2_40 </item>
+      <item> OPENSSL_CIPHER_RC2_128 </item>
+      <item> OPENSSL_CIPHER_RC2_64 </item>
+      <item> OPENSSL_CIPHER_DES </item>
+      <item> OPENSSL_CIPHER_3DES </item>
+      <item> OPENSSL_KEYTYPE_RSA </item>
+      <item> OPENSSL_KEYTYPE_DSA </item>
+      <item> OPENSSL_KEYTYPE_DH </item>
+      <item> WNOHANG </item>
+      <item> WUNTRACED </item>
+      <item> SIG_IGN </item>
+      <item> SIG_DFL </item>
+      <item> SIG_ERR </item>
+      <item> SIGHUP </item>
+      <item> SIGINT </item>
+      <item> SIGQUIT </item>
+      <item> SIGILL </item>
+      <item> SIGTRAP </item>
+      <item> SIGABRT </item>
+      <item> SIGIOT </item>
+      <item> SIGBUS </item>
+      <item> SIGFPE </item>
+      <item> SIGKILL </item>
+      <item> SIGUSR1 </item>
+      <item> SIGSEGV </item>
+      <item> SIGUSR2 </item>
+      <item> SIGPIPE </item>
+      <item> SIGALRM </item>
+      <item> SIGTERM </item>
+      <item> SIGSTKFLT </item>
+      <item> SIGCLD </item>
+      <item> SIGCHLD </item>
+      <item> SIGCONT </item>
+      <item> SIGSTOP </item>
+      <item> SIGTSTP </item>
+      <item> SIGTTIN </item>
+      <item> SIGTTOU </item>
+      <item> SIGURG </item>
+      <item> SIGXCPU </item>
+      <item> SIGXFSZ </item>
+      <item> SIGVTALRM </item>
+      <item> SIGPROF </item>
+      <item> SIGWINCH </item>
+      <item> SIGPOLL </item>
+      <item> SIGIO </item>
+      <item> SIGPWR </item>
+      <item> SIGSYS </item>
+      <item> SIGBABY </item>
+      <item> PRIO_PGRP </item>
+      <item> PRIO_USER </item>
+      <item> PRIO_PROCESS </item>
+      <item> PGSQL_CONNECT_FORCE_NEW </item>
+      <item> PGSQL_ASSOC </item>
+      <item> PGSQL_NUM </item>
+      <item> PGSQL_BOTH </item>
+      <item> PGSQL_CONNECTION_BAD </item>
+      <item> PGSQL_CONNECTION_OK </item>
+      <item> PGSQL_SEEK_SET </item>
+      <item> PGSQL_SEEK_CUR </item>
+      <item> PGSQL_SEEK_END </item>
+      <item> PGSQL_STATUS_LONG </item>
+      <item> PGSQL_STATUS_STRING </item>
+      <item> PGSQL_EMPTY_QUERY </item>
+      <item> PGSQL_COMMAND_OK </item>
+      <item> PGSQL_TUPLES_OK </item>
+      <item> PGSQL_COPY_OUT </item>
+      <item> PGSQL_COPY_IN </item>
+      <item> PGSQL_BAD_RESPONSE </item>
+      <item> PGSQL_NONFATAL_ERROR </item>
+      <item> PGSQL_FATAL_ERROR </item>
+      <item> PGSQL_CONV_IGNORE_DEFAULT </item>
+      <item> PGSQL_CONV_FORCE_NULL </item>
+      <item> PGSQL_CONV_IGNORE_NOT_NULL </item>
+      <item> PGSQL_DML_NO_CONV </item>
+      <item> PGSQL_DML_EXEC </item>
+      <item> PGSQL_DML_ASYNC </item>
+      <item> PGSQL_DML_STRING </item>
+      <item> SNMP_VALUE_LIBRARY </item>
+      <item> SNMP_VALUE_PLAIN </item>
+      <item> SNMP_VALUE_OBJECT </item>
+      <item> SNMP_BIT_STR </item>
+      <item> SNMP_OCTET_STR </item>
+      <item> SNMP_OPAQUE </item>
+      <item> SNMP_NULL </item>
+      <item> SNMP_OBJECT_ID </item>
+      <item> SNMP_IPADDRESS </item>
+      <item> SNMP_COUNTER </item>
+      <item> SNMP_UNSIGNED </item>
+      <item> SNMP_TIMETICKS </item>
+      <item> SNMP_UINTEGER </item>
+      <item> SNMP_INTEGER </item>
+      <item> SNMP_COUNTER64 </item>
+      <item> SOAP_1_1 </item>
+      <item> SOAP_1_2 </item>
+      <item> SOAP_PERSISTENCE_SESSION </item>
+      <item> SOAP_PERSISTENCE_REQUEST </item>
+      <item> SOAP_FUNCTIONS_ALL </item>
+      <item> SOAP_ENCODED </item>
+      <item> SOAP_LITERAL </item>
+      <item> SOAP_RPC </item>
+      <item> SOAP_DOCUMENT </item>
+      <item> SOAP_ACTOR_NEXT </item>
+      <item> SOAP_ACTOR_NONE </item>
+      <item> SOAP_ACTOR_UNLIMATERECEIVER </item>
+      <item> SOAP_COMPRESSION_ACCEPT </item>
+      <item> SOAP_COMPRESSION_GZIP </item>
+      <item> SOAP_COMPRESSION_DEFLATE </item>
+      <item> UNKNOWN_TYPE </item>
+      <item> XSD_STRING </item>
+      <item> XSD_BOOLEAN </item>
+      <item> XSD_DECIMAL </item>
+      <item> XSD_FLOAT </item>
+      <item> XSD_DOUBLE </item>
+      <item> XSD_DURATION </item>
+      <item> XSD_DATETIME </item>
+      <item> XSD_TIME </item>
+      <item> XSD_DATE </item>
+      <item> XSD_GYEARMONTH </item>
+      <item> XSD_GYEAR </item>
+      <item> XSD_GMONTHDAY </item>
+      <item> XSD_GDAY </item>
+      <item> XSD_GMONTH </item>
+      <item> XSD_HEXBINARY </item>
+      <item> XSD_BASE64BINARY </item>
+      <item> XSD_ANYURI </item>
+      <item> XSD_QNAME </item>
+      <item> XSD_NOTATION </item>
+      <item> XSD_NORMALIZEDSTRING </item>
+      <item> XSD_TOKEN </item>
+      <item> XSD_LANGUAGE </item>
+      <item> XSD_NMTOKEN </item>
+      <item> XSD_NAME </item>
+      <item> XSD_NCNAME </item>
+      <item> XSD_ID </item>
+      <item> XSD_IDREF </item>
+      <item> XSD_IDREFS </item>
+      <item> XSD_ENTITY </item>
+      <item> XSD_ENTITIES </item>
+      <item> XSD_INTEGER </item>
+      <item> XSD_NONPOSITIVEINTEGER </item>
+      <item> XSD_NEGATIVEINTEGER </item>
+      <item> XSD_LONG </item>
+      <item> XSD_INT </item>
+      <item> XSD_SHORT </item>
+      <item> XSD_BYTE </item>
+      <item> XSD_NONNEGATIVEINTEGER </item>
+      <item> XSD_UNSIGNEDLONG </item>
+      <item> XSD_UNSIGNEDINT </item>
+      <item> XSD_UNSIGNEDSHORT </item>
+      <item> XSD_UNSIGNEDBYTE </item>
+      <item> XSD_POSITIVEINTEGER </item>
+      <item> XSD_NMTOKENS </item>
+      <item> XSD_ANYTYPE </item>
+      <item> SOAP_ENC_OBJECT </item>
+      <item> SOAP_ENC_ARRAY </item>
+      <item> XSD_1999_TIMEINSTANT </item>
+      <item> XSD_NAMESPACE </item>
+      <item> XSD_1999_NAMESPACE </item>
+      <item> AF_UNIX </item>
+      <item> AF_INET </item>
+      <item> AF_INET6 </item>
+      <item> SOCK_STREAM </item>
+      <item> SOCK_DGRAM </item>
+      <item> SOCK_RAW </item>
+      <item> SOCK_SEQPACKET </item>
+      <item> SOCK_RDM </item>
+      <item> MSG_OOB </item>
+      <item> MSG_WAITALL </item>
+      <item> MSG_PEEK </item>
+      <item> MSG_DONTROUTE </item>
+      <item> SO_DEBUG </item>
+      <item> SO_REUSEADDR </item>
+      <item> SO_KEEPALIVE </item>
+      <item> SO_DONTROUTE </item>
+      <item> SO_LINGER </item>
+      <item> SO_BROADCAST </item>
+      <item> SO_OOBINLINE </item>
+      <item> SO_SNDBUF </item>
+      <item> SO_RCVBUF </item>
+      <item> SO_SNDLOWAT </item>
+      <item> SO_RCVLOWAT </item>
+      <item> SO_SNDTIMEO </item>
+      <item> SO_RCVTIMEO </item>
+      <item> SO_TYPE </item>
+      <item> SO_ERROR </item>
+      <item> SOL_SOCKET </item>
+      <item> SOMAXCONN </item>
+      <item> PHP_NORMAL_READ </item>
+      <item> PHP_BINARY_READ </item>
+      <item> SOCKET_EPERM </item>
+      <item> SOCKET_ENOENT </item>
+      <item> SOCKET_EINTR </item>
+      <item> SOCKET_EIO </item>
+      <item> SOCKET_ENXIO </item>
+      <item> SOCKET_E2BIG </item>
+      <item> SOCKET_EBADF </item>
+      <item> SOCKET_EAGAIN </item>
+      <item> SOCKET_ENOMEM </item>
+      <item> SOCKET_EACCES </item>
+      <item> SOCKET_EFAULT </item>
+      <item> SOCKET_ENOTBLK </item>
+      <item> SOCKET_EBUSY </item>
+      <item> SOCKET_EEXIST </item>
+      <item> SOCKET_EXDEV </item>
+      <item> SOCKET_ENODEV </item>
+      <item> SOCKET_ENOTDIR </item>
+      <item> SOCKET_EISDIR </item>
+      <item> SOCKET_EINVAL </item>
+      <item> SOCKET_ENFILE </item>
+      <item> SOCKET_EMFILE </item>
+      <item> SOCKET_ENOTTY </item>
+      <item> SOCKET_ENOSPC </item>
+      <item> SOCKET_ESPIPE </item>
+      <item> SOCKET_EROFS </item>
+      <item> SOCKET_EMLINK </item>
+      <item> SOCKET_EPIPE </item>
+      <item> SOCKET_ENAMETOOLONG </item>
+      <item> SOCKET_ENOLCK </item>
+      <item> SOCKET_ENOSYS </item>
+      <item> SOCKET_ENOTEMPTY </item>
+      <item> SOCKET_ELOOP </item>
+      <item> SOCKET_EWOULDBLOCK </item>
+      <item> SOCKET_ENOMSG </item>
+      <item> SOCKET_EIDRM </item>
+      <item> SOCKET_ECHRNG </item>
+      <item> SOCKET_EL2NSYNC </item>
+      <item> SOCKET_EL3HLT </item>
+      <item> SOCKET_EL3RST </item>
+      <item> SOCKET_ELNRNG </item>
+      <item> SOCKET_EUNATCH </item>
+      <item> SOCKET_ENOCSI </item>
+      <item> SOCKET_EL2HLT </item>
+      <item> SOCKET_EBADE </item>
+      <item> SOCKET_EBADR </item>
+      <item> SOCKET_EXFULL </item>
+      <item> SOCKET_ENOANO </item>
+      <item> SOCKET_EBADRQC </item>
+      <item> SOCKET_EBADSLT </item>
+      <item> SOCKET_ENOSTR </item>
+      <item> SOCKET_ENODATA </item>
+      <item> SOCKET_ETIME </item>
+      <item> SOCKET_ENOSR </item>
+      <item> SOCKET_ENONET </item>
+      <item> SOCKET_EREMOTE </item>
+      <item> SOCKET_ENOLINK </item>
+      <item> SOCKET_EADV </item>
+      <item> SOCKET_ESRMNT </item>
+      <item> SOCKET_ECOMM </item>
+      <item> SOCKET_EPROTO </item>
+      <item> SOCKET_EMULTIHOP </item>
+      <item> SOCKET_EBADMSG </item>
+      <item> SOCKET_ENOTUNIQ </item>
+      <item> SOCKET_EBADFD </item>
+      <item> SOCKET_EREMCHG </item>
+      <item> SOCKET_ERESTART </item>
+      <item> SOCKET_ESTRPIPE </item>
+      <item> SOCKET_EUSERS </item>
+      <item> SOCKET_ENOTSOCK </item>
+      <item> SOCKET_EDESTADDRREQ </item>
+      <item> SOCKET_EMSGSIZE </item>
+      <item> SOCKET_EPROTOTYPE </item>
+      <item> SOCKET_ENOPROTOOPT </item>
+      <item> SOCKET_EPROTONOSUPPORT </item>
+      <item> SOCKET_ESOCKTNOSUPPORT </item>
+      <item> SOCKET_EOPNOTSUPP </item>
+      <item> SOCKET_EPFNOSUPPORT </item>
+      <item> SOCKET_EAFNOSUPPORT </item>
+      <item> SOCKET_EADDRINUSE </item>
+      <item> SOCKET_EADDRNOTAVAIL </item>
+      <item> SOCKET_ENETDOWN </item>
+      <item> SOCKET_ENETUNREACH </item>
+      <item> SOCKET_ENETRESET </item>
+      <item> SOCKET_ECONNABORTED </item>
+      <item> SOCKET_ECONNRESET </item>
+      <item> SOCKET_ENOBUFS </item>
+      <item> SOCKET_EISCONN </item>
+      <item> SOCKET_ENOTCONN </item>
+      <item> SOCKET_ESHUTDOWN </item>
+      <item> SOCKET_ETOOMANYREFS </item>
+      <item> SOCKET_ETIMEDOUT </item>
+      <item> SOCKET_ECONNREFUSED </item>
+      <item> SOCKET_EHOSTDOWN </item>
+      <item> SOCKET_EHOSTUNREACH </item>
+      <item> SOCKET_EALREADY </item>
+      <item> SOCKET_EINPROGRESS </item>
+      <item> SOCKET_EISNAM </item>
+      <item> SOCKET_EREMOTEIO </item>
+      <item> SOCKET_EDQUOT </item>
+      <item> SOCKET_ENOMEDIUM </item>
+      <item> SOCKET_EMEDIUMTYPE </item>
+      <item> SOL_TCP </item>
+      <item> SOL_UDP </item>
+      <item> SQLITE_BOTH </item>
+      <item> SQLITE_NUM </item>
+      <item> SQLITE_ASSOC </item>
+      <item> SQLITE_OK </item>
+      <item> SQLITE_ERROR </item>
+      <item> SQLITE_INTERNAL </item>
+      <item> SQLITE_PERM </item>
+      <item> SQLITE_ABORT </item>
+      <item> SQLITE_BUSY </item>
+      <item> SQLITE_LOCKED </item>
+      <item> SQLITE_NOMEM </item>
+      <item> SQLITE_READONLY </item>
+      <item> SQLITE_INTERRUPT </item>
+      <item> SQLITE_IOERR </item>
+      <item> SQLITE_CORRUPT </item>
+      <item> SQLITE_NOTFOUND </item>
+      <item> SQLITE_FULL </item>
+      <item> SQLITE_CANTOPEN </item>
+      <item> SQLITE_PROTOCOL </item>
+      <item> SQLITE_EMPTY </item>
+      <item> SQLITE_SCHEMA </item>
+      <item> SQLITE_TOOBIG </item>
+      <item> SQLITE_CONSTRAINT </item>
+      <item> SQLITE_MISMATCH </item>
+      <item> SQLITE_MISUSE </item>
+      <item> SQLITE_NOLFS </item>
+      <item> SQLITE_AUTH </item>
+      <item> SQLITE_FORMAT </item>
+      <item> SQLITE_ROW </item>
+      <item> SQLITE_DONE </item>
+      <item> MSG_IPC_NOWAIT </item>
+      <item> MSG_NOERROR </item>
+      <item> MSG_EXCEPT </item>
+      <item> T_INCLUDE </item>
+      <item> T_INCLUDE_ONCE </item>
+      <item> T_EVAL </item>
+      <item> T_REQUIRE </item>
+      <item> T_REQUIRE_ONCE </item>
+      <item> T_LOGICAL_OR </item>
+      <item> T_LOGICAL_XOR </item>
+      <item> T_LOGICAL_AND </item>
+      <item> T_PRINT </item>
+      <item> T_PLUS_EQUAL </item>
+      <item> T_MINUS_EQUAL </item>
+      <item> T_MUL_EQUAL </item>
+      <item> T_DIV_EQUAL </item>
+      <item> T_CONCAT_EQUAL </item>
+      <item> T_MOD_EQUAL </item>
+      <item> T_AND_EQUAL </item>
+      <item> T_OR_EQUAL </item>
+      <item> T_XOR_EQUAL </item>
+      <item> T_SL_EQUAL </item>
+      <item> T_SR_EQUAL </item>
+      <item> T_BOOLEAN_OR </item>
+      <item> T_BOOLEAN_AND </item>
+      <item> T_IS_EQUAL </item>
+      <item> T_IS_NOT_EQUAL </item>
+      <item> T_IS_IDENTICAL </item>
+      <item> T_IS_NOT_IDENTICAL </item>
+      <item> T_IS_SMALLER_OR_EQUAL </item>
+      <item> T_IS_GREATER_OR_EQUAL </item>
+      <item> T_SL </item>
+      <item> T_SR </item>
+      <item> T_INC </item>
+      <item> T_DEC </item>
+      <item> T_INT_CAST </item>
+      <item> T_DOUBLE_CAST </item>
+      <item> T_STRING_CAST </item>
+      <item> T_ARRAY_CAST </item>
+      <item> T_OBJECT_CAST </item>
+      <item> T_BOOL_CAST </item>
+      <item> T_UNSET_CAST </item>
+      <item> T_NEW </item>
+      <item> T_EXIT </item>
+      <item> T_IF </item>
+      <item> T_ELSEIF </item>
+      <item> T_ELSE </item>
+      <item> T_ENDIF </item>
+      <item> T_LNUMBER </item>
+      <item> T_DNUMBER </item>
+      <item> T_STRING </item>
+      <item> T_STRING_VARNAME </item>
+      <item> T_VARIABLE </item>
+      <item> T_NUM_STRING </item>
+      <item> T_INLINE_HTML </item>
+      <item> T_CHARACTER </item>
+      <item> T_BAD_CHARACTER </item>
+      <item> T_ENCAPSED_AND_WHITESPACE </item>
+      <item> T_CONSTANT_ENCAPSED_STRING </item>
+      <item> T_ECHO </item>
+      <item> T_DO </item>
+      <item> T_WHILE </item>
+      <item> T_ENDWHILE </item>
+      <item> T_FOR </item>
+      <item> T_ENDFOR </item>
+      <item> T_FOREACH </item>
+      <item> T_ENDFOREACH </item>
+      <item> T_DECLARE </item>
+      <item> T_ENDDECLARE </item>
+      <item> T_AS </item>
+      <item> T_SWITCH </item>
+      <item> T_ENDSWITCH </item>
+      <item> T_CASE </item>
+      <item> T_DEFAULT </item>
+      <item> T_BREAK </item>
+      <item> T_CONTINUE </item>
+      <item> T_FUNCTION </item>
+      <item> T_CONST </item>
+      <item> T_RETURN </item>
+      <item> T_USE </item>
+      <item> T_GLOBAL </item>
+      <item> T_STATIC </item>
+      <item> T_VAR </item>
+      <item> T_UNSET </item>
+      <item> T_ISSET </item>
+      <item> T_EMPTY </item>
+      <item> T_CLASS </item>
+      <item> T_EXTENDS </item>
+      <item> T_INTERFACE </item>
+      <item> T_IMPLEMENTS </item>
+      <item> T_OBJECT_OPERATOR </item>
+      <item> T_DOUBLE_ARROW </item>
+      <item> T_LIST </item>
+      <item> T_ARRAY </item>
+      <item> T_CLASS_C </item>
+      <item> T_FUNC_C </item>
+      <item> T_METHOD_C </item>
+      <item> T_LINE </item>
+      <item> T_FILE </item>
+      <item> T_COMMENT </item>
+      <item> T_DOC_COMMENT </item>
+      <item> T_OPEN_TAG </item>
+      <item> T_OPEN_TAG_WITH_ECHO </item>
+      <item> T_CLOSE_TAG </item>
+      <item> T_WHITESPACE </item>
+      <item> T_START_HEREDOC </item>
+      <item> T_END_HEREDOC </item>
+      <item> T_DOLLAR_OPEN_CURLY_BRACES </item>
+      <item> T_CURLY_OPEN </item>
+      <item> T_PAAMAYIM_NEKUDOTAYIM </item>
+      <item> T_DOUBLE_COLON </item>
+      <item> T_ABSTRACT </item>
+      <item> T_CATCH </item>
+      <item> T_FINAL </item>
+      <item> T_INSTANCEOF </item>
+      <item> T_PRIVATE </item>
+      <item> T_PROTECTED </item>
+      <item> T_PUBLIC </item>
+      <item> T_THROW </item>
+      <item> T_TRY </item>
+      <item> T_CLONE </item>
+      <item> XSL_CLONE_AUTO </item>
+      <item> XSL_CLONE_NEVER </item>
+      <item> XSL_CLONE_ALWAYS </item>
+      <item> YPERR_BADARGS </item>
+      <item> YPERR_BADDB </item>
+      <item> YPERR_BUSY </item>
+      <item> YPERR_DOMAIN </item>
+      <item> YPERR_KEY </item>
+      <item> YPERR_MAP </item>
+      <item> YPERR_NODOM </item>
+      <item> YPERR_NOMORE </item>
+      <item> YPERR_PMAP </item>
+      <item> YPERR_RESRC </item>
+      <item> YPERR_RPC </item>
+      <item> YPERR_YPBIND </item>
+      <item> YPERR_YPERR </item>
+      <item> YPERR_YPSERV </item>
+      <item> YPERR_VERS </item>
+      <item> FORCE_GZIP </item>
+      <item> FORCE_DEFLATE </item>
+      <item> E_ERROR </item>
+      <item> E_WARNING </item>
+      <item> E_PARSE </item>
+      <item> E_NOTICE </item>
+      <item> E_STRICT </item>
+      <item> E_CORE_ERROR </item>
+      <item> E_CORE_WARNING </item>
+      <item> E_COMPILE_ERROR </item>
+      <item> E_COMPILE_WARNING </item>
+      <item> E_USER_ERROR </item>
+      <item> E_USER_WARNING </item>
+      <item> E_USER_NOTICE </item>
+      <item> E_ALL </item>
+      <item> TRUE </item>
+      <item> FALSE </item>
+      <item> ZEND_THREAD_SAFE </item>
+      <item> NULL </item>
+      <item> PHP_VERSION </item>
+      <item> PHP_OS </item>
+      <item> PHP_SAPI </item>
+      <item> DEFAULT_INCLUDE_PATH </item>
+      <item> PEAR_INSTALL_DIR </item>
+      <item> PEAR_EXTENSION_DIR </item>
+      <item> PHP_EXTENSION_DIR </item>
+      <item> PHP_PREFIX </item>
+      <item> PHP_BINDIR </item>
+      <item> PHP_LIBDIR </item>
+      <item> PHP_DATADIR </item>
+      <item> PHP_SYSCONFDIR </item>
+      <item> PHP_LOCALSTATEDIR </item>
+      <item> PHP_CONFIG_FILE_PATH </item>
+      <item> PHP_CONFIG_FILE_SCAN_DIR </item>
+      <item> PHP_SHLIB_SUFFIX </item>
+      <item> PHP_EOL </item>
+      <item> PHP_OUTPUT_HANDLER_START </item>
+      <item> PHP_OUTPUT_HANDLER_CONT </item>
+      <item> PHP_OUTPUT_HANDLER_END </item>
+      <item> UPLOAD_ERR_OK </item>
+      <item> UPLOAD_ERR_INI_SIZE </item>
+      <item> UPLOAD_ERR_FORM_SIZE </item>
+      <item> UPLOAD_ERR_PARTIAL </item>
+      <item> UPLOAD_ERR_NO_FILE </item>
+      <item> UPLOAD_ERR_NO_TMP_DIR </item>
+      <item> P_STATIC </item>
+      <item> P_PUBLIC </item>
+      <item> P_PROTECTED </item>
+      <item> P_PRIVATE </item>
+      <item> M_STATIC </item>
+      <item> M_PUBLIC </item>
+      <item> M_PROTECTED </item>
+      <item> M_PRIVATE </item>
+      <item> M_ABSTRACT </item>
+      <item> M_FINAL </item>
+      <item> C_IMPLICIT_ABSTRACT </item>
+      <item> C_EXPLICIT_ABSTRACT </item>
+      <item> C_FINAL </item>
+      <item> XML_ERROR_NONE </item>
+      <item> XML_ERROR_NO_MEMORY </item>
+      <item> XML_ERROR_SYNTAX </item>
+      <item> XML_ERROR_NO_ELEMENTS </item>
+      <item> XML_ERROR_INVALID_TOKEN </item>
+      <item> XML_ERROR_UNCLOSED_TOKEN </item>
+      <item> XML_ERROR_PARTIAL_CHAR </item>
+      <item> XML_ERROR_TAG_MISMATCH </item>
+      <item> XML_ERROR_DUPLICATE_ATTRIBUTE </item>
+      <item> XML_ERROR_JUNK_AFTER_DOC_ELEMENT </item>
+      <item> XML_ERROR_PARAM_ENTITY_REF </item>
+      <item> XML_ERROR_UNDEFINED_ENTITY </item>
+      <item> XML_ERROR_RECURSIVE_ENTITY_REF </item>
+      <item> XML_ERROR_ASYNC_ENTITY </item>
+      <item> XML_ERROR_BAD_CHAR_REF </item>
+      <item> XML_ERROR_BINARY_ENTITY_REF </item>
+      <item> XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF </item>
+      <item> XML_ERROR_MISPLACED_XML_PI </item>
+      <item> XML_ERROR_UNKNOWN_ENCODING </item>
+      <item> XML_ERROR_INCORRECT_ENCODING </item>
+      <item> XML_ERROR_UNCLOSED_CDATA_SECTION </item>
+      <item> XML_ERROR_EXTERNAL_ENTITY_HANDLING </item>
+      <item> XML_OPTION_CASE_FOLDING </item>
+      <item> XML_OPTION_TARGET_ENCODING </item>
+      <item> XML_OPTION_SKIP_TAGSTART </item>
+      <item> XML_OPTION_SKIP_WHITE </item>
+      <item> XML_SAX_IMPL </item>
+      <item> CONNECTION_ABORTED </item>
+      <item> CONNECTION_NORMAL </item>
+      <item> CONNECTION_TIMEOUT </item>
+      <item> INI_USER </item>
+      <item> INI_PERDIR </item>
+      <item> INI_SYSTEM </item>
+      <item> INI_ALL </item>
+      <item> SUNFUNCS_RET_TIMESTAMP </item>
+      <item> SUNFUNCS_RET_STRING </item>
+      <item> SUNFUNCS_RET_DOUBLE </item>
+      <item> M_E </item>
+      <item> M_LOG2E </item>
+      <item> M_LOG10E </item>
+      <item> M_LN2 </item>
+      <item> M_LN10 </item>
+      <item> M_PI </item>
+      <item> M_PI_2 </item>
+      <item> M_PI_4 </item>
+      <item> M_1_PI </item>
+      <item> M_2_PI </item>
+      <item> M_2_SQRTPI </item>
+      <item> M_SQRT2 </item>
+      <item> M_SQRT1_2 </item>
+      <item> INF </item>
+      <item> NAN </item>
+      <item> INFO_GENERAL </item>
+      <item> INFO_CREDITS </item>
+      <item> INFO_CONFIGURATION </item>
+      <item> INFO_MODULES </item>
+      <item> INFO_ENVIRONMENT </item>
+      <item> INFO_VARIABLES </item>
+      <item> INFO_LICENSE </item>
+      <item> INFO_ALL </item>
+      <item> CREDITS_GROUP </item>
+      <item> CREDITS_GENERAL </item>
+      <item> CREDITS_SAPI </item>
+      <item> CREDITS_MODULES </item>
+      <item> CREDITS_DOCS </item>
+      <item> CREDITS_FULLPAGE </item>
+      <item> CREDITS_QA </item>
+      <item> CREDITS_ALL </item>
+      <item> HTML_SPECIALCHARS </item>
+      <item> HTML_ENTITIES </item>
+      <item> ENT_COMPAT </item>
+      <item> ENT_QUOTES </item>
+      <item> ENT_NOQUOTES </item>
+      <item> STR_PAD_LEFT </item>
+      <item> STR_PAD_RIGHT </item>
+      <item> STR_PAD_BOTH </item>
+      <item> PATHINFO_DIRNAME </item>
+      <item> PATHINFO_BASENAME </item>
+      <item> PATHINFO_EXTENSION </item>
+      <item> CHAR_MAX </item>
+      <item> LC_CTYPE </item>
+      <item> LC_NUMERIC </item>
+      <item> LC_TIME </item>
+      <item> LC_COLLATE </item>
+      <item> LC_MONETARY </item>
+      <item> LC_ALL </item>
+      <item> LC_MESSAGES </item>
+      <item> SEEK_SET </item>
+      <item> SEEK_CUR </item>
+      <item> SEEK_END </item>
+      <item> LOCK_SH </item>
+      <item> LOCK_EX </item>
+      <item> LOCK_UN </item>
+      <item> LOCK_NB </item>
+      <item> STREAM_NOTIFY_CONNECT </item>
+      <item> STREAM_NOTIFY_AUTH_REQUIRED </item>
+      <item> STREAM_NOTIFY_AUTH_RESULT </item>
+      <item> STREAM_NOTIFY_MIME_TYPE_IS </item>
+      <item> STREAM_NOTIFY_FILE_SIZE_IS </item>
+      <item> STREAM_NOTIFY_REDIRECTED </item>
+      <item> STREAM_NOTIFY_PROGRESS </item>
+      <item> STREAM_NOTIFY_FAILURE </item>
+      <item> STREAM_NOTIFY_COMPLETED </item>
+      <item> STREAM_NOTIFY_RESOLVE </item>
+      <item> STREAM_NOTIFY_SEVERITY_INFO </item>
+      <item> STREAM_NOTIFY_SEVERITY_WARN </item>
+      <item> STREAM_NOTIFY_SEVERITY_ERR </item>
+      <item> STREAM_FILTER_READ </item>
+      <item> STREAM_FILTER_WRITE </item>
+      <item> STREAM_FILTER_ALL </item>
+      <item> STREAM_CLIENT_PERSISTENT </item>
+      <item> STREAM_CLIENT_ASYNC_CONNECT </item>
+      <item> STREAM_CLIENT_CONNECT </item>
+      <item> STREAM_PEEK </item>
+      <item> STREAM_OOB </item>
+      <item> STREAM_SERVER_BIND </item>
+      <item> STREAM_SERVER_LISTEN </item>
+      <item> FILE_USE_INCLUDE_PATH </item>
+      <item> FILE_IGNORE_NEW_LINES </item>
+      <item> FILE_SKIP_EMPTY_LINES </item>
+      <item> FILE_APPEND </item>
+      <item> FILE_NO_DEFAULT_CONTEXT </item>
+      <item> FNM_NOESCAPE </item>
+      <item> FNM_PATHNAME </item>
+      <item> FNM_PERIOD </item>
+      <item> FNM_CASEFOLD </item>
+      <item> PSFS_PASS_ON </item>
+      <item> PSFS_FEED_ME </item>
+      <item> PSFS_ERR_FATAL </item>
+      <item> PSFS_FLAG_NORMAL </item>
+      <item> PSFS_FLAG_FLUSH_INC </item>
+      <item> PSFS_FLAG_FLUSH_CLOSE </item>
+      <item> ABDAY_1 </item>
+      <item> ABDAY_2 </item>
+      <item> ABDAY_3 </item>
+      <item> ABDAY_4 </item>
+      <item> ABDAY_5 </item>
+      <item> ABDAY_6 </item>
+      <item> ABDAY_7 </item>
+      <item> DAY_1 </item>
+      <item> DAY_2 </item>
+      <item> DAY_3 </item>
+      <item> DAY_4 </item>
+      <item> DAY_5 </item>
+      <item> DAY_6 </item>
+      <item> DAY_7 </item>
+      <item> ABMON_1 </item>
+      <item> ABMON_2 </item>
+      <item> ABMON_3 </item>
+      <item> ABMON_4 </item>
+      <item> ABMON_5 </item>
+      <item> ABMON_6 </item>
+      <item> ABMON_7 </item>
+      <item> ABMON_8 </item>
+      <item> ABMON_9 </item>
+      <item> ABMON_10 </item>
+      <item> ABMON_11 </item>
+      <item> ABMON_12 </item>
+      <item> MON_1 </item>
+      <item> MON_2 </item>
+      <item> MON_3 </item>
+      <item> MON_4 </item>
+      <item> MON_5 </item>
+      <item> MON_6 </item>
+      <item> MON_7 </item>
+      <item> MON_8 </item>
+      <item> MON_9 </item>
+      <item> MON_10 </item>
+      <item> MON_11 </item>
+      <item> MON_12 </item>
+      <item> AM_STR </item>
+      <item> PM_STR </item>
+      <item> D_T_FMT </item>
+      <item> D_FMT </item>
+      <item> T_FMT </item>
+      <item> T_FMT_AMPM </item>
+      <item> ERA </item>
+      <item> ERA_D_T_FMT </item>
+      <item> ERA_D_FMT </item>
+      <item> ERA_T_FMT </item>
+      <item> ALT_DIGITS </item>
+      <item> CRNCYSTR </item>
+      <item> RADIXCHAR </item>
+      <item> THOUSEP </item>
+      <item> YESEXPR </item>
+      <item> NOEXPR </item>
+      <item> CODESET </item>
+      <item> CRYPT_SALT_LENGTH </item>
+      <item> CRYPT_STD_DES </item>
+      <item> CRYPT_EXT_DES </item>
+      <item> CRYPT_MD5 </item>
+      <item> CRYPT_BLOWFISH </item>
+      <item> DIRECTORY_SEPARATOR </item>
+      <item> PATH_SEPARATOR </item>
+      <item> GLOB_BRACE </item>
+      <item> GLOB_MARK </item>
+      <item> GLOB_NOSORT </item>
+      <item> GLOB_NOCHECK </item>
+      <item> GLOB_NOESCAPE </item>
+      <item> GLOB_ONLYDIR </item>
+      <item> LOG_EMERG </item>
+      <item> LOG_ALERT </item>
+      <item> LOG_CRIT </item>
+      <item> LOG_ERR </item>
+      <item> LOG_WARNING </item>
+      <item> LOG_NOTICE </item>
+      <item> LOG_INFO </item>
+      <item> LOG_DEBUG </item>
+      <item> LOG_KERN </item>
+      <item> LOG_USER </item>
+      <item> LOG_MAIL </item>
+      <item> LOG_DAEMON </item>
+      <item> LOG_AUTH </item>
+      <item> LOG_SYSLOG </item>
+      <item> LOG_LPR </item>
+      <item> LOG_NEWS </item>
+      <item> LOG_UUCP </item>
+      <item> LOG_CRON </item>
+      <item> LOG_AUTHPRIV </item>
+      <item> LOG_LOCAL0 </item>
+      <item> LOG_LOCAL1 </item>
+      <item> LOG_LOCAL2 </item>
+      <item> LOG_LOCAL3 </item>
+      <item> LOG_LOCAL4 </item>
+      <item> LOG_LOCAL5 </item>
+      <item> LOG_LOCAL6 </item>
+      <item> LOG_LOCAL7 </item>
+      <item> LOG_PID </item>
+      <item> LOG_CONS </item>
+      <item> LOG_ODELAY </item>
+      <item> LOG_NDELAY </item>
+      <item> LOG_NOWAIT </item>
+      <item> LOG_PERROR </item>
+      <item> EXTR_OVERWRITE </item>
+      <item> EXTR_SKIP </item>
+      <item> EXTR_PREFIX_SAME </item>
+      <item> EXTR_PREFIX_ALL </item>
+      <item> EXTR_PREFIX_INVALID </item>
+      <item> EXTR_PREFIX_IF_EXISTS </item>
+      <item> EXTR_IF_EXISTS </item>
+      <item> EXTR_REFS </item>
+      <item> SORT_ASC </item>
+      <item> SORT_DESC </item>
+      <item> SORT_REGULAR </item>
+      <item> SORT_NUMERIC </item>
+      <item> SORT_STRING </item>
+      <item> SORT_LOCALE_STRING </item>
+      <item> CASE_LOWER </item>
+      <item> CASE_UPPER </item>
+      <item> COUNT_NORMAL </item>
+      <item> COUNT_RECURSIVE </item>
+      <item> ASSERT_ACTIVE </item>
+      <item> ASSERT_CALLBACK </item>
+      <item> ASSERT_BAIL </item>
+      <item> ASSERT_WARNING </item>
+      <item> ASSERT_QUIET_EVAL </item>
+      <item> STREAM_USE_PATH </item>
+      <item> STREAM_IGNORE_URL </item>
+      <item> STREAM_ENFORCE_SAFE_MODE </item>
+      <item> STREAM_REPORT_ERRORS </item>
+      <item> STREAM_MUST_SEEK </item>
+      <item> STREAM_URL_STAT_LINK </item>
+      <item> STREAM_URL_STAT_QUIET </item>
+      <item> STREAM_MKDIR_RECURSIVE </item>
+      <item> IMAGETYPE_GIF </item>
+      <item> IMAGETYPE_JPEG </item>
+      <item> IMAGETYPE_PNG </item>
+      <item> IMAGETYPE_SWF </item>
+      <item> IMAGETYPE_PSD </item>
+      <item> IMAGETYPE_BMP </item>
+      <item> IMAGETYPE_TIFF_II </item>
+      <item> IMAGETYPE_TIFF_MM </item>
+      <item> IMAGETYPE_JPC </item>
+      <item> IMAGETYPE_JP2 </item>
+      <item> IMAGETYPE_JPX </item>
+      <item> IMAGETYPE_JB2 </item>
+      <item> IMAGETYPE_IFF </item>
+      <item> IMAGETYPE_WBMP </item>
+      <item> IMAGETYPE_JPEG2000 </item>
+      <item> IMAGETYPE_XBM </item>
+      <item> DNS_A </item>
+      <item> DNS_NS </item>
+      <item> DNS_CNAME </item>
+      <item> DNS_SOA </item>
+      <item> DNS_PTR </item>
+      <item> DNS_HINFO </item>
+      <item> DNS_MX </item>
+      <item> DNS_TXT </item>
+      <item> DNS_SRV </item>
+      <item> DNS_NAPTR </item>
+      <item> DNS_AAAA </item>
+      <item> DNS_ANY </item>
+      <item> DNS_ALL </item>
+      <item> RIT_LEAVES_ONLY </item>
+      <item> RIT_SELF_FIRST </item>
+      <item> RIT_CHILD_FIRST </item>
+      <item> CIT_CALL_TOSTRING </item>
+      <item> CIT_CATCH_GET_CHILD </item>
+      <item> PREG_PATTERN_ORDER </item>
+      <item> PREG_SET_ORDER </item>
+      <item> PREG_OFFSET_CAPTURE </item>
+      <item> PREG_SPLIT_NO_EMPTY </item>
+      <item> PREG_SPLIT_DELIM_CAPTURE </item>
+      <item> PREG_SPLIT_OFFSET_CAPTURE </item>
+      <item> PREG_GREP_INVERT </item>
+      <item> CAL_GREGORIAN </item>
+      <item> CAL_JULIAN </item>
+      <item> CAL_JEWISH </item>
+      <item> CAL_FRENCH </item>
+      <item> CAL_NUM_CALS </item>
+      <item> CAL_DOW_DAYNO </item>
+      <item> CAL_DOW_SHORT </item>
+      <item> CAL_DOW_LONG </item>
+      <item> CAL_MONTH_GREGORIAN_SHORT </item>
+      <item> CAL_MONTH_GREGORIAN_LONG </item>
+      <item> CAL_MONTH_JULIAN_SHORT </item>
+      <item> CAL_MONTH_JULIAN_LONG </item>
+      <item> CAL_MONTH_JEWISH </item>
+      <item> CAL_MONTH_FRENCH </item>
+      <item> CAL_EASTER_DEFAULT </item>
+      <item> CAL_EASTER_ROMAN </item>
+      <item> CAL_EASTER_ALWAYS_GREGORIAN </item>
+      <item> CAL_EASTER_ALWAYS_JULIAN </item>
+      <item> CAL_JEWISH_ADD_ALAFIM_GERESH </item>
+      <item> CAL_JEWISH_ADD_ALAFIM </item>
+      <item> CAL_JEWISH_ADD_GERESHAYIM </item>
+      <item> CURLOPT_DNS_USE_GLOBAL_CACHE </item>
+      <item> CURLOPT_DNS_CACHE_TIMEOUT </item>
+      <item> CURLOPT_PORT </item>
+      <item> CURLOPT_FILE </item>
+      <item> CURLOPT_READDATA </item>
+      <item> CURLOPT_INFILE </item>
+      <item> CURLOPT_INFILESIZE </item>
+      <item> CURLOPT_URL </item>
+      <item> CURLOPT_PROXY </item>
+      <item> CURLOPT_VERBOSE </item>
+      <item> CURLOPT_HEADER </item>
+      <item> CURLOPT_HTTPHEADER </item>
+      <item> CURLOPT_NOPROGRESS </item>
+      <item> CURLOPT_NOBODY </item>
+      <item> CURLOPT_FAILONERROR </item>
+      <item> CURLOPT_UPLOAD </item>
+      <item> CURLOPT_POST </item>
+      <item> CURLOPT_FTPLISTONLY </item>
+      <item> CURLOPT_FTPAPPEND </item>
+      <item> CURLOPT_NETRC </item>
+      <item> CURLOPT_FOLLOWLOCATION </item>
+      <item> CURLOPT_FTPASCII </item>
+      <item> CURLOPT_PUT </item>
+      <item> CURLOPT_MUTE </item>
+      <item> CURLOPT_USERPWD </item>
+      <item> CURLOPT_PROXYUSERPWD </item>
+      <item> CURLOPT_RANGE </item>
+      <item> CURLOPT_TIMEOUT </item>
+      <item> CURLOPT_POSTFIELDS </item>
+      <item> CURLOPT_REFERER </item>
+      <item> CURLOPT_USERAGENT </item>
+      <item> CURLOPT_FTPPORT </item>
+      <item> CURLOPT_FTP_USE_EPSV </item>
+      <item> CURLOPT_LOW_SPEED_LIMIT </item>
+      <item> CURLOPT_LOW_SPEED_TIME </item>
+      <item> CURLOPT_RESUME_FROM </item>
+      <item> CURLOPT_COOKIE </item>
+      <item> CURLOPT_SSLCERT </item>
+      <item> CURLOPT_SSLCERTPASSWD </item>
+      <item> CURLOPT_WRITEHEADER </item>
+      <item> CURLOPT_SSL_VERIFYHOST </item>
+      <item> CURLOPT_COOKIEFILE </item>
+      <item> CURLOPT_SSLVERSION </item>
+      <item> CURLOPT_TIMECONDITION </item>
+      <item> CURLOPT_TIMEVALUE </item>
+      <item> CURLOPT_CUSTOMREQUEST </item>
+      <item> CURLOPT_STDERR </item>
+      <item> CURLOPT_TRANSFERTEXT </item>
+      <item> CURLOPT_RETURNTRANSFER </item>
+      <item> CURLOPT_QUOTE </item>
+      <item> CURLOPT_POSTQUOTE </item>
+      <item> CURLOPT_INTERFACE </item>
+      <item> CURLOPT_KRB4LEVEL </item>
+      <item> CURLOPT_HTTPPROXYTUNNEL </item>
+      <item> CURLOPT_FILETIME </item>
+      <item> CURLOPT_WRITEFUNCTION </item>
+      <item> CURLOPT_READFUNCTION </item>
+      <item> CURLOPT_PASSWDFUNCTION </item>
+      <item> CURLOPT_HEADERFUNCTION </item>
+      <item> CURLOPT_MAXREDIRS </item>
+      <item> CURLOPT_MAXCONNECTS </item>
+      <item> CURLOPT_CLOSEPOLICY </item>
+      <item> CURLOPT_FRESH_CONNECT </item>
+      <item> CURLOPT_FORBID_REUSE </item>
+      <item> CURLOPT_RANDOM_FILE </item>
+      <item> CURLOPT_EGDSOCKET </item>
+      <item> CURLOPT_CONNECTTIMEOUT </item>
+      <item> CURLOPT_SSL_VERIFYPEER </item>
+      <item> CURLOPT_CAINFO </item>
+      <item> CURLOPT_CAPATH </item>
+      <item> CURLOPT_COOKIEJAR </item>
+      <item> CURLOPT_SSL_CIPHER_LIST </item>
+      <item> CURLOPT_BINARYTRANSFER </item>
+      <item> CURLOPT_NOSIGNAL </item>
+      <item> CURLOPT_PROXYTYPE </item>
+      <item> CURLOPT_BUFFERSIZE </item>
+      <item> CURLOPT_HTTPGET </item>
+      <item> CURLOPT_HTTP_VERSION </item>
+      <item> CURLOPT_SSLKEY </item>
+      <item> CURLOPT_SSLKEYTYPE </item>
+      <item> CURLOPT_SSLKEYPASSWD </item>
+      <item> CURLOPT_SSLENGINE </item>
+      <item> CURLOPT_SSLENGINE_DEFAULT </item>
+      <item> CURLOPT_SSLCERTTYPE </item>
+      <item> CURLOPT_CRLF </item>
+      <item> CURLOPT_ENCODING </item>
+      <item> CURLOPT_PROXYPORT </item>
+      <item> CURLOPT_UNRESTRICTED_AUTH </item>
+      <item> CURLOPT_FTP_USE_EPRT </item>
+      <item> CURLOPT_HTTP200ALIASES </item>
+      <item> CURL_TIMECOND_IFMODSINCE </item>
+      <item> CURL_TIMECOND_IFUNMODSINCE </item>
+      <item> CURL_TIMECOND_LASTMOD </item>
+      <item> CURLOPT_HTTPAUTH </item>
+      <item> CURLAUTH_BASIC </item>
+      <item> CURLAUTH_DIGEST </item>
+      <item> CURLAUTH_GSSNEGOTIATE </item>
+      <item> CURLAUTH_NTLM </item>
+      <item> CURLAUTH_ANY </item>
+      <item> CURLAUTH_ANYSAFE </item>
+      <item> CURLOPT_PROXYAUTH </item>
+      <item> CURLCLOSEPOLICY_LEAST_RECENTLY_USED </item>
+      <item> CURLCLOSEPOLICY_LEAST_TRAFFIC </item>
+      <item> CURLCLOSEPOLICY_SLOWEST </item>
+      <item> CURLCLOSEPOLICY_CALLBACK </item>
+      <item> CURLCLOSEPOLICY_OLDEST </item>
+      <item> CURLINFO_EFFECTIVE_URL </item>
+      <item> CURLINFO_HTTP_CODE </item>
+      <item> CURLINFO_HEADER_SIZE </item>
+      <item> CURLINFO_REQUEST_SIZE </item>
+      <item> CURLINFO_TOTAL_TIME </item>
+      <item> CURLINFO_NAMELOOKUP_TIME </item>
+      <item> CURLINFO_CONNECT_TIME </item>
+      <item> CURLINFO_PRETRANSFER_TIME </item>
+      <item> CURLINFO_SIZE_UPLOAD </item>
+      <item> CURLINFO_SIZE_DOWNLOAD </item>
+      <item> CURLINFO_SPEED_DOWNLOAD </item>
+      <item> CURLINFO_SPEED_UPLOAD </item>
+      <item> CURLINFO_FILETIME </item>
+      <item> CURLINFO_SSL_VERIFYRESULT </item>
+      <item> CURLINFO_CONTENT_LENGTH_DOWNLOAD </item>
+      <item> CURLINFO_CONTENT_LENGTH_UPLOAD </item>
+      <item> CURLINFO_STARTTRANSFER_TIME </item>
+      <item> CURLINFO_CONTENT_TYPE </item>
+      <item> CURLINFO_REDIRECT_TIME </item>
+      <item> CURLINFO_REDIRECT_COUNT </item>
+      <item> CURL_VERSION_IPV6 </item>
+      <item> CURL_VERSION_KERBEROS4 </item>
+      <item> CURL_VERSION_SSL </item>
+      <item> CURL_VERSION_LIBZ </item>
+      <item> CURLVERSION_NOW </item>
+      <item> CURLE_OK </item>
+      <item> CURLE_UNSUPPORTED_PROTOCOL </item>
+      <item> CURLE_FAILED_INIT </item>
+      <item> CURLE_URL_MALFORMAT </item>
+      <item> CURLE_URL_MALFORMAT_USER </item>
+      <item> CURLE_COULDNT_RESOLVE_PROXY </item>
+      <item> CURLE_COULDNT_RESOLVE_HOST </item>
+      <item> CURLE_COULDNT_CONNECT </item>
+      <item> CURLE_FTP_WEIRD_SERVER_REPLY </item>
+      <item> CURLE_FTP_ACCESS_DENIED </item>
+      <item> CURLE_FTP_USER_PASSWORD_INCORRECT </item>
+      <item> CURLE_FTP_WEIRD_PASS_REPLY </item>
+      <item> CURLE_FTP_WEIRD_USER_REPLY </item>
+      <item> CURLE_FTP_WEIRD_PASV_REPLY </item>
+      <item> CURLE_FTP_WEIRD_227_FORMAT </item>
+      <item> CURLE_FTP_CANT_GET_HOST </item>
+      <item> CURLE_FTP_CANT_RECONNECT </item>
+      <item> CURLE_FTP_COULDNT_SET_BINARY </item>
+      <item> CURLE_PARTIAL_FILE </item>
+      <item> CURLE_FTP_COULDNT_RETR_FILE </item>
+      <item> CURLE_FTP_WRITE_ERROR </item>
+      <item> CURLE_FTP_QUOTE_ERROR </item>
+      <item> CURLE_HTTP_NOT_FOUND </item>
+      <item> CURLE_WRITE_ERROR </item>
+      <item> CURLE_MALFORMAT_USER </item>
+      <item> CURLE_FTP_COULDNT_STOR_FILE </item>
+      <item> CURLE_READ_ERROR </item>
+      <item> CURLE_OUT_OF_MEMORY </item>
+      <item> CURLE_OPERATION_TIMEOUTED </item>
+      <item> CURLE_FTP_COULDNT_SET_ASCII </item>
+      <item> CURLE_FTP_PORT_FAILED </item>
+      <item> CURLE_FTP_COULDNT_USE_REST </item>
+      <item> CURLE_FTP_COULDNT_GET_SIZE </item>
+      <item> CURLE_HTTP_RANGE_ERROR </item>
+      <item> CURLE_HTTP_POST_ERROR </item>
+      <item> CURLE_SSL_CONNECT_ERROR </item>
+      <item> CURLE_FTP_BAD_DOWNLOAD_RESUME </item>
+      <item> CURLE_FILE_COULDNT_READ_FILE </item>
+      <item> CURLE_LDAP_CANNOT_BIND </item>
+      <item> CURLE_LDAP_SEARCH_FAILED </item>
+      <item> CURLE_LIBRARY_NOT_FOUND </item>
+      <item> CURLE_FUNCTION_NOT_FOUND </item>
+      <item> CURLE_ABORTED_BY_CALLBACK </item>
+      <item> CURLE_BAD_FUNCTION_ARGUMENT </item>
+      <item> CURLE_BAD_CALLING_ORDER </item>
+      <item> CURLE_HTTP_PORT_FAILED </item>
+      <item> CURLE_BAD_PASSWORD_ENTERED </item>
+      <item> CURLE_TOO_MANY_REDIRECTS </item>
+      <item> CURLE_UNKNOWN_TELNET_OPTION </item>
+      <item> CURLE_TELNET_OPTION_SYNTAX </item>
+      <item> CURLE_OBSOLETE </item>
+      <item> CURLE_SSL_PEER_CERTIFICATE </item>
+      <item> CURLE_GOT_NOTHING </item>
+      <item> CURLE_SSL_ENGINE_NOTFOUND </item>
+      <item> CURLE_SSL_ENGINE_SETFAILED </item>
+      <item> CURLE_SEND_ERROR </item>
+      <item> CURLE_RECV_ERROR </item>
+      <item> CURLE_SHARE_IN_USE </item>
+      <item> CURLE_SSL_CERTPROBLEM </item>
+      <item> CURLE_SSL_CIPHER </item>
+      <item> CURLE_SSL_CACERT </item>
+      <item> CURLE_BAD_CONTENT_ENCODING </item>
+      <item> CURLPROXY_HTTP </item>
+      <item> CURLPROXY_SOCKS5 </item>
+      <item> CURL_NETRC_OPTIONAL </item>
+      <item> CURL_NETRC_IGNORED </item>
+      <item> CURL_NETRC_REQUIRED </item>
+      <item> CURL_HTTP_VERSION_NONE </item>
+      <item> CURL_HTTP_VERSION_1_0 </item>
+      <item> CURL_HTTP_VERSION_1_1 </item>
+      <item> CURLM_CALL_MULTI_PERFORM </item>
+      <item> CURLM_OK </item>
+      <item> CURLM_BAD_HANDLE </item>
+      <item> CURLM_BAD_EASY_HANDLE </item>
+      <item> CURLM_OUT_OF_MEMORY </item>
+      <item> CURLM_INTERNAL_ERROR </item>
+      <item> CURLMSG_DONE </item>
+      <item> DBX_MYSQL </item>
+      <item> DBX_ODBC </item>
+      <item> DBX_PGSQL </item>
+      <item> DBX_MSSQL </item>
+      <item> DBX_FBSQL </item>
+      <item> DBX_OCI8 </item>
+      <item> DBX_SYBASECT </item>
+      <item> DBX_SQLITE </item>
+      <item> DBX_PERSISTENT </item>
+      <item> DBX_RESULT_INFO </item>
+      <item> DBX_RESULT_INDEX </item>
+      <item> DBX_RESULT_ASSOC </item>
+      <item> DBX_RESULT_UNBUFFERED </item>
+      <item> DBX_COLNAMES_UNCHANGED </item>
+      <item> DBX_COLNAMES_UPPERCASE </item>
+      <item> DBX_COLNAMES_LOWERCASE </item>
+      <item> DBX_CMP_NATIVE </item>
+      <item> DBX_CMP_TEXT </item>
+      <item> DBX_CMP_NUMBER </item>
+      <item> DBX_CMP_ASC </item>
+      <item> DBX_CMP_DESC </item>
+      <item> O_RDONLY </item>
+      <item> O_WRONLY </item>
+      <item> O_RDWR </item>
+      <item> O_CREAT </item>
+      <item> O_EXCL </item>
+      <item> O_TRUNC </item>
+      <item> O_APPEND </item>
+      <item> O_NONBLOCK </item>
+      <item> O_NDELAY </item>
+      <item> O_SYNC </item>
+      <item> O_ASYNC </item>
+      <item> O_NOCTTY </item>
+      <item> S_IRWXU </item>
+      <item> S_IRUSR </item>
+      <item> S_IWUSR </item>
+      <item> S_IXUSR </item>
+      <item> S_IRWXG </item>
+      <item> S_IRGRP </item>
+      <item> S_IWGRP </item>
+      <item> S_IXGRP </item>
+      <item> S_IRWXO </item>
+      <item> S_IROTH </item>
+      <item> S_IWOTH </item>
+      <item> S_IXOTH </item>
+      <item> F_DUPFD </item>
+      <item> F_GETFD </item>
+      <item> F_GETFL </item>
+      <item> F_SETFL </item>
+      <item> F_GETLK </item>
+      <item> F_SETLK </item>
+      <item> F_SETLKW </item>
+      <item> F_SETOWN </item>
+      <item> F_GETOWN </item>
+      <item> F_UNLCK </item>
+      <item> F_RDLCK </item>
+      <item> F_WRLCK </item>
+      <item> XML_ELEMENT_NODE </item>
+      <item> XML_ATTRIBUTE_NODE </item>
+      <item> XML_TEXT_NODE </item>
+      <item> XML_CDATA_SECTION_NODE </item>
+      <item> XML_ENTITY_REF_NODE </item>
+      <item> XML_ENTITY_NODE </item>
+      <item> XML_PI_NODE </item>
+      <item> XML_COMMENT_NODE </item>
+      <item> XML_DOCUMENT_NODE </item>
+      <item> XML_DOCUMENT_TYPE_NODE </item>
+      <item> XML_DOCUMENT_FRAG_NODE </item>
+      <item> XML_NOTATION_NODE </item>
+      <item> XML_HTML_DOCUMENT_NODE </item>
+      <item> XML_DTD_NODE </item>
+      <item> XML_ELEMENT_DECL_NODE </item>
+      <item> XML_ATTRIBUTE_DECL_NODE </item>
+      <item> XML_ENTITY_DECL_NODE </item>
+      <item> XML_NAMESPACE_DECL_NODE </item>
+      <item> XML_LOCAL_NAMESPACE </item>
+      <item> XML_ATTRIBUTE_CDATA </item>
+      <item> XML_ATTRIBUTE_ID </item>
+      <item> XML_ATTRIBUTE_IDREF </item>
+      <item> XML_ATTRIBUTE_IDREFS </item>
+      <item> XML_ATTRIBUTE_ENTITY </item>
+      <item> XML_ATTRIBUTE_NMTOKEN </item>
+      <item> XML_ATTRIBUTE_NMTOKENS </item>
+      <item> XML_ATTRIBUTE_ENUMERATION </item>
+      <item> XML_ATTRIBUTE_NOTATION </item>
+      <item> DOM_PHP_ERR </item>
+      <item> DOM_INDEX_SIZE_ERR </item>
+      <item> DOMSTRING_SIZE_ERR </item>
+      <item> DOM_HIERARCHY_REQUEST_ERR </item>
+      <item> DOM_WRONG_DOCUMENT_ERR </item>
+      <item> DOM_INVALID_CHARACTER_ERR </item>
+      <item> DOM_NO_DATA_ALLOWED_ERR </item>
+      <item> DOM_NO_MODIFICATION_ALLOWED_ERR </item>
+      <item> DOM_NOT_FOUND_ERR </item>
+      <item> DOM_NOT_SUPPORTED_ERR </item>
+      <item> DOM_INUSE_ATTRIBUTE_ERR </item>
+      <item> DOM_INVALID_STATE_ERR </item>
+      <item> DOM_SYNTAX_ERR </item>
+      <item> DOM_INVALID_MODIFICATION_ERR </item>
+      <item> DOM_NAMESPACE_ERR </item>
+      <item> DOM_INVALID_ACCESS_ERR </item>
+      <item> DOM_VALIDATION_ERR </item>
+      <item> EXIF_USE_MBSTRING </item>
+      <item> FAMChanged </item>
+      <item> FAMDeleted </item>
+      <item> FAMStartExecuting </item>
+      <item> FAMStopExecuting </item>
+      <item> FAMCreated </item>
+      <item> FAMMoved </item>
+      <item> FAMAcknowledge </item>
+      <item> FAMExists </item>
+      <item> FAMEndExist </item>
+      <item> FTP_ASCII </item>
+      <item> FTP_TEXT </item>
+      <item> FTP_BINARY </item>
+      <item> FTP_IMAGE </item>
+      <item> FTP_AUTORESUME </item>
+      <item> FTP_TIMEOUT_SEC </item>
+      <item> FTP_AUTOSEEK </item>
+      <item> FTP_FAILED </item>
+      <item> FTP_FINISHED </item>
+      <item> FTP_MOREDATA </item>
+      <item> IMG_GIF </item>
+      <item> IMG_JPG </item>
+      <item> IMG_JPEG </item>
+      <item> IMG_PNG </item>
+      <item> IMG_WBMP </item>
+      <item> IMG_XPM </item>
+      <item> IMG_COLOR_TILED </item>
+      <item> IMG_COLOR_STYLED </item>
+      <item> IMG_COLOR_BRUSHED </item>
+      <item> IMG_COLOR_STYLEDBRUSHED </item>
+      <item> IMG_COLOR_TRANSPARENT </item>
+      <item> IMG_ARC_ROUNDED </item>
+      <item> IMG_ARC_PIE </item>
+      <item> IMG_ARC_CHORD </item>
+      <item> IMG_ARC_NOFILL </item>
+      <item> IMG_ARC_EDGED </item>
+      <item> IMG_GD2_RAW </item>
+      <item> IMG_GD2_COMPRESSED </item>
+      <item> IMG_EFFECT_REPLACE </item>
+      <item> IMG_EFFECT_ALPHABLEND </item>
+      <item> IMG_EFFECT_NORMAL </item>
+      <item> IMG_EFFECT_OVERLAY </item>
+      <item> GD_BUNDLED </item>
+      <item> IMG_FILTER_NEGATE </item>
+      <item> IMG_FILTER_GRAYSCALE </item>
+      <item> IMG_FILTER_BRIGHTNESS </item>
+      <item> IMG_FILTER_CONTRAST </item>
+      <item> IMG_FILTER_COLORIZE </item>
+      <item> IMG_FILTER_EDGEDETECT </item>
+      <item> IMG_FILTER_GAUSSIAN_BLUR </item>
+      <item> IMG_FILTER_SELECTIVE_BLUR </item>
+      <item> IMG_FILTER_EMBOSS </item>
+      <item> IMG_FILTER_MEAN_REMOVAL </item>
+      <item> IMG_FILTER_SMOOTH </item>
+      <item> GMP_ROUND_ZERO </item>
+      <item> GMP_ROUND_PLUSINF </item>
+      <item> GMP_ROUND_MINUSINF </item>
+      <item> ICONV_IMPL </item>
+      <item> ICONV_VERSION </item>
+      <item> ICONV_MIME_DECODE_STRICT </item>
+      <item> ICONV_MIME_DECODE_CONTINUE_ON_ERROR </item>
+      <item> NIL </item>
+      <item> IMAP_OPENTIMEOUT </item>
+      <item> IMAP_READTIMEOUT </item>
+      <item> IMAP_WRITETIMEOUT </item>
+      <item> IMAP_CLOSETIMEOUT </item>
+      <item> OP_DEBUG </item>
+      <item> OP_READONLY </item>
+      <item> OP_ANONYMOUS </item>
+      <item> OP_SHORTCACHE </item>
+      <item> OP_SILENT </item>
+      <item> OP_PROTOTYPE </item>
+      <item> OP_HALFOPEN </item>
+      <item> OP_EXPUNGE </item>
+      <item> OP_SECURE </item>
+      <item> CL_EXPUNGE </item>
+      <item> FT_UID </item>
+      <item> FT_PEEK </item>
+      <item> FT_NOT </item>
+      <item> FT_INTERNAL </item>
+      <item> FT_PREFETCHTEXT </item>
+      <item> ST_UID </item>
+      <item> ST_SILENT </item>
+      <item> ST_SET </item>
+      <item> CP_UID </item>
+      <item> CP_MOVE </item>
+      <item> SE_UID </item>
+      <item> SE_FREE </item>
+      <item> SE_NOPREFETCH </item>
+      <item> SO_FREE </item>
+      <item> SO_NOSERVER </item>
+      <item> SA_MESSAGES </item>
+      <item> SA_RECENT </item>
+      <item> SA_UNSEEN </item>
+      <item> SA_UIDNEXT </item>
+      <item> SA_UIDVALIDITY </item>
+      <item> SA_ALL </item>
+      <item> LATT_NOINFERIORS </item>
+      <item> LATT_NOSELECT </item>
+      <item> LATT_MARKED </item>
+      <item> LATT_UNMARKED </item>
+      <item> LATT_REFERRAL </item>
+      <item> LATT_HASCHILDREN </item>
+      <item> LATT_HASNOCHILDREN </item>
+      <item> SORTDATE </item>
+      <item> SORTARRIVAL </item>
+      <item> SORTFROM </item>
+      <item> SORTSUBJECT </item>
+      <item> SORTTO </item>
+      <item> SORTCC </item>
+      <item> SORTSIZE </item>
+      <item> TYPETEXT </item>
+      <item> TYPEMULTIPART </item>
+      <item> TYPEMESSAGE </item>
+      <item> TYPEAPPLICATION </item>
+      <item> TYPEAUDIO </item>
+      <item> TYPEIMAGE </item>
+      <item> TYPEVIDEO </item>
+      <item> TYPEMODEL </item>
+      <item> TYPEOTHER </item>
+      <item> ENC7BIT </item>
+      <item> ENC8BIT </item>
+      <item> ENCBINARY </item>
+      <item> ENCBASE64 </item>
+      <item> ENCQUOTEDPRINTABLE </item>
+      <item> ENCOTHER </item>
+      <item> LDAP_DEREF_NEVER </item>
+      <item> LDAP_DEREF_SEARCHING </item>
+      <item> LDAP_DEREF_FINDING </item>
+      <item> LDAP_DEREF_ALWAYS </item>
+      <item> LDAP_OPT_DEREF </item>
+      <item> LDAP_OPT_SIZELIMIT </item>
+      <item> LDAP_OPT_TIMELIMIT </item>
+      <item> LDAP_OPT_PROTOCOL_VERSION </item>
+      <item> LDAP_OPT_ERROR_NUMBER </item>
+      <item> LDAP_OPT_REFERRALS </item>
+      <item> LDAP_OPT_RESTART </item>
+      <item> LDAP_OPT_HOST_NAME </item>
+      <item> LDAP_OPT_ERROR_STRING </item>
+      <item> LDAP_OPT_MATCHED_DN </item>
+      <item> LDAP_OPT_SERVER_CONTROLS </item>
+      <item> LDAP_OPT_CLIENT_CONTROLS </item>
+      <item> LDAP_OPT_DEBUG_LEVEL </item>
+      <item> MB_OVERLOAD_MAIL </item>
+      <item> MB_OVERLOAD_STRING </item>
+      <item> MB_OVERLOAD_REGEX </item>
+      <item> MB_CASE_UPPER </item>
+      <item> MB_CASE_LOWER </item>
+      <item> MB_CASE_TITLE </item>
+      <item> MCRYPT_ENCRYPT </item>
+      <item> MCRYPT_DECRYPT </item>
+      <item> MCRYPT_DEV_RANDOM </item>
+      <item> MCRYPT_DEV_URANDOM </item>
+      <item> MCRYPT_RAND </item>
+      <item> MCRYPT_3DES </item>
+      <item> MCRYPT_ARCFOUR_IV </item>
+      <item> MCRYPT_ARCFOUR </item>
+      <item> MCRYPT_BLOWFISH </item>
+      <item> MCRYPT_BLOWFISH_COMPAT </item>
+      <item> MCRYPT_CAST_128 </item>
+      <item> MCRYPT_CAST_256 </item>
+      <item> MCRYPT_CRYPT </item>
+      <item> MCRYPT_DES </item>
+      <item> MCRYPT_ENIGNA </item>
+      <item> MCRYPT_GOST </item>
+      <item> MCRYPT_LOKI97 </item>
+      <item> MCRYPT_PANAMA </item>
+      <item> MCRYPT_RC2 </item>
+      <item> MCRYPT_RIJNDAEL_128 </item>
+      <item> MCRYPT_RIJNDAEL_192 </item>
+      <item> MCRYPT_RIJNDAEL_256 </item>
+      <item> MCRYPT_SAFER64 </item>
+      <item> MCRYPT_SAFER128 </item>
+      <item> MCRYPT_SAFERPLUS </item>
+      <item> MCRYPT_SERPENT </item>
+      <item> MCRYPT_THREEWAY </item>
+      <item> MCRYPT_TRIPLEDES </item>
+      <item> MCRYPT_TWOFISH </item>
+      <item> MCRYPT_WAKE </item>
+      <item> MCRYPT_XTEA </item>
+      <item> MCRYPT_IDEA </item>
+      <item> MCRYPT_MARS </item>
+      <item> MCRYPT_RC6 </item>
+      <item> MCRYPT_SKIPJACK </item>
+      <item> MCRYPT_MODE_CBC </item>
+      <item> MCRYPT_MODE_CFB </item>
+      <item> MCRYPT_MODE_ECB </item>
+      <item> MCRYPT_MODE_NOFB </item>
+      <item> MCRYPT_MODE_OFB </item>
+      <item> MCRYPT_MODE_STREAM </item>
+      <item> MHASH_CRC32 </item>
+      <item> MHASH_MD5 </item>
+      <item> MHASH_SHA1 </item>
+      <item> MHASH_HAVAL256 </item>
+      <item> MHASH_RIPEMD160 </item>
+      <item> MHASH_TIGER </item>
+      <item> MHASH_GOST </item>
+      <item> MHASH_CRC32B </item>
+      <item> MHASH_HAVAL224 </item>
+      <item> MHASH_HAVAL192 </item>
+      <item> MHASH_HAVAL160 </item>
+      <item> MHASH_HAVAL128 </item>
+      <item> MHASH_TIGER128 </item>
+      <item> MHASH_TIGER160 </item>
+      <item> MHASH_MD4 </item>
+      <item> MHASH_SHA256 </item>
+      <item> MHASH_ADLER32 </item>
+      <item> MHASH_SHA224 </item>
+      <item> MHASH_SHA512 </item>
+      <item> MHASH_SHA384 </item>
+      <item> MHASH_WHIRLPOOL </item>
+      <item> MHASH_RIPEMD128 </item>
+      <item> MHASH_RIPEMD256 </item>
+      <item> MHASH_RIPEMD320 </item>
+      <item> MHASH_SNEFRU128 </item>
+      <item> MHASH_SNEFRU256 </item>
+      <item> MHASH_MD2 </item>
+      <item> MYSQL_ASSOC </item>
+      <item> MYSQL_NUM </item>
+      <item> MYSQL_BOTH </item>
+      <item> MYSQL_CLIENT_COMPRESS </item>
+      <item> MYSQL_CLIENT_SSL </item>
+      <item> MYSQL_CLIENT_INTERACTIVE </item>
+      <item> MYSQL_CLIENT_IGNORE_SPACE </item>
+      <item> MYSQLI_READ_DEFAULT_GROUP </item>
+      <item> MYSQLI_READ_DEFAULT_FILE </item>
+      <item> MYSQLI_OPT_CONNECT_TIMEOUT </item>
+      <item> MYSQLI_OPT_LOCAL_INFILE </item>
+      <item> MYSQLI_INIT_COMMAND </item>
+      <item> MYSQLI_CLIENT_SSL </item>
+      <item> MYSQLI_CLIENT_COMPRESS </item>
+      <item> MYSQLI_CLIENT_INTERACTIVE </item>
+      <item> MYSQLI_CLIENT_IGNORE_SPACE </item>
+      <item> MYSQLI_CLIENT_NO_SCHEMA </item>
+      <item> MYSQLI_CLIENT_FOUND_ROWS </item>
+      <item> MYSQLI_STORE_RESULT </item>
+      <item> MYSQLI_USE_RESULT </item>
+      <item> MYSQLI_ASSOC </item>
+      <item> MYSQLI_NUM </item>
+      <item> MYSQLI_BOTH </item>
+      <item> MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH </item>
+      <item> MYSQLI_NOT_NULL_FLAG </item>
+      <item> MYSQLI_PRI_KEY_FLAG </item>
+      <item> MYSQLI_UNIQUE_KEY_FLAG </item>
+      <item> MYSQLI_MULTIPLE_KEY_FLAG </item>
+      <item> MYSQLI_BLOB_FLAG </item>
+      <item> MYSQLI_UNSIGNED_FLAG </item>
+      <item> MYSQLI_ZEROFILL_FLAG </item>
+      <item> MYSQLI_AUTO_INCREMENT_FLAG </item>
+      <item> MYSQLI_TIMESTAMP_FLAG </item>
+      <item> MYSQLI_SET_FLAG </item>
+      <item> MYSQLI_NUM_FLAG </item>
+      <item> MYSQLI_PART_KEY_FLAG </item>
+      <item> MYSQLI_GROUP_FLAG </item>
+      <item> MYSQLI_TYPE_DECIMAL </item>
+      <item> MYSQLI_TYPE_TINY </item>
+      <item> MYSQLI_TYPE_SHORT </item>
+      <item> MYSQLI_TYPE_LONG </item>
+      <item> MYSQLI_TYPE_FLOAT </item>
+      <item> MYSQLI_TYPE_DOUBLE </item>
+      <item> MYSQLI_TYPE_NULL </item>
+      <item> MYSQLI_TYPE_TIMESTAMP </item>
+      <item> MYSQLI_TYPE_LONGLONG </item>
+      <item> MYSQLI_TYPE_INT24 </item>
+      <item> MYSQLI_TYPE_DATE </item>
+      <item> MYSQLI_TYPE_TIME </item>
+      <item> MYSQLI_TYPE_DATETIME </item>
+      <item> MYSQLI_TYPE_YEAR </item>
+      <item> MYSQLI_TYPE_NEWDATE </item>
+      <item> MYSQLI_TYPE_ENUM </item>
+      <item> MYSQLI_TYPE_SET </item>
+      <item> MYSQLI_TYPE_TINY_BLOB </item>
+      <item> MYSQLI_TYPE_MEDIUM_BLOB </item>
+      <item> MYSQLI_TYPE_LONG_BLOB </item>
+      <item> MYSQLI_TYPE_BLOB </item>
+      <item> MYSQLI_TYPE_VAR_STRING </item>
+      <item> MYSQLI_TYPE_STRING </item>
+      <item> MYSQLI_TYPE_CHAR </item>
+      <item> MYSQLI_TYPE_INTERVAL </item>
+      <item> MYSQLI_TYPE_GEOMETRY </item>
+      <item> MYSQLI_RPL_MASTER </item>
+      <item> MYSQLI_RPL_SLAVE </item>
+      <item> MYSQLI_RPL_ADMIN </item>
+      <item> MYSQLI_NO_DATA </item>
+      <item> MYSQLI_REPORT_INDEX </item>
+      <item> MYSQLI_REPORT_ERROR </item>
+      <item> MYSQLI_REPORT_ALL </item>
+      <item> MYSQLI_REPORT_OFF </item>
+      <item> NCURSES_COLOR_BLACK </item>
+      <item> NCURSES_COLOR_RED </item>
+      <item> NCURSES_COLOR_GREEN </item>
+      <item> NCURSES_COLOR_YELLOW </item>
+      <item> NCURSES_COLOR_BLUE </item>
+      <item> NCURSES_COLOR_MAGENTA </item>
+      <item> NCURSES_COLOR_CYAN </item>
+      <item> NCURSES_COLOR_WHITE </item>
+      <item> NCURSES_KEY_DOWN </item>
+      <item> NCURSES_KEY_UP </item>
+      <item> NCURSES_KEY_LEFT </item>
+      <item> NCURSES_KEY_RIGHT </item>
+      <item> NCURSES_KEY_BACKSPACE </item>
+      <item> NCURSES_KEY_MOUSE </item>
+      <item> NCURSES_KEY_F0 </item>
+      <item> NCURSES_KEY_F1 </item>
+      <item> NCURSES_KEY_F2 </item>
+      <item> NCURSES_KEY_F3 </item>
+      <item> NCURSES_KEY_F4 </item>
+      <item> NCURSES_KEY_F5 </item>
+      <item> NCURSES_KEY_F6 </item>
+      <item> NCURSES_KEY_F7 </item>
+      <item> NCURSES_KEY_F8 </item>
+      <item> NCURSES_KEY_F9 </item>
+      <item> NCURSES_KEY_F10 </item>
+      <item> NCURSES_KEY_F11 </item>
+      <item> NCURSES_KEY_F12 </item>
+      <item> NCURSES_KEY_DL </item>
+      <item> NCURSES_KEY_IL </item>
+      <item> NCURSES_KEY_DC </item>
+      <item> NCURSES_KEY_IC </item>
+      <item> NCURSES_KEY_EIC </item>
+      <item> NCURSES_KEY_CLEAR </item>
+      <item> NCURSES_KEY_EOS </item>
+      <item> NCURSES_KEY_EOL </item>
+      <item> NCURSES_KEY_SF </item>
+      <item> NCURSES_KEY_SR </item>
+      <item> NCURSES_KEY_NPAGE </item>
+      <item> NCURSES_KEY_PPAGE </item>
+      <item> NCURSES_KEY_STAB </item>
+      <item> NCURSES_KEY_CTAB </item>
+      <item> NCURSES_KEY_CATAB </item>
+      <item> NCURSES_KEY_ENTER </item>
+      <item> NCURSES_KEY_SRESET </item>
+      <item> NCURSES_KEY_RESET </item>
+      <item> NCURSES_KEY_PRINT </item>
+      <item> NCURSES_KEY_LL </item>
+      <item> NCURSES_KEY_A1 </item>
+      <item> NCURSES_KEY_A3 </item>
+      <item> NCURSES_KEY_B2 </item>
+      <item> NCURSES_KEY_C1 </item>
+      <item> NCURSES_KEY_C3 </item>
+      <item> NCURSES_KEY_BTAB </item>
+      <item> NCURSES_KEY_BEG </item>
+      <item> NCURSES_KEY_CANCEL </item>
+      <item> NCURSES_KEY_CLOSE </item>
+      <item> NCURSES_KEY_COMMAND </item>
+      <item> NCURSES_KEY_COPY </item>
+      <item> NCURSES_KEY_CREATE </item>
+      <item> NCURSES_KEY_END </item>
+      <item> NCURSES_KEY_EXIT </item>
+      <item> NCURSES_KEY_FIND </item>
+      <item> NCURSES_KEY_HELP </item>
+      <item> NCURSES_KEY_MARK </item>
+      <item> NCURSES_KEY_MESSAGE </item>
+      <item> NCURSES_KEY_MOVE </item>
+      <item> NCURSES_KEY_NEXT </item>
+      <item> NCURSES_KEY_OPEN </item>
+      <item> NCURSES_KEY_OPTIONS </item>
+      <item> NCURSES_KEY_PREVIOUS </item>
+      <item> NCURSES_KEY_REDO </item>
+      <item> NCURSES_KEY_REFERENCE </item>
+      <item> NCURSES_KEY_REFRESH </item>
+      <item> NCURSES_KEY_REPLACE </item>
+      <item> NCURSES_KEY_RESTART </item>
+      <item> NCURSES_KEY_RESUME </item>
+      <item> NCURSES_KEY_SAVE </item>
+      <item> NCURSES_KEY_SBEG </item>
+      <item> NCURSES_KEY_SCANCEL </item>
+      <item> NCURSES_KEY_SCOMMAND </item>
+      <item> NCURSES_KEY_SCOPY </item>
+      <item> NCURSES_KEY_SCREATE </item>
+      <item> NCURSES_KEY_SDC </item>
+      <item> NCURSES_KEY_SDL </item>
+      <item> NCURSES_KEY_SELECT </item>
+      <item> NCURSES_KEY_SEND </item>
+      <item> NCURSES_KEY_SEOL </item>
+      <item> NCURSES_KEY_SEXIT </item>
+      <item> NCURSES_KEY_SFIND </item>
+      <item> NCURSES_KEY_SHELP </item>
+      <item> NCURSES_KEY_SHOME </item>
+      <item> NCURSES_KEY_SIC </item>
+      <item> NCURSES_KEY_SLEFT </item>
+      <item> NCURSES_KEY_SMESSAGE </item>
+      <item> NCURSES_KEY_SMOVE </item>
+      <item> NCURSES_KEY_SNEXT </item>
+      <item> NCURSES_KEY_SOPTIONS </item>
+      <item> NCURSES_KEY_SPREVIOUS </item>
+      <item> NCURSES_KEY_SPRINT </item>
+      <item> NCURSES_KEY_SREDO </item>
+      <item> NCURSES_KEY_SREPLACE </item>
+      <item> NCURSES_KEY_SRIGHT </item>
+      <item> NCURSES_KEY_SRSUME </item>
+      <item> NCURSES_KEY_SSAVE </item>
+      <item> NCURSES_KEY_SSUSPEND </item>
+      <item> NCURSES_KEY_SUNDO </item>
+      <item> NCURSES_KEY_SUSPEND </item>
+      <item> NCURSES_KEY_UNDO </item>
+      <item> NCURSES_KEY_RESIZE </item>
+      <item> NCURSES_A_NORMAL </item>
+      <item> NCURSES_A_STANDOUT </item>
+      <item> NCURSES_A_UNDERLINE </item>
+      <item> NCURSES_A_REVERSE </item>
+      <item> NCURSES_A_BLINK </item>
+      <item> NCURSES_A_DIM </item>
+      <item> NCURSES_A_BOLD </item>
+      <item> NCURSES_A_PROTECT </item>
+      <item> NCURSES_A_INVIS </item>
+      <item> NCURSES_A_ALTCHARSET </item>
+      <item> NCURSES_A_CHARTEXT </item>
+      <item> NCURSES_BUTTON1_PRESSED </item>
+      <item> NCURSES_BUTTON1_RELEASED </item>
+      <item> NCURSES_BUTTON1_CLICKED </item>
+      <item> NCURSES_BUTTON1_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON1_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON2_PRESSED </item>
+      <item> NCURSES_BUTTON2_RELEASED </item>
+      <item> NCURSES_BUTTON2_CLICKED </item>
+      <item> NCURSES_BUTTON2_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON2_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON3_PRESSED </item>
+      <item> NCURSES_BUTTON3_RELEASED </item>
+      <item> NCURSES_BUTTON3_CLICKED </item>
+      <item> NCURSES_BUTTON3_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON3_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON4_PRESSED </item>
+      <item> NCURSES_BUTTON4_RELEASED </item>
+      <item> NCURSES_BUTTON4_CLICKED </item>
+      <item> NCURSES_BUTTON4_DOUBLE_CLICKED </item>
+      <item> NCURSES_BUTTON4_TRIPLE_CLICKED </item>
+      <item> NCURSES_BUTTON_SHIFT </item>
+      <item> NCURSES_BUTTON_CTRL </item>
+      <item> NCURSES_BUTTON_ALT </item>
+      <item> NCURSES_ALL_MOUSE_EVENTS </item>
+      <item> NCURSES_REPORT_MOUSE_POSITION </item>
+      <item> ODBC_TYPE </item>
+      <item> ODBC_BINMODE_PASSTHRU </item>
+      <item> ODBC_BINMODE_RETURN </item>
+      <item> ODBC_BINMODE_CONVERT </item>
+      <item> SQL_ODBC_CURSORS </item>
+      <item> SQL_CUR_USE_DRIVER </item>
+      <item> SQL_CUR_USE_IF_NEEDED </item>
+      <item> SQL_CUR_USE_ODBC </item>
+      <item> SQL_CONCURRENCY </item>
+      <item> SQL_CONCUR_READ_ONLY </item>
+      <item> SQL_CONCUR_LOCK </item>
+      <item> SQL_CONCUR_ROWVER </item>
+      <item> SQL_CONCUR_VALUES </item>
+      <item> SQL_CURSOR_TYPE </item>
+      <item> SQL_CURSOR_FORWARD_ONLY </item>
+      <item> SQL_CURSOR_KEYSET_DRIVEN </item>
+      <item> SQL_CURSOR_DYNAMIC </item>
+      <item> SQL_CURSOR_STATIC </item>
+      <item> SQL_KEYSET_SIZE </item>
+      <item> SQL_FETCH_FIRST </item>
+      <item> SQL_FETCH_NEXT </item>
+      <item> SQL_CHAR </item>
+      <item> SQL_VARCHAR </item>
+      <item> SQL_LONGVARCHAR </item>
+      <item> SQL_DECIMAL </item>
+      <item> SQL_NUMERIC </item>
+      <item> SQL_BIT </item>
+      <item> SQL_TINYINT </item>
+      <item> SQL_SMALLINT </item>
+      <item> SQL_INTEGER </item>
+      <item> SQL_BIGINT </item>
+      <item> SQL_REAL </item>
+      <item> SQL_FLOAT </item>
+      <item> SQL_DOUBLE </item>
+      <item> SQL_BINARY </item>
+      <item> SQL_VARBINARY </item>
+      <item> SQL_LONGVARBINARY </item>
+      <item> SQL_DATE </item>
+      <item> SQL_TIME </item>
+      <item> SQL_TIMESTAMP </item>
+      <item> X509_PURPOSE_SSL_CLIENT </item>
+      <item> X509_PURPOSE_SSL_SERVER </item>
+      <item> X509_PURPOSE_NS_SSL_SERVER </item>
+      <item> X509_PURPOSE_SMIME_SIGN </item>
+      <item> X509_PURPOSE_SMIME_ENCRYPT </item>
+      <item> X509_PURPOSE_CRL_SIGN </item>
+      <item> X509_PURPOSE_ANY </item>
+      <item> OPENSSL_ALGO_SHA1 </item>
+      <item> OPENSSL_ALGO_MD5 </item>
+      <item> OPENSSL_ALGO_MD4 </item>
+      <item> OPENSSL_ALGO_MD2 </item>
+      <item> PKCS7_DETACHED </item>
+      <item> PKCS7_TEXT </item>
+      <item> PKCS7_NOINTERN </item>
+      <item> PKCS7_NOVERIFY </item>
+      <item> PKCS7_NOCHAIN </item>
+      <item> PKCS7_NOCERTS </item>
+      <item> PKCS7_NOATTR </item>
+      <item> PKCS7_BINARY </item>
+      <item> PKCS7_NOSIGS </item>
+      <item> OPENSSL_PKCS1_PADDING </item>
+      <item> OPENSSL_SSLV23_PADDING </item>
+      <item> OPENSSL_NO_PADDING </item>
+      <item> OPENSSL_PKCS1_OAEP_PADDING </item>
+      <item> OPENSSL_CIPHER_RC2_40 </item>
+      <item> OPENSSL_CIPHER_RC2_128 </item>
+      <item> OPENSSL_CIPHER_RC2_64 </item>
+      <item> OPENSSL_CIPHER_DES </item>
+      <item> OPENSSL_CIPHER_3DES </item>
+      <item> OPENSSL_KEYTYPE_RSA </item>
+      <item> OPENSSL_KEYTYPE_DSA </item>
+      <item> OPENSSL_KEYTYPE_DH </item>
+      <item> WNOHANG </item>
+      <item> WUNTRACED </item>
+      <item> SIG_IGN </item>
+      <item> SIG_DFL </item>
+      <item> SIG_ERR </item>
+      <item> SIGHUP </item>
+      <item> SIGINT </item>
+      <item> SIGQUIT </item>
+      <item> SIGILL </item>
+      <item> SIGTRAP </item>
+      <item> SIGABRT </item>
+      <item> SIGIOT </item>
+      <item> SIGBUS </item>
+      <item> SIGFPE </item>
+      <item> SIGKILL </item>
+      <item> SIGUSR1 </item>
+      <item> SIGSEGV </item>
+      <item> SIGUSR2 </item>
+      <item> SIGPIPE </item>
+      <item> SIGALRM </item>
+      <item> SIGTERM </item>
+      <item> SIGSTKFLT </item>
+      <item> SIGCLD </item>
+      <item> SIGCHLD </item>
+      <item> SIGCONT </item>
+      <item> SIGSTOP </item>
+      <item> SIGTSTP </item>
+      <item> SIGTTIN </item>
+      <item> SIGTTOU </item>
+      <item> SIGURG </item>
+      <item> SIGXCPU </item>
+      <item> SIGXFSZ </item>
+      <item> SIGVTALRM </item>
+      <item> SIGPROF </item>
+      <item> SIGWINCH </item>
+      <item> SIGPOLL </item>
+      <item> SIGIO </item>
+      <item> SIGPWR </item>
+      <item> SIGSYS </item>
+      <item> SIGBABY </item>
+      <item> PRIO_PGRP </item>
+      <item> PRIO_USER </item>
+      <item> PRIO_PROCESS </item>
+      <item> PGSQL_CONNECT_FORCE_NEW </item>
+      <item> PGSQL_ASSOC </item>
+      <item> PGSQL_NUM </item>
+      <item> PGSQL_BOTH </item>
+      <item> PGSQL_CONNECTION_BAD </item>
+      <item> PGSQL_CONNECTION_OK </item>
+      <item> PGSQL_SEEK_SET </item>
+      <item> PGSQL_SEEK_CUR </item>
+      <item> PGSQL_SEEK_END </item>
+      <item> PGSQL_STATUS_LONG </item>
+      <item> PGSQL_STATUS_STRING </item>
+      <item> PGSQL_EMPTY_QUERY </item>
+      <item> PGSQL_COMMAND_OK </item>
+      <item> PGSQL_TUPLES_OK </item>
+      <item> PGSQL_COPY_OUT </item>
+      <item> PGSQL_COPY_IN </item>
+      <item> PGSQL_BAD_RESPONSE </item>
+      <item> PGSQL_NONFATAL_ERROR </item>
+      <item> PGSQL_FATAL_ERROR </item>
+      <item> PGSQL_CONV_IGNORE_DEFAULT </item>
+      <item> PGSQL_CONV_FORCE_NULL </item>
+      <item> PGSQL_CONV_IGNORE_NOT_NULL </item>
+      <item> PGSQL_DML_NO_CONV </item>
+      <item> PGSQL_DML_EXEC </item>
+      <item> PGSQL_DML_ASYNC </item>
+      <item> PGSQL_DML_STRING </item>
+      <item> SNMP_VALUE_LIBRARY </item>
+      <item> SNMP_VALUE_PLAIN </item>
+      <item> SNMP_VALUE_OBJECT </item>
+      <item> SNMP_BIT_STR </item>
+      <item> SNMP_OCTET_STR </item>
+      <item> SNMP_OPAQUE </item>
+      <item> SNMP_NULL </item>
+      <item> SNMP_OBJECT_ID </item>
+      <item> SNMP_IPADDRESS </item>
+      <item> SNMP_COUNTER </item>
+      <item> SNMP_UNSIGNED </item>
+      <item> SNMP_TIMETICKS </item>
+      <item> SNMP_UINTEGER </item>
+      <item> SNMP_INTEGER </item>
+      <item> SNMP_COUNTER64 </item>
+      <item> SOAP_1_1 </item>
+      <item> SOAP_1_2 </item>
+      <item> SOAP_PERSISTENCE_SESSION </item>
+      <item> SOAP_PERSISTENCE_REQUEST </item>
+      <item> SOAP_FUNCTIONS_ALL </item>
+      <item> SOAP_ENCODED </item>
+      <item> SOAP_LITERAL </item>
+      <item> SOAP_RPC </item>
+      <item> SOAP_DOCUMENT </item>
+      <item> SOAP_ACTOR_NEXT </item>
+      <item> SOAP_ACTOR_NONE </item>
+      <item> SOAP_ACTOR_UNLIMATERECEIVER </item>
+      <item> SOAP_COMPRESSION_ACCEPT </item>
+      <item> SOAP_COMPRESSION_GZIP </item>
+      <item> SOAP_COMPRESSION_DEFLATE </item>
+      <item> UNKNOWN_TYPE </item>
+      <item> XSD_STRING </item>
+      <item> XSD_BOOLEAN </item>
+      <item> XSD_DECIMAL </item>
+      <item> XSD_FLOAT </item>
+      <item> XSD_DOUBLE </item>
+      <item> XSD_DURATION </item>
+      <item> XSD_DATETIME </item>
+      <item> XSD_TIME </item>
+      <item> XSD_DATE </item>
+      <item> XSD_GYEARMONTH </item>
+      <item> XSD_GYEAR </item>
+      <item> XSD_GMONTHDAY </item>
+      <item> XSD_GDAY </item>
+      <item> XSD_GMONTH </item>
+      <item> XSD_HEXBINARY </item>
+      <item> XSD_BASE64BINARY </item>
+      <item> XSD_ANYURI </item>
+      <item> XSD_QNAME </item>
+      <item> XSD_NOTATION </item>
+      <item> XSD_NORMALIZEDSTRING </item>
+      <item> XSD_TOKEN </item>
+      <item> XSD_LANGUAGE </item>
+      <item> XSD_NMTOKEN </item>
+      <item> XSD_NAME </item>
+      <item> XSD_NCNAME </item>
+      <item> XSD_ID </item>
+      <item> XSD_IDREF </item>
+      <item> XSD_IDREFS </item>
+      <item> XSD_ENTITY </item>
+      <item> XSD_ENTITIES </item>
+      <item> XSD_INTEGER </item>
+      <item> XSD_NONPOSITIVEINTEGER </item>
+      <item> XSD_NEGATIVEINTEGER </item>
+      <item> XSD_LONG </item>
+      <item> XSD_INT </item>
+      <item> XSD_SHORT </item>
+      <item> XSD_BYTE </item>
+      <item> XSD_NONNEGATIVEINTEGER </item>
+      <item> XSD_UNSIGNEDLONG </item>
+      <item> XSD_UNSIGNEDINT </item>
+      <item> XSD_UNSIGNEDSHORT </item>
+      <item> XSD_UNSIGNEDBYTE </item>
+      <item> XSD_POSITIVEINTEGER </item>
+      <item> XSD_NMTOKENS </item>
+      <item> XSD_ANYTYPE </item>
+      <item> SOAP_ENC_OBJECT </item>
+      <item> SOAP_ENC_ARRAY </item>
+      <item> XSD_1999_TIMEINSTANT </item>
+      <item> XSD_NAMESPACE </item>
+      <item> XSD_1999_NAMESPACE </item>
+      <item> AF_UNIX </item>
+      <item> AF_INET </item>
+      <item> AF_INET6 </item>
+      <item> SOCK_STREAM </item>
+      <item> SOCK_DGRAM </item>
+      <item> SOCK_RAW </item>
+      <item> SOCK_SEQPACKET </item>
+      <item> SOCK_RDM </item>
+      <item> MSG_OOB </item>
+      <item> MSG_WAITALL </item>
+      <item> MSG_PEEK </item>
+      <item> MSG_DONTROUTE </item>
+      <item> SO_DEBUG </item>
+      <item> SO_REUSEADDR </item>
+      <item> SO_KEEPALIVE </item>
+      <item> SO_DONTROUTE </item>
+      <item> SO_LINGER </item>
+      <item> SO_BROADCAST </item>
+      <item> SO_OOBINLINE </item>
+      <item> SO_SNDBUF </item>
+      <item> SO_RCVBUF </item>
+      <item> SO_SNDLOWAT </item>
+      <item> SO_RCVLOWAT </item>
+      <item> SO_SNDTIMEO </item>
+      <item> SO_RCVTIMEO </item>
+      <item> SO_TYPE </item>
+      <item> SO_ERROR </item>
+      <item> SOL_SOCKET </item>
+      <item> SOMAXCONN </item>
+      <item> PHP_NORMAL_READ </item>
+      <item> PHP_BINARY_READ </item>
+      <item> SOCKET_EPERM </item>
+      <item> SOCKET_ENOENT </item>
+      <item> SOCKET_EINTR </item>
+      <item> SOCKET_EIO </item>
+      <item> SOCKET_ENXIO </item>
+      <item> SOCKET_E2BIG </item>
+      <item> SOCKET_EBADF </item>
+      <item> SOCKET_EAGAIN </item>
+      <item> SOCKET_ENOMEM </item>
+      <item> SOCKET_EACCES </item>
+      <item> SOCKET_EFAULT </item>
+      <item> SOCKET_ENOTBLK </item>
+      <item> SOCKET_EBUSY </item>
+      <item> SOCKET_EEXIST </item>
+      <item> SOCKET_EXDEV </item>
+      <item> SOCKET_ENODEV </item>
+      <item> SOCKET_ENOTDIR </item>
+      <item> SOCKET_EISDIR </item>
+      <item> SOCKET_EINVAL </item>
+      <item> SOCKET_ENFILE </item>
+      <item> SOCKET_EMFILE </item>
+      <item> SOCKET_ENOTTY </item>
+      <item> SOCKET_ENOSPC </item>
+      <item> SOCKET_ESPIPE </item>
+      <item> SOCKET_EROFS </item>
+      <item> SOCKET_EMLINK </item>
+      <item> SOCKET_EPIPE </item>
+      <item> SOCKET_ENAMETOOLONG </item>
+      <item> SOCKET_ENOLCK </item>
+      <item> SOCKET_ENOSYS </item>
+      <item> SOCKET_ENOTEMPTY </item>
+      <item> SOCKET_ELOOP </item>
+      <item> SOCKET_EWOULDBLOCK </item>
+      <item> SOCKET_ENOMSG </item>
+      <item> SOCKET_EIDRM </item>
+      <item> SOCKET_ECHRNG </item>
+      <item> SOCKET_EL2NSYNC </item>
+      <item> SOCKET_EL3HLT </item>
+      <item> SOCKET_EL3RST </item>
+      <item> SOCKET_ELNRNG </item>
+      <item> SOCKET_EUNATCH </item>
+      <item> SOCKET_ENOCSI </item>
+      <item> SOCKET_EL2HLT </item>
+      <item> SOCKET_EBADE </item>
+      <item> SOCKET_EBADR </item>
+      <item> SOCKET_EXFULL </item>
+      <item> SOCKET_ENOANO </item>
+      <item> SOCKET_EBADRQC </item>
+      <item> SOCKET_EBADSLT </item>
+      <item> SOCKET_ENOSTR </item>
+      <item> SOCKET_ENODATA </item>
+      <item> SOCKET_ETIME </item>
+      <item> SOCKET_ENOSR </item>
+      <item> SOCKET_ENONET </item>
+      <item> SOCKET_EREMOTE </item>
+      <item> SOCKET_ENOLINK </item>
+      <item> SOCKET_EADV </item>
+      <item> SOCKET_ESRMNT </item>
+      <item> SOCKET_ECOMM </item>
+      <item> SOCKET_EPROTO </item>
+      <item> SOCKET_EMULTIHOP </item>
+      <item> SOCKET_EBADMSG </item>
+      <item> SOCKET_ENOTUNIQ </item>
+      <item> SOCKET_EBADFD </item>
+      <item> SOCKET_EREMCHG </item>
+      <item> SOCKET_ERESTART </item>
+      <item> SOCKET_ESTRPIPE </item>
+      <item> SOCKET_EUSERS </item>
+      <item> SOCKET_ENOTSOCK </item>
+      <item> SOCKET_EDESTADDRREQ </item>
+      <item> SOCKET_EMSGSIZE </item>
+      <item> SOCKET_EPROTOTYPE </item>
+      <item> SOCKET_ENOPROTOOPT </item>
+      <item> SOCKET_EPROTONOSUPPORT </item>
+      <item> SOCKET_ESOCKTNOSUPPORT </item>
+      <item> SOCKET_EOPNOTSUPP </item>
+      <item> SOCKET_EPFNOSUPPORT </item>
+      <item> SOCKET_EAFNOSUPPORT </item>
+      <item> SOCKET_EADDRINUSE </item>
+      <item> SOCKET_EADDRNOTAVAIL </item>
+      <item> SOCKET_ENETDOWN </item>
+      <item> SOCKET_ENETUNREACH </item>
+      <item> SOCKET_ENETRESET </item>
+      <item> SOCKET_ECONNABORTED </item>
+      <item> SOCKET_ECONNRESET </item>
+      <item> SOCKET_ENOBUFS </item>
+      <item> SOCKET_EISCONN </item>
+      <item> SOCKET_ENOTCONN </item>
+      <item> SOCKET_ESHUTDOWN </item>
+      <item> SOCKET_ETOOMANYREFS </item>
+      <item> SOCKET_ETIMEDOUT </item>
+      <item> SOCKET_ECONNREFUSED </item>
+      <item> SOCKET_EHOSTDOWN </item>
+      <item> SOCKET_EHOSTUNREACH </item>
+      <item> SOCKET_EALREADY </item>
+      <item> SOCKET_EINPROGRESS </item>
+      <item> SOCKET_EISNAM </item>
+      <item> SOCKET_EREMOTEIO </item>
+      <item> SOCKET_EDQUOT </item>
+      <item> SOCKET_ENOMEDIUM </item>
+      <item> SOCKET_EMEDIUMTYPE </item>
+      <item> SOL_TCP </item>
+      <item> SOL_UDP </item>
+      <item> SQLITE_BOTH </item>
+      <item> SQLITE_NUM </item>
+      <item> SQLITE_ASSOC </item>
+      <item> SQLITE_OK </item>
+      <item> SQLITE_ERROR </item>
+      <item> SQLITE_INTERNAL </item>
+      <item> SQLITE_PERM </item>
+      <item> SQLITE_ABORT </item>
+      <item> SQLITE_BUSY </item>
+      <item> SQLITE_LOCKED </item>
+      <item> SQLITE_NOMEM </item>
+      <item> SQLITE_READONLY </item>
+      <item> SQLITE_INTERRUPT </item>
+      <item> SQLITE_IOERR </item>
+      <item> SQLITE_CORRUPT </item>
+      <item> SQLITE_NOTFOUND </item>
+      <item> SQLITE_FULL </item>
+      <item> SQLITE_CANTOPEN </item>
+      <item> SQLITE_PROTOCOL </item>
+      <item> SQLITE_EMPTY </item>
+      <item> SQLITE_SCHEMA </item>
+      <item> SQLITE_TOOBIG </item>
+      <item> SQLITE_CONSTRAINT </item>
+      <item> SQLITE_MISMATCH </item>
+      <item> SQLITE_MISUSE </item>
+      <item> SQLITE_NOLFS </item>
+      <item> SQLITE_AUTH </item>
+      <item> SQLITE_FORMAT </item>
+      <item> SQLITE_ROW </item>
+      <item> SQLITE_DONE </item>
+      <item> MSG_IPC_NOWAIT </item>
+      <item> MSG_NOERROR </item>
+      <item> MSG_EXCEPT </item>
+      <item> T_INCLUDE </item>
+      <item> T_INCLUDE_ONCE </item>
+      <item> T_EVAL </item>
+      <item> T_REQUIRE </item>
+      <item> T_REQUIRE_ONCE </item>
+      <item> T_LOGICAL_OR </item>
+      <item> T_LOGICAL_XOR </item>
+      <item> T_LOGICAL_AND </item>
+      <item> T_PRINT </item>
+      <item> T_PLUS_EQUAL </item>
+      <item> T_MINUS_EQUAL </item>
+      <item> T_MUL_EQUAL </item>
+      <item> T_DIV_EQUAL </item>
+      <item> T_CONCAT_EQUAL </item>
+      <item> T_MOD_EQUAL </item>
+      <item> T_AND_EQUAL </item>
+      <item> T_OR_EQUAL </item>
+      <item> T_XOR_EQUAL </item>
+      <item> T_SL_EQUAL </item>
+      <item> T_SR_EQUAL </item>
+      <item> T_BOOLEAN_OR </item>
+      <item> T_BOOLEAN_AND </item>
+      <item> T_IS_EQUAL </item>
+      <item> T_IS_NOT_EQUAL </item>
+      <item> T_IS_IDENTICAL </item>
+      <item> T_IS_NOT_IDENTICAL </item>
+      <item> T_IS_SMALLER_OR_EQUAL </item>
+      <item> T_IS_GREATER_OR_EQUAL </item>
+      <item> T_SL </item>
+      <item> T_SR </item>
+      <item> T_INC </item>
+      <item> T_DEC </item>
+      <item> T_INT_CAST </item>
+      <item> T_DOUBLE_CAST </item>
+      <item> T_STRING_CAST </item>
+      <item> T_ARRAY_CAST </item>
+      <item> T_OBJECT_CAST </item>
+      <item> T_BOOL_CAST </item>
+      <item> T_UNSET_CAST </item>
+      <item> T_NEW </item>
+      <item> T_EXIT </item>
+      <item> T_IF </item>
+      <item> T_ELSEIF </item>
+      <item> T_ELSE </item>
+      <item> T_ENDIF </item>
+      <item> T_LNUMBER </item>
+      <item> T_DNUMBER </item>
+      <item> T_STRING </item>
+      <item> T_STRING_VARNAME </item>
+      <item> T_VARIABLE </item>
+      <item> T_NUM_STRING </item>
+      <item> T_INLINE_HTML </item>
+      <item> T_CHARACTER </item>
+      <item> T_BAD_CHARACTER </item>
+      <item> T_ENCAPSED_AND_WHITESPACE </item>
+      <item> T_CONSTANT_ENCAPSED_STRING </item>
+      <item> T_ECHO </item>
+      <item> T_DO </item>
+      <item> T_WHILE </item>
+      <item> T_ENDWHILE </item>
+      <item> T_FOR </item>
+      <item> T_ENDFOR </item>
+      <item> T_FOREACH </item>
+      <item> T_ENDFOREACH </item>
+      <item> T_DECLARE </item>
+      <item> T_ENDDECLARE </item>
+      <item> T_AS </item>
+      <item> T_SWITCH </item>
+      <item> T_ENDSWITCH </item>
+      <item> T_CASE </item>
+      <item> T_DEFAULT </item>
+      <item> T_BREAK </item>
+      <item> T_CONTINUE </item>
+      <item> T_FUNCTION </item>
+      <item> T_CONST </item>
+      <item> T_RETURN </item>
+      <item> T_USE </item>
+      <item> T_GLOBAL </item>
+      <item> T_STATIC </item>
+      <item> T_VAR </item>
+      <item> T_UNSET </item>
+      <item> T_ISSET </item>
+      <item> T_EMPTY </item>
+      <item> T_CLASS </item>
+      <item> T_EXTENDS </item>
+      <item> T_INTERFACE </item>
+      <item> T_IMPLEMENTS </item>
+      <item> T_OBJECT_OPERATOR </item>
+      <item> T_DOUBLE_ARROW </item>
+      <item> T_LIST </item>
+      <item> T_ARRAY </item>
+      <item> T_CLASS_C </item>
+      <item> T_FUNC_C </item>
+      <item> T_METHOD_C </item>
+      <item> T_LINE </item>
+      <item> T_FILE </item>
+      <item> T_COMMENT </item>
+      <item> T_DOC_COMMENT </item>
+      <item> T_OPEN_TAG </item>
+      <item> T_OPEN_TAG_WITH_ECHO </item>
+      <item> T_CLOSE_TAG </item>
+      <item> T_WHITESPACE </item>
+      <item> T_START_HEREDOC </item>
+      <item> T_END_HEREDOC </item>
+      <item> T_DOLLAR_OPEN_CURLY_BRACES </item>
+      <item> T_CURLY_OPEN </item>
+      <item> T_PAAMAYIM_NEKUDOTAYIM </item>
+      <item> T_DOUBLE_COLON </item>
+      <item> T_ABSTRACT </item>
+      <item> T_CATCH </item>
+      <item> T_FINAL </item>
+      <item> T_INSTANCEOF </item>
+      <item> T_PRIVATE </item>
+      <item> T_PROTECTED </item>
+      <item> T_PUBLIC </item>
+      <item> T_THROW </item>
+      <item> T_TRY </item>
+      <item> T_CLONE </item>
+      <item> XSL_CLONE_AUTO </item>
+      <item> XSL_CLONE_NEVER </item>
+      <item> XSL_CLONE_ALWAYS </item>
+      <item> YPERR_BADARGS </item>
+      <item> YPERR_BADDB </item>
+      <item> YPERR_BUSY </item>
+      <item> YPERR_DOMAIN </item>
+      <item> YPERR_KEY </item>
+      <item> YPERR_MAP </item>
+      <item> YPERR_NODOM </item>
+      <item> YPERR_NOMORE </item>
+      <item> YPERR_PMAP </item>
+      <item> YPERR_RESRC </item>
+      <item> YPERR_RPC </item>
+      <item> YPERR_YPBIND </item>
+      <item> YPERR_YPERR </item>
+      <item> YPERR_YPSERV </item>
+      <item> YPERR_VERS </item>
+      <item> FORCE_GZIP </item>
+      <item> FORCE_DEFLATE </item>
+    </list>
+    <list name="special_methods">
+      <item> __autoload </item>
+      <item> __call </item>
+      <item> __clone </item>
+      <item> __construct </item>
+      <item> __destruct </item>
+      <item> __get </item>
+      <item> __isset </item>
+      <item> __set </item>
+      <item> __set_state </item>
+      <item> __sleep </item>
+      <item> __toString </item>
+      <item> __unset </item>
+      <item> __wakeup </item>
+    </list>
+    <list name="functions">
+      <item> abs </item>
+      <item> acos </item>
+      <item> acosh </item>
+      <item> addcslashes </item>
+      <item> addslashes </item>
+      <item> apache_get_modules </item>
+      <item> apache_get_version </item>
+      <item> apache_getenv </item>
+      <item> apache_lookup_uri </item>
+      <item> apache_note </item>
+      <item> apache_request_headers </item>
+      <item> apache_response_headers </item>
+      <item> apache_setenv </item>
+      <item> array </item>
+      <item> array_change_key_case </item>
+      <item> array_chunk </item>
+      <item> array_combine </item>
+      <item> array_count_values </item>
+      <item> array_diff </item>
+      <item> array_diff_assoc </item>
+      <item> array_diff_key </item>
+      <item> array_diff_uassoc </item>
+      <item> array_diff_ukey </item>
+      <item> array_diff </item>
+      <item> array_fill </item>
+      <item> array_filter </item>
+      <item> array_flip </item>
+      <item> array_intersect </item>
+      <item> array_intersect_assoc </item>
+      <item> array_intersect_key </item>
+      <item> array_intersect_uassoc </item>
+      <item> array_intersect_ukey </item>
+      <item> array_intersect </item>
+      <item> array_key_exists </item>
+      <item> array_keys </item>
+      <item> array_map </item>
+      <item> array_merge </item>
+      <item> array_merge_recursive </item>
+      <item> array_multisort </item>
+      <item> array_pad </item>
+      <item> array_pop </item>
+      <item> array_product </item>
+      <item> array_push </item>
+      <item> array_rand </item>
+      <item> array_reduce </item>
+      <item> array_reverse </item>
+      <item> array_search </item>
+      <item> array_shift </item>
+      <item> array_slice </item>
+      <item> array_splice </item>
+      <item> array_sum </item>
+      <item> array_udiff </item>
+      <item> array_udiff_assoc </item>
+      <item> array_udiff_uassoc </item>
+      <item> array_uintersect </item>
+      <item> array_uintersect_assoc </item>
+      <item> array_uintersect_uassoc </item>
+      <item> array_uintersect </item>
+      <item> array_unique </item>
+      <item> array_unshift </item>
+      <item> array_values </item>
+      <item> array_walk </item>
+      <item> array_walk_recursive </item>
+      <item> arsort </item>
+      <item> ascii2ebcdic </item>
+      <item> asin </item>
+      <item> asinh </item>
+      <item> asort </item>
+      <item> aspell_check </item>
+      <item> aspell_check_raw </item>
+      <item> aspell_new </item>
+      <item> aspell_suggest </item>
+      <item> assert </item>
+      <item> assert_options </item>
+      <item> atan </item>
+      <item> atan2 </item>
+      <item> atanh </item>
+      <item> base64_decode </item>
+      <item> base64_encode </item>
+      <item> base_convert </item>
+      <item> basename </item>
+      <item> bcadd </item>
+      <item> bccomp </item>
+      <item> bcdiv </item>
+      <item> bcmod </item>
+      <item> bcmul </item>
+      <item> bcpow </item>
+      <item> bcpowmod </item>
+      <item> bcscale </item>
+      <item> bcsqrt </item>
+      <item> bcsub </item>
+      <item> bin2hex </item>
+      <item> bind_textdomain_codeset </item>
+      <item> bindec </item>
+      <item> bindtextdomain </item>
+      <item> bzclose </item>
+      <item> bzcompress </item>
+      <item> bzdecompress </item>
+      <item> bzerrno </item>
+      <item> bzerror </item>
+      <item> bzerrstr </item>
+      <item> bzflush </item>
+      <item> bzopen </item>
+      <item> bzread </item>
+      <item> bzwrite </item>
+      <item> cal_days_in_month </item>
+      <item> cal_from_jd </item>
+      <item> cal_info </item>
+      <item> cal_to_jd </item>
+      <item> call_user_func </item>
+      <item> call_user_func_array </item>
+      <item> call_user_method </item>
+      <item> call_user_method_array </item>
+      <item> ccvs_add </item>
+      <item> ccvs_auth </item>
+      <item> ccvs_command </item>
+      <item> ccvs_count </item>
+      <item> ccvs_delete </item>
+      <item> ccvs_done </item>
+      <item> ccvs_init </item>
+      <item> ccvs_lookup </item>
+      <item> ccvs_new </item>
+      <item> ccvs_report </item>
+      <item> ccvs_return </item>
+      <item> ccvs_reverse </item>
+      <item> ccvs_sale </item>
+      <item> ccvs_status </item>
+      <item> ccvs_textvalue </item>
+      <item> ccvs_void </item>
+      <item> ceil </item>
+      <item> chdir </item>
+      <item> checkdate </item>
+      <item> checkdnsrr </item>
+      <item> chgrp </item>
+      <item> chmod </item>
+      <item> chop </item>
+      <item> chown </item>
+      <item> chr </item>
+      <item> chroot </item>
+      <item> chunk_split </item>
+      <item> class_exists </item>
+      <item> class_implements </item>
+      <item> class_parents </item>
+      <item> clearstatcache </item>
+      <item> closedir </item>
+      <item> closelog </item>
+      <item> com </item>
+      <item> com_addref </item>
+      <item> com_get </item>
+      <item> com_invoke </item>
+      <item> com_isenum </item>
+      <item> com_load </item>
+      <item> com_load_typelib </item>
+      <item> com_propget </item>
+      <item> com_propput </item>
+      <item> com_propset </item>
+      <item> com_release </item>
+      <item> com_set </item>
+      <item> compact </item>
+      <item> connection_aborted </item>
+      <item> connection_status </item>
+      <item> connection_timeout </item>
+      <item> constant </item>
+      <item> convert_cyr_string </item>
+      <item> convert_uudecode </item>
+      <item> convert_uuencode </item>
+      <item> copy </item>
+      <item> cos </item>
+      <item> cosh </item>
+      <item> count </item>
+      <item> count_chars </item>
+      <item> cpdf_add_annotation </item>
+      <item> cpdf_add_outline </item>
+      <item> cpdf_arc </item>
+      <item> cpdf_begin_text </item>
+      <item> cpdf_circle </item>
+      <item> cpdf_clip </item>
+      <item> cpdf_close </item>
+      <item> cpdf_closepath </item>
+      <item> cpdf_closepath_fill_stroke </item>
+      <item> cpdf_closepath_stroke </item>
+      <item> cpdf_continue_text </item>
+      <item> cpdf_curveto </item>
+      <item> cpdf_end_text </item>
+      <item> cpdf_fill </item>
+      <item> cpdf_fill_stroke </item>
+      <item> cpdf_finalize </item>
+      <item> cpdf_finalize_page </item>
+      <item> cpdf_global_set_document_limits </item>
+      <item> cpdf_import_jpeg </item>
+      <item> cpdf_lineto </item>
+      <item> cpdf_moveto </item>
+      <item> cpdf_newpath </item>
+      <item> cpdf_open </item>
+      <item> cpdf_output_buffer </item>
+      <item> cpdf_page_init </item>
+      <item> cpdf_place_inline_image </item>
+      <item> cpdf_rect </item>
+      <item> cpdf_restore </item>
+      <item> cpdf_rlineto </item>
+      <item> cpdf_rmoveto </item>
+      <item> cpdf_rotate </item>
+      <item> cpdf_rotate_text </item>
+      <item> cpdf_save </item>
+      <item> cpdf_save_to_file </item>
+      <item> cpdf_scale </item>
+      <item> cpdf_set_action_url </item>
+      <item> cpdf_set_char_spacing </item>
+      <item> cpdf_set_creator </item>
+      <item> cpdf_set_current_page </item>
+      <item> cpdf_set_font </item>
+      <item> cpdf_set_font_directories </item>
+      <item> cpdf_set_font_map_file </item>
+      <item> cpdf_set_horiz_scaling </item>
+      <item> cpdf_set_keywords </item>
+      <item> cpdf_set_leading </item>
+      <item> cpdf_set_page_animation </item>
+      <item> cpdf_set_subject </item>
+      <item> cpdf_set_text_matrix </item>
+      <item> cpdf_set_text_pos </item>
+      <item> cpdf_set_text_rendering </item>
+      <item> cpdf_set_text_rise </item>
+      <item> cpdf_set_title </item>
+      <item> cpdf_set_viewer_preferences </item>
+      <item> cpdf_set_word_spacing </item>
+      <item> cpdf_setdash </item>
+      <item> cpdf_setflat </item>
+      <item> cpdf_setgray </item>
+      <item> cpdf_setgray_fill </item>
+      <item> cpdf_setgray_stroke </item>
+      <item> cpdf_setlinecap </item>
+      <item> cpdf_setlinejoin </item>
+      <item> cpdf_setlinewidth </item>
+      <item> cpdf_setmiterlimit </item>
+      <item> cpdf_setrgbcolor </item>
+      <item> cpdf_setrgbcolor_fill </item>
+      <item> cpdf_setrgbcolor_stroke </item>
+      <item> cpdf_show </item>
+      <item> cpdf_show_xy </item>
+      <item> cpdf_stringwidth </item>
+      <item> cpdf_stroke </item>
+      <item> cpdf_text </item>
+      <item> cpdf_translate </item>
+      <item> crack_check </item>
+      <item> crack_closedict </item>
+      <item> crack_getlastmessage </item>
+      <item> crack_opendict </item>
+      <item> crc32 </item>
+      <item> create_function </item>
+      <item> crypt </item>
+      <item> ctype_alnum </item>
+      <item> ctype_alpha </item>
+      <item> ctype_cntrl </item>
+      <item> ctype_digit </item>
+      <item> ctype_graph </item>
+      <item> ctype_lower </item>
+      <item> ctype_print </item>
+      <item> ctype_punct </item>
+      <item> ctype_space </item>
+      <item> ctype_upper </item>
+      <item> ctype_xdigit </item>
+      <item> curl_close </item>
+      <item> curl_copy_handle </item>
+      <item> curl_errno </item>
+      <item> curl_error </item>
+      <item> curl_exec </item>
+      <item> curl_getinfo </item>
+      <item> curl_init </item>
+      <item> curl_multi_add_handle </item>
+      <item> curl_multi_close </item>
+      <item> curl_multi_exec </item>
+      <item> curl_multi_getcontent </item>
+      <item> curl_multi_info_read </item>
+      <item> curl_multi_init </item>
+      <item> curl_multi_remove_handle </item>
+      <item> curl_multi_select </item>
+      <item> curl_setopt </item>
+      <item> curl_version </item>
+      <item> current </item>
+      <item> cybercash_base64_decode </item>
+      <item> cybercash_base64_encode </item>
+      <item> cybercash_decr </item>
+      <item> cybercash_encr </item>
+      <item> cybermut_creerformulairecm </item>
+      <item> cybermut_creerreponsecm </item>
+      <item> cybermut_testmac </item>
+      <item> cyrus_authenticate </item>
+      <item> cyrus_bind </item>
+      <item> cyrus_close </item>
+      <item> cyrus_connect </item>
+      <item> cyrus_query </item>
+      <item> cyrus_unbind </item>
+      <item> date </item>
+      <item> date_sunrise </item>
+      <item> date_sunset </item>
+      <item> dba_close </item>
+      <item> dba_delete </item>
+      <item> dba_exists </item>
+      <item> dba_fetch </item>
+      <item> dba_firstkey </item>
+      <item> dba_handlers </item>
+      <item> dba_insert </item>
+      <item> dba_key_split </item>
+      <item> dba_list </item>
+      <item> dba_nextkey </item>
+      <item> dba_open </item>
+      <item> dba_optimize </item>
+      <item> dba_popen </item>
+      <item> dba_replace </item>
+      <item> dba_sync </item>
+      <item> dbase_add_record </item>
+      <item> dbase_close </item>
+      <item> dbase_create </item>
+      <item> dbase_delete_record </item>
+      <item> dbase_get_header_info </item>
+      <item> dbase_get_record </item>
+      <item> dbase_get_record_with_names </item>
+      <item> dbase_numfields </item>
+      <item> dbase_numrecords </item>
+      <item> dbase_open </item>
+      <item> dbase_pack </item>
+      <item> dbase_replace_record </item>
+      <item> dblist </item>
+      <item> dbmclose </item>
+      <item> dbmdelete </item>
+      <item> dbmexists </item>
+      <item> dbmfetch </item>
+      <item> dbmfirstkey </item>
+      <item> dbminsert </item>
+      <item> dbmnextkey </item>
+      <item> dbmopen </item>
+      <item> dbmreplace </item>
+      <item> dbplus_add </item>
+      <item> dbplus_aql </item>
+      <item> dbplus_chdir </item>
+      <item> dbplus_close </item>
+      <item> dbplus_curr </item>
+      <item> dbplus_errcode </item>
+      <item> dbplus_errno </item>
+      <item> dbplus_find </item>
+      <item> dbplus_first </item>
+      <item> dbplus_flush </item>
+      <item> dbplus_freealllocks </item>
+      <item> dbplus_freelock </item>
+      <item> dbplus_freerlocks </item>
+      <item> dbplus_getlock </item>
+      <item> dbplus_getunique </item>
+      <item> dbplus_info </item>
+      <item> dbplus_last </item>
+      <item> dbplus_lockrel </item>
+      <item> dbplus_next </item>
+      <item> dbplus_open </item>
+      <item> dbplus_prev </item>
+      <item> dbplus_rchperm </item>
+      <item> dbplus_rcreate </item>
+      <item> dbplus_rcrtexact </item>
+      <item> dbplus_rcrtlike </item>
+      <item> dbplus_resolve </item>
+      <item> dbplus_restorepos </item>
+      <item> dbplus_rkeys </item>
+      <item> dbplus_ropen </item>
+      <item> dbplus_rquery </item>
+      <item> dbplus_rrename </item>
+      <item> dbplus_rsecindex </item>
+      <item> dbplus_runlink </item>
+      <item> dbplus_rzap </item>
+      <item> dbplus_savepos </item>
+      <item> dbplus_setindex </item>
+      <item> dbplus_setindexbynumber </item>
+      <item> dbplus_sql </item>
+      <item> dbplus_tcl </item>
+      <item> dbplus_tremove </item>
+      <item> dbplus_undo </item>
+      <item> dbplus_undoprepare </item>
+      <item> dbplus_unlockrel </item>
+      <item> dbplus_unselect </item>
+      <item> dbplus_update </item>
+      <item> dbplus_xlockrel </item>
+      <item> dbplus_xunlockrel </item>
+      <item> dbx_close </item>
+      <item> dbx_compare </item>
+      <item> dbx_connect </item>
+      <item> dbx_error </item>
+      <item> dbx_escape_string </item>
+      <item> dbx_fetch_row </item>
+      <item> dbx_query </item>
+      <item> dbx_sort </item>
+      <item> dcgettext </item>
+      <item> dcngettext </item>
+      <item> debug_backtrace </item>
+      <item> debug_print_backtrace </item>
+      <item> debug_zval_dump </item>
+      <item> dcgettext </item>
+      <item> dcngettext </item>
+      <item> debugger_off </item>
+      <item> debugger_on </item>
+      <item> decbin </item>
+      <item> dechex </item>
+      <item> decoct </item>
+      <item> define </item>
+      <item> define_syslog_variables </item>
+      <item> defined </item>
+      <item> deg2rad </item>
+      <item> delete </item>
+      <item> dgettext </item>
+      <item> die </item>
+      <item> dio_close </item>
+      <item> dio_fcntl </item>
+      <item> dio_open </item>
+      <item> dio_read </item>
+      <item> dio_seek </item>
+      <item> dio_stat </item>
+      <item> dio_tcsetattr </item>
+      <item> dio_truncate </item>
+      <item> dio_write </item>
+      <item> dir </item>
+      <item> dirname </item>
+      <item> disk_free_space </item>
+      <item> disk_total_space </item>
+      <item> diskfreespace </item>
+      <item> dl </item>
+      <item> dngettext </item>
+      <item> dns_check_record </item>
+      <item> dns_get_mx </item>
+      <item> dns_get_record </item>
+      <item> dom_import_simplexml </item>
+      <item> dngettext </item>
+      <item> domxml_add_root </item>
+      <item> domxml_attributes </item>
+      <item> domxml_children </item>
+      <item> domxml_dumpmem </item>
+      <item> domxml_get_attribute </item>
+      <item> domxml_new_child </item>
+      <item> domxml_new_xmldoc </item>
+      <item> domxml_node </item>
+      <item> domxml_node_set_content </item>
+      <item> domxml_node_unlink_node </item>
+      <item> domxml_root </item>
+      <item> domxml_set_attribute </item>
+      <item> domxml_version </item>
+      <item> dotnet_load </item>
+      <item> doubleval </item>
+      <item> each </item>
+      <item> easter_date </item>
+      <item> easter_days </item>
+      <item> ebcdic2ascii </item>
+      <item> echo </item>
+      <item> empty </item>
+      <item> end </item>
+      <item> ereg </item>
+      <item> ereg_replace </item>
+      <item> eregi </item>
+      <item> eregi_replace </item>
+      <item> error_log </item>
+      <item> error_reporting </item>
+      <item> escapeshellarg </item>
+      <item> escapeshellcmd </item>
+      <item> eval </item>
+      <item> exec </item>
+      <item> exif_imagetype </item>
+      <item> exif_read_data </item>
+      <item> exif_tagname </item>
+      <item> exif_thumbnail </item>
+      <item> exit </item>
+      <item> exp </item>
+      <item> explode </item>
+      <item> expm1 </item>
+      <item> extension_loaded </item>
+      <item> extract </item>
+      <item> ezmlm_hash </item>
+      <item> fam_cancel_monitor </item>
+      <item> fam_close </item>
+      <item> fam_monitor_collection </item>
+      <item> fam_monitor_directory </item>
+      <item> fam_monitor_file </item>
+      <item> fam_next_event </item>
+      <item> fam_open </item>
+      <item> fam_pending </item>
+      <item> fam_resume_monitor </item>
+      <item> fam_suspend_monitor </item>
+      <item> fbsql_affected_rows </item>
+      <item> fbsql_autocommit </item>
+      <item> fbsql_change_user </item>
+      <item> fbsql_close </item>
+      <item> fbsql_commit </item>
+      <item> fbsql_connect </item>
+      <item> fbsql_create_blob </item>
+      <item> fbsql_create_clob </item>
+      <item> fbsql_create_db </item>
+      <item> fbsql_data_seek </item>
+      <item> fbsql_database </item>
+      <item> fbsql_database_password </item>
+      <item> fbsql_db_query </item>
+      <item> fbsql_db_status </item>
+      <item> fbsql_drop_db </item>
+      <item> fbsql_errno </item>
+      <item> fbsql_error </item>
+      <item> fbsql_fetch_array </item>
+      <item> fbsql_fetch_assoc </item>
+      <item> fbsql_fetch_field </item>
+      <item> fbsql_fetch_lengths </item>
+      <item> fbsql_fetch_object </item>
+      <item> fbsql_fetch_row </item>
+      <item> fbsql_field_flags </item>
+      <item> fbsql_field_len </item>
+      <item> fbsql_field_name </item>
+      <item> fbsql_field_seek </item>
+      <item> fbsql_field_table </item>
+      <item> fbsql_field_type </item>
+      <item> fbsql_free_result </item>
+      <item> fbsql_get_autostart_info </item>
+      <item> fbsql_hostname </item>
+      <item> fbsql_insert_id </item>
+      <item> fbsql_list_dbs </item>
+      <item> fbsql_list_fields </item>
+      <item> fbsql_list_tables </item>
+      <item> fbsql_next_result </item>
+      <item> fbsql_num_fields </item>
+      <item> fbsql_num_rows </item>
+      <item> fbsql_password </item>
+      <item> fbsql_pconnect </item>
+      <item> fbsql_query </item>
+      <item> fbsql_read_blob </item>
+      <item> fbsql_read_clob </item>
+      <item> fbsql_result </item>
+      <item> fbsql_rollback </item>
+      <item> fbsql_select_db </item>
+      <item> fbsql_set_lob_mode </item>
+      <item> fbsql_set_transaction </item>
+      <item> fbsql_start_db </item>
+      <item> fbsql_stop_db </item>
+      <item> fbsql_tablename </item>
+      <item> fbsql_username </item>
+      <item> fbsql_warnings </item>
+      <item> fclose </item>
+      <item> fdf_add_template </item>
+      <item> fdf_close </item>
+      <item> fdf_create </item>
+      <item> fdf_get_file </item>
+      <item> fdf_get_status </item>
+      <item> fdf_get_value </item>
+      <item> fdf_next_field_name </item>
+      <item> fdf_open </item>
+      <item> fdf_save </item>
+      <item> fdf_set_ap </item>
+      <item> fdf_set_encoding </item>
+      <item> fdf_set_file </item>
+      <item> fdf_set_flags </item>
+      <item> fdf_set_javascript_action </item>
+      <item> fdf_set_opt </item>
+      <item> fdf_set_status </item>
+      <item> fdf_set_submit_form_action </item>
+      <item> fdf_set_value </item>
+      <item> feof </item>
+      <item> fflush </item>
+      <item> fgetc </item>
+      <item> fgetcsv </item>
+      <item> fgets </item>
+      <item> fgetss </item>
+      <item> fgetwrapperdata </item>
+      <item> file </item>
+      <item> file_exists </item>
+      <item> file_get_contents </item>
+      <item> file_put_contents </item>
+      <item> fileatime </item>
+      <item> filectime </item>
+      <item> filegroup </item>
+      <item> fileinode </item>
+      <item> filemtime </item>
+      <item> fileowner </item>
+      <item> fileperms </item>
+      <item> filepro </item>
+      <item> filepro_fieldcount </item>
+      <item> filepro_fieldname </item>
+      <item> filepro_fieldtype </item>
+      <item> filepro_fieldwidth </item>
+      <item> filepro_retrieve </item>
+      <item> filepro_rowcount </item>
+      <item> filesize </item>
+      <item> filetype </item>
+      <item> floatval </item>
+      <item> flock </item>
+      <item> floor </item>
+      <item> flush </item>
+      <item> fmod </item>
+      <item> fnmatch </item>
+      <item> fopen </item>
+      <item> fpassthru </item>
+      <item> fprintf </item>
+      <item> fputs </item>
+      <item> fread </item>
+      <item> frenchtojd </item>
+      <item> fribidi_log2vis </item>
+      <item> fscanf </item>
+      <item> fseek </item>
+      <item> fsockopen </item>
+      <item> fstat </item>
+      <item> ftell </item>
+      <item> ftok </item>
+      <item> ftp_alloc </item>
+      <item> ftp_cdup </item>
+      <item> ftp_chdir </item>
+      <item> ftp_chmod </item>
+      <item> ftp_close </item>
+      <item> ftp_connect </item>
+      <item> ftp_delete </item>
+      <item> ftp_exec </item>
+      <item> ftp_fget </item>
+      <item> ftp_fput </item>
+      <item> ftp_get </item>
+      <item> ftp_get_option </item>
+      <item> ftp_login </item>
+      <item> ftp_mdtm </item>
+      <item> ftp_mkdir </item>
+      <item> ftp_nb_continue </item>
+      <item> ftp_nb_fget </item>
+      <item> ftp_nb_fput </item>
+      <item> ftp_nb_get </item>
+      <item> ftp_nb_put </item>
+      <item> ftp_nlist </item>
+      <item> ftp_pasv </item>
+      <item> ftp_put </item>
+      <item> ftp_pwd </item>
+      <item> ftp_quit </item>
+      <item> ftp_raw </item>
+      <item> ftp_rawlist </item>
+      <item> ftp_rename </item>
+      <item> ftp_rmdir </item>
+      <item> ftp_set_option </item>
+      <item> ftp_site </item>
+      <item> ftp_size </item>
+      <item> ftp_ssl_connect </item>
+      <item> ftp_systype </item>
+      <item> ftruncate </item>
+      <item> func_get_arg </item>
+      <item> func_get_args </item>
+      <item> func_num_args </item>
+      <item> function_exists </item>
+      <item> fwrite </item>
+      <item> gd_info </item>
+      <item> get_browser </item>
+      <item> get_cfg_var </item>
+      <item> get_class </item>
+      <item> get_class_methods </item>
+      <item> get_class_vars </item>
+      <item> get_current_user </item>
+      <item> get_declared_classes </item>
+      <item> get_declared_interfaces </item>
+      <item> get_defined_constants </item>
+      <item> get_defined_functions </item>
+      <item> get_defined_vars </item>
+      <item> get_extension_funcs </item>
+      <item> get_headers </item>
+      <item> get_html_translation_table </item>
+      <item> get_include_path </item>
+      <item> get_included_files </item>
+      <item> get_loaded_extensions </item>
+      <item> get_magic_quotes_gpc </item>
+      <item> get_magic_quotes_runtime </item>
+      <item> get_meta_tags </item>
+      <item> get_object_vars </item>
+      <item> get_parent_class </item>
+      <item> get_required_files </item>
+      <item> get_resource_type </item>
+      <item> getallheaders </item>
+      <item> getcwd </item>
+      <item> getdate </item>
+      <item> getenv </item>
+      <item> gethostbyaddr </item>
+      <item> gethostbyname </item>
+      <item> gethostbynamel </item>
+      <item> getimagesize </item>
+      <item> getlastmod </item>
+      <item> getmxrr </item>
+      <item> getmygid </item>
+      <item> getmyinode </item>
+      <item> getmypid </item>
+      <item> getmyuid </item>
+      <item> getopt </item>
+      <item> getprotobyname </item>
+      <item> getprotobynumber </item>
+      <item> getrandmax </item>
+      <item> getrusage </item>
+      <item> getservbyname </item>
+      <item> getservbyport </item>
+      <item> gettext </item>
+      <item> gettimeofday </item>
+      <item> gettype </item>
+      <item> glob </item>
+      <item> global </item>
+      <item> gmdate </item>
+      <item> gmmktime </item>
+      <item> gmp_abs </item>
+      <item> gmp_add </item>
+      <item> gmp_and </item>
+      <item> gmp_clrbit </item>
+      <item> gmp_cmp </item>
+      <item> gmp_com </item>
+      <item> gmp_div </item>
+      <item> gmp_div_q </item>
+      <item> gmp_div_qr </item>
+      <item> gmp_div_r </item>
+      <item> gmp_divexact </item>
+      <item> gmp_fact </item>
+      <item> gmp_gcd </item>
+      <item> gmp_gcdext </item>
+      <item> gmp_hamdist </item>
+      <item> gmp_init </item>
+      <item> gmp_intval </item>
+      <item> gmp_invert </item>
+      <item> gmp_jacobi </item>
+      <item> gmp_legendre </item>
+      <item> gmp_mod </item>
+      <item> gmp_mul </item>
+      <item> gmp_neg </item>
+      <item> gmp_or </item>
+      <item> gmp_perfect_square </item>
+      <item> gmp_popcount </item>
+      <item> gmp_pow </item>
+      <item> gmp_powm </item>
+      <item> gmp_prob_prime </item>
+      <item> gmp_random </item>
+      <item> gmp_scan0 </item>
+      <item> gmp_scan1 </item>
+      <item> gmp_setbit </item>
+      <item> gmp_sign </item>
+      <item> gmp_sqrt </item>
+      <item> gmp_sqrtrem </item>
+      <item> gmp_strval </item>
+      <item> gmp_sub </item>
+      <item> gmp_xor </item>
+      <item> gmstrftime </item>
+      <item> gregoriantojd </item>
+      <item> gzclose </item>
+      <item> gzcompress </item>
+      <item> gzdeflate </item>
+      <item> gzencode </item>
+      <item> gzeof </item>
+      <item> gzfile </item>
+      <item> gzgetc </item>
+      <item> gzgets </item>
+      <item> gzgetss </item>
+      <item> gzinflate </item>
+      <item> gzopen </item>
+      <item> gzpassthru </item>
+      <item> gzputs </item>
+      <item> gzread </item>
+      <item> gzrewind </item>
+      <item> gzseek </item>
+      <item> gztell </item>
+      <item> gzuncompress </item>
+      <item> gzwrite </item>
+      <item> header </item>
+      <item> headers_list </item>
+      <item> headers_sent </item>
+      <item> hebrev </item>
+      <item> hebrevc </item>
+      <item> hexdec </item>
+      <item> highlight_file </item>
+      <item> highlight_string </item>
+      <item> html_entity_decode </item>
+      <item> htmlentities </item>
+      <item> htmlspecialchars </item>
+      <item> http_build_query </item>
+      <item> hw_array2objrec </item>
+      <item> hw_changeobject </item>
+      <item> hw_children </item>
+      <item> hw_childrenobj </item>
+      <item> hw_close </item>
+      <item> hw_connect </item>
+      <item> hw_connection_info </item>
+      <item> hw_cp </item>
+      <item> hw_deleteobject </item>
+      <item> hw_docbyanchor </item>
+      <item> hw_docbyanchorobj </item>
+      <item> hw_document_attributes </item>
+      <item> hw_document_bodytag </item>
+      <item> hw_document_content </item>
+      <item> hw_document_setcontent </item>
+      <item> hw_document_size </item>
+      <item> hw_dummy </item>
+      <item> hw_edittext </item>
+      <item> hw_error </item>
+      <item> hw_errormsg </item>
+      <item> hw_free_document </item>
+      <item> hw_getanchors </item>
+      <item> hw_getanchorsobj </item>
+      <item> hw_getandlock </item>
+      <item> hw_getchildcoll </item>
+      <item> hw_getchildcollobj </item>
+      <item> hw_getchilddoccoll </item>
+      <item> hw_getchilddoccollobj </item>
+      <item> hw_getobject </item>
+      <item> hw_getobjectbyquery </item>
+      <item> hw_getobjectbyquerycoll </item>
+      <item> hw_getobjectbyquerycollobj </item>
+      <item> hw_getobjectbyqueryobj </item>
+      <item> hw_getparents </item>
+      <item> hw_getparentsobj </item>
+      <item> hw_getrellink </item>
+      <item> hw_getremote </item>
+      <item> hw_getremotechildren </item>
+      <item> hw_getsrcbydestobj </item>
+      <item> hw_gettext </item>
+      <item> hw_getusername </item>
+      <item> hw_identify </item>
+      <item> hw_incollections </item>
+      <item> hw_info </item>
+      <item> hw_inscoll </item>
+      <item> hw_insdoc </item>
+      <item> hw_insertanchors </item>
+      <item> hw_insertdocument </item>
+      <item> hw_insertobject </item>
+      <item> hw_mapid </item>
+      <item> hw_modifyobject </item>
+      <item> hw_mv </item>
+      <item> hw_new_document </item>
+      <item> hw_objrec2array </item>
+      <item> hw_output_document </item>
+      <item> hw_pconnect </item>
+      <item> hw_pipedocument </item>
+      <item> hw_root </item>
+      <item> hw_setlinkroot </item>
+      <item> hw_stat </item>
+      <item> hw_unlock </item>
+      <item> hw_who </item>
+      <item> hypot </item>
+      <item> idate </item>
+      <item> ibase_blob_add </item>
+      <item> ibase_blob_cancel </item>
+      <item> ibase_blob_close </item>
+      <item> ibase_blob_create </item>
+      <item> ibase_blob_echo </item>
+      <item> ibase_blob_get </item>
+      <item> ibase_blob_import </item>
+      <item> ibase_blob_info </item>
+      <item> ibase_blob_open </item>
+      <item> ibase_close </item>
+      <item> ibase_commit </item>
+      <item> ibase_connect </item>
+      <item> ibase_errmsg </item>
+      <item> ibase_execute </item>
+      <item> ibase_fetch_object </item>
+      <item> ibase_fetch_row </item>
+      <item> ibase_field_info </item>
+      <item> ibase_free_query </item>
+      <item> ibase_free_result </item>
+      <item> ibase_num_fields </item>
+      <item> ibase_pconnect </item>
+      <item> ibase_prepare </item>
+      <item> ibase_query </item>
+      <item> ibase_rollback </item>
+      <item> ibase_timefmt </item>
+      <item> ibase_trans </item>
+      <item> icap_close </item>
+      <item> icap_create_calendar </item>
+      <item> icap_delete_calendar </item>
+      <item> icap_delete_event </item>
+      <item> icap_fetch_event </item>
+      <item> icap_list_alarms </item>
+      <item> icap_list_events </item>
+      <item> icap_open </item>
+      <item> icap_rename_calendar </item>
+      <item> icap_reopen </item>
+      <item> icap_snooze </item>
+      <item> icap_store_event </item>
+      <item> iconv </item>
+      <item> iconv_get_encoding </item>
+      <item> iconv_mime_decode </item>
+      <item> iconv_mime_decode_headers </item>
+      <item> iconv_mime_encode </item>
+      <item> iconv_set_encoding </item>
+      <item> ifx_affected_rows </item>
+      <item> ifx_blobinfile_mode </item>
+      <item> ifx_byteasvarchar </item>
+      <item> ifx_close </item>
+      <item> ifx_connect </item>
+      <item> ifx_copy_blob </item>
+      <item> ifx_create_blob </item>
+      <item> ifx_create_char </item>
+      <item> ifx_do </item>
+      <item> ifx_error </item>
+      <item> ifx_errormsg </item>
+      <item> ifx_fetch_row </item>
+      <item> ifx_fieldproperties </item>
+      <item> ifx_fieldtypes </item>
+      <item> ifx_free_blob </item>
+      <item> ifx_free_char </item>
+      <item> ifx_free_result </item>
+      <item> ifx_get_blob </item>
+      <item> ifx_get_char </item>
+      <item> ifx_getsqlca </item>
+      <item> ifx_htmltbl_result </item>
+      <item> ifx_nullformat </item>
+      <item> ifx_num_fields </item>
+      <item> ifx_num_rows </item>
+      <item> ifx_pconnect </item>
+      <item> ifx_prepare </item>
+      <item> ifx_query </item>
+      <item> ifx_textasvarchar </item>
+      <item> ifx_update_blob </item>
+      <item> ifx_update_char </item>
+      <item> ifxus_close_slob </item>
+      <item> ifxus_create_slob </item>
+      <item> ifxus_free_slob </item>
+      <item> ifxus_open_slob </item>
+      <item> ifxus_read_slob </item>
+      <item> ifxus_seek_slob </item>
+      <item> ifxus_tell_slob </item>
+      <item> ifxus_write_slob </item>
+      <item> ignore_user_abort </item>
+      <item> image2wbmp </item>
+      <item> image_type_to_mime_type </item>
+      <item> imagealphablending </item>
+      <item> imageantialias </item>
+      <item> imagearc </item>
+      <item> imagechar </item>
+      <item> imagecharup </item>
+      <item> imagecolorallocate </item>
+      <item> imagecolorallocatealpha </item>
+      <item> imagecolorat </item>
+      <item> imagecolorclosest </item>
+      <item> imagecolorclosestalpha </item>
+      <item> imagecolorclosesthwb </item>
+      <item> imagecolordeallocate </item>
+      <item> imagecolorexact </item>
+      <item> imagecolorexactalpha </item>
+      <item> imagecolormatch </item>
+      <item> imagecolorresolve </item>
+      <item> imagecolorresolvealpha </item>
+      <item> imagecolorset </item>
+      <item> imagecolorsforindex </item>
+      <item> imagecolorstotal </item>
+      <item> imagecolortransparent </item>
+      <item> imagecopy </item>
+      <item> imagecopymerge </item>
+      <item> imagecopymergegray </item>
+      <item> imagecopyresampled </item>
+      <item> imagecopyresized </item>
+      <item> imagecreate </item>
+      <item> imagecreatefromgd </item>
+      <item> imagecreatefromgd2 </item>
+      <item> imagecreatefromgd2part </item>
+      <item> imagecreatefromgif </item>
+      <item> imagecreatefromjpeg </item>
+      <item> imagecreatefrompng </item>
+      <item> imagecreatefromstring </item>
+      <item> imagecreatefromwbmp </item>
+      <item> imagecreatefromxbm </item>
+      <item> imagecreatefromxpm </item>
+      <item> imagecreatetruecolor </item>
+      <item> imagedashedline </item>
+      <item> imagedestroy </item>
+      <item> imageellipse </item>
+      <item> imagefill </item>
+      <item> imagefilledarc </item>
+      <item> imagefilledellipse </item>
+      <item> imagefilledpolygon </item>
+      <item> imagefilledrectangle </item>
+      <item> imagefilltoborder </item>
+      <item> imagefilter </item>
+      <item> imagefontheight </item>
+      <item> imagefontwidth </item>
+      <item> imageftbbox </item>
+      <item> imagefttext </item>
+      <item> imagegammacorrect </item>
+      <item> imagegd </item>
+      <item> imagegd2 </item>
+      <item> imagegif </item>
+      <item> imageinterlace </item>
+      <item> imageistruecolor </item>
+      <item> imagejpeg </item>
+      <item> imagelayereffect </item>
+      <item> imageline </item>
+      <item> imageloadfont </item>
+      <item> imagepalettecopy </item>
+      <item> imagepng </item>
+      <item> imagepolygon </item>
+      <item> imagepsbbox </item>
+      <item> imagepsencodefont </item>
+      <item> imagepsextendfont </item>
+      <item> imagepsfreefont </item>
+      <item> imagepsloadfont </item>
+      <item> imagepsslantfont </item>
+      <item> imagepstext </item>
+      <item> imagerectangle </item>
+      <item> imagerotate </item>
+      <item> imagesavealpha </item>
+      <item> imagesetbrush </item>
+      <item> imagesetpixel </item>
+      <item> imagesetstyle </item>
+      <item> imagesetthickness </item>
+      <item> imagesettile </item>
+      <item> imagestring </item>
+      <item> imagestringup </item>
+      <item> imagesx </item>
+      <item> imagesy </item>
+      <item> imagetruecolortopalette </item>
+      <item> imagettfbbox </item>
+      <item> imagettftext </item>
+      <item> imagetypes </item>
+      <item> imagewbmp </item>
+      <item> imagexbm </item>
+      <item> imap_8bit </item>
+      <item> imap_alerts </item>
+      <item> imap_append </item>
+      <item> imap_base64 </item>
+      <item> imap_binary </item>
+      <item> imap_body </item>
+      <item> imap_bodystruct </item>
+      <item> imap_check </item>
+      <item> imap_clearflag_full </item>
+      <item> imap_close </item>
+      <item> imap_create </item>
+      <item> imap_createmailbox </item>
+      <item> imap_delete </item>
+      <item> imap_deletemailbox </item>
+      <item> imap_errors </item>
+      <item> imap_expunge </item>
+      <item> imap_fetch_overview </item>
+      <item> imap_fetchbody </item>
+      <item> imap_fetchheader </item>
+      <item> imap_fetchstructure </item>
+      <item> imap_fetchtext </item>
+      <item> imap_get_quota </item>
+      <item> imap_get_quotaroot </item>
+      <item> imap_getacl </item>
+      <item> imap_getmailboxes </item>
+      <item> imap_getsubscribed </item>
+      <item> imap_header </item>
+      <item> imap_headerinfo </item>
+      <item> imap_headers </item>
+      <item> imap_last_error </item>
+      <item> imap_list </item>
+      <item> imap_listmailbox </item>
+      <item> imap_listsubscribed </item>
+      <item> imap_lsub </item>
+      <item> imap_mail </item>
+      <item> imap_mail_compose </item>
+      <item> imap_mail_copy </item>
+      <item> imap_mail_move </item>
+      <item> imap_mailboxmsginfo </item>
+      <item> imap_mime_header_decode </item>
+      <item> imap_msgno </item>
+      <item> imap_num_msg </item>
+      <item> imap_num_recent </item>
+      <item> imap_open </item>
+      <item> imap_ping </item>
+      <item> imap_popen </item>
+      <item> imap_qprint </item>
+      <item> imap_rename </item>
+      <item> imap_renamemailbox </item>
+      <item> imap_reopen </item>
+      <item> imap_rfc822_parse_adrlist </item>
+      <item> imap_rfc822_parse_headers </item>
+      <item> imap_rfc822_write_address </item>
+      <item> imap_scan </item>
+      <item> imap_scanmailbox </item>
+      <item> imap_search </item>
+      <item> imap_set_quota </item>
+      <item> imap_setacl </item>
+      <item> imap_setflag_full </item>
+      <item> imap_sort </item>
+      <item> imap_status </item>
+      <item> imap_subscribe </item>
+      <item> imap_thread </item>
+      <item> imap_timeout </item>
+      <item> imap_uid </item>
+      <item> imap_undelete </item>
+      <item> imap_unsubscribe </item>
+      <item> imap_utf7_decode </item>
+      <item> imap_utf7_encode </item>
+      <item> imap_utf8 </item>
+      <item> implode </item>
+      <item> import_request_variables </item>
+      <item> in_array </item>
+      <item> include </item>
+      <item> include_once </item>
+      <item> ingres_autocommit </item>
+      <item> ingres_close </item>
+      <item> ingres_commit </item>
+      <item> ingres_connect </item>
+      <item> ingres_fetch_array </item>
+      <item> ingres_fetch_object </item>
+      <item> ingres_fetch_row </item>
+      <item> ingres_field_length </item>
+      <item> ingres_field_name </item>
+      <item> ingres_field_nullable </item>
+      <item> ingres_field_precision </item>
+      <item> ingres_field_scale </item>
+      <item> ingres_field_type </item>
+      <item> ingres_num_fields </item>
+      <item> ingres_num_rows </item>
+      <item> ingres_pconnect </item>
+      <item> ingres_query </item>
+      <item> ingres_rollback </item>
+      <item> ini_alter </item>
+      <item> ini_get </item>
+      <item> ini_get_all </item>
+      <item> ini_restore </item>
+      <item> ini_set </item>
+      <item> interface_exists </item>
+      <item> intval </item>
+      <item> ip2long </item>
+      <item> iptcembed </item>
+      <item> iptcparse </item>
+      <item> ircg_channel_mode </item>
+      <item> ircg_disconnect </item>
+      <item> ircg_fetch_error_msg </item>
+      <item> ircg_get_username </item>
+      <item> ircg_html_encode </item>
+      <item> ircg_ignore_add </item>
+      <item> ircg_ignore_del </item>
+      <item> ircg_is_conn_alive </item>
+      <item> ircg_join </item>
+      <item> ircg_kick </item>
+      <item> ircg_lookup_format_messages </item>
+      <item> ircg_msg </item>
+      <item> ircg_nick </item>
+      <item> ircg_nickname_escape </item>
+      <item> ircg_nickname_unescape </item>
+      <item> ircg_notice </item>
+      <item> ircg_part </item>
+      <item> ircg_pconnect </item>
+      <item> ircg_register_format_messages </item>
+      <item> ircg_set_current </item>
+      <item> ircg_set_file </item>
+      <item> ircg_set_on_die </item>
+      <item> ircg_topic </item>
+      <item> ircg_whois </item>
+      <item> is_a </item>
+      <item> is_array </item>
+      <item> is_bool </item>
+      <item> is_callable </item>
+      <item> is_dir </item>
+      <item> is_double </item>
+      <item> is_executable </item>
+      <item> is_file </item>
+      <item> is_finite </item>
+      <item> is_float </item>
+      <item> is_infinite </item>
+      <item> is_int </item>
+      <item> is_integer </item>
+      <item> is_link </item>
+      <item> is_long </item>
+      <item> is_nan </item>
+      <item> is_null </item>
+      <item> is_numeric </item>
+      <item> is_object </item>
+      <item> is_readable </item>
+      <item> is_real </item>
+      <item> is_resource </item>
+      <item> is_scalar </item>
+      <item> is_string </item>
+      <item> is_subclass_of </item>
+      <item> is_uploaded_file </item>
+      <item> is_writable </item>
+      <item> is_writeable </item>
+      <item> isset </item>
+      <item> java_last_exception_clear </item>
+      <item> java_last_exception_get </item>
+      <item> jddayofweek </item>
+      <item> jdmonthname </item>
+      <item> jdtofrench </item>
+      <item> jdtogregorian </item>
+      <item> jdtojewish </item>
+      <item> jdtojulian </item>
+      <item> jdtounix </item>
+      <item> jewishtojd </item>
+      <item> join </item>
+      <item> jpeg2wbmp </item>
+      <item> juliantojd </item>
+      <item> key </item>
+      <item> key_exists </item>
+      <item> krsort </item>
+      <item> ksort </item>
+      <item> lcg_value </item>
+      <item> ldap_8859_to_t61 </item>
+      <item> ldap_add </item>
+      <item> ldap_bind </item>
+      <item> ldap_close </item>
+      <item> ldap_compare </item>
+      <item> ldap_connect </item>
+      <item> ldap_count_entries </item>
+      <item> ldap_delete </item>
+      <item> ldap_dn2ufn </item>
+      <item> ldap_err2str </item>
+      <item> ldap_errno </item>
+      <item> ldap_error </item>
+      <item> ldap_explode_dn </item>
+      <item> ldap_first_attribute </item>
+      <item> ldap_first_entry </item>
+      <item> ldap_first_reference </item>
+      <item> ldap_free_result </item>
+      <item> ldap_get_attributes </item>
+      <item> ldap_get_dn </item>
+      <item> ldap_get_entries </item>
+      <item> ldap_get_option </item>
+      <item> ldap_get_values </item>
+      <item> ldap_get_values_len </item>
+      <item> ldap_list </item>
+      <item> ldap_mod_add </item>
+      <item> ldap_mod_del </item>
+      <item> ldap_mod_replace </item>
+      <item> ldap_modify </item>
+      <item> ldap_next_attribute </item>
+      <item> ldap_next_entry </item>
+      <item> ldap_next_reference </item>
+      <item> ldap_parse_reference </item>
+      <item> ldap_parse_result </item>
+      <item> ldap_read </item>
+      <item> ldap_rename </item>
+      <item> ldap_search </item>
+      <item> ldap_set_option </item>
+      <item> ldap_set_rebind_proc </item>
+      <item> ldap_sort </item>
+      <item> ldap_start_tls </item>
+      <item> ldap_t61_to_8859 </item>
+      <item> ldap_unbind </item>
+      <item> leak </item>
+      <item> levenshtein </item>
+      <item> libxml_set_streams_context </item>
+      <item> link </item>
+      <item> linkinfo </item>
+      <item> list </item>
+      <item> localeconv </item>
+      <item> localtime </item>
+      <item> log </item>
+      <item> log10 </item>
+      <item> log1p </item>
+      <item> long2ip </item>
+      <item> lstat </item>
+      <item> ltrim </item>
+      <item> magic_quotes_runtime </item>
+      <item> mail </item>
+      <item> mailparse_determine_best_xfer_encoding </item>
+      <item> mailparse_msg_create </item>
+      <item> mailparse_msg_extract_part </item>
+      <item> mailparse_msg_extract_part_file </item>
+      <item> mailparse_msg_free </item>
+      <item> mailparse_msg_get_part </item>
+      <item> mailparse_msg_get_part_data </item>
+      <item> mailparse_msg_get_structure </item>
+      <item> mailparse_msg_parse </item>
+      <item> mailparse_msg_parse_file </item>
+      <item> mailparse_rfc822_parse_addresses </item>
+      <item> mailparse_stream_encode </item>
+      <item> mailparse_uudecode_all </item>
+      <item> max </item>
+      <item> mb_convert_case </item>
+      <item> mb_convert_encoding </item>
+      <item> mb_convert_kana </item>
+      <item> mb_convert_variables </item>
+      <item> mb_decode_mimeheader </item>
+      <item> mb_decode_numericentity </item>
+      <item> mb_detect_encoding </item>
+      <item> mb_detect_order </item>
+      <item> mb_encode_mimeheader </item>
+      <item> mb_encode_numericentity </item>
+      <item> mb_ereg </item>
+      <item> mb_ereg_match </item>
+      <item> mb_ereg_replace </item>
+      <item> mb_ereg_search </item>
+      <item> mb_ereg_search_getpos </item>
+      <item> mb_ereg_search_getregs </item>
+      <item> mb_ereg_search_init </item>
+      <item> mb_ereg_search_pos </item>
+      <item> mb_ereg_search_regs </item>
+      <item> mb_ereg_search_setpos </item>
+      <item> mb_eregi </item>
+      <item> mb_eregi_replace </item>
+      <item> mb_get_info </item>
+      <item> mb_http_input </item>
+      <item> mb_http_output </item>
+      <item> mb_internal_encoding </item>
+      <item> mb_language </item>
+      <item> mb_output_handler </item>
+      <item> mb_parse_str </item>
+      <item> mb_preferred_mime_name </item>
+      <item> mb_regex_encoding </item>
+      <item> mb_regex_set_options </item>
+      <item> mb_send_mail </item>
+      <item> mb_split </item>
+      <item> mb_strcut </item>
+      <item> mb_strimwidth </item>
+      <item> mb_strlen </item>
+      <item> mb_strpos </item>
+      <item> mb_strrpos </item>
+      <item> mb_strtolower </item>
+      <item> mb_strtoupper </item>
+      <item> mb_strwidth </item>
+      <item> mb_substitute_character </item>
+      <item> mb_substr </item>
+      <item> mcal_append_event </item>
+      <item> mcal_close </item>
+      <item> mcal_create_calendar </item>
+      <item> mcal_date_compare </item>
+      <item> mcal_date_valid </item>
+      <item> mcal_day_of_week </item>
+      <item> mcal_day_of_year </item>
+      <item> mcal_days_in_month </item>
+      <item> mcal_delete_calendar </item>
+      <item> mcal_delete_event </item>
+      <item> mcal_event_add_attribute </item>
+      <item> mcal_event_init </item>
+      <item> mcal_event_set_alarm </item>
+      <item> mcal_event_set_category </item>
+      <item> mcal_event_set_class </item>
+      <item> mcal_event_set_description </item>
+      <item> mcal_event_set_end </item>
+      <item> mcal_event_set_recur_daily </item>
+      <item> mcal_event_set_recur_monthly_mday </item>
+      <item> mcal_event_set_recur_monthly_wday </item>
+      <item> mcal_event_set_recur_none </item>
+      <item> mcal_event_set_recur_weekly </item>
+      <item> mcal_event_set_recur_yearly </item>
+      <item> mcal_event_set_start </item>
+      <item> mcal_event_set_title </item>
+      <item> mcal_expunge </item>
+      <item> mcal_fetch_current_stream_event </item>
+      <item> mcal_fetch_event </item>
+      <item> mcal_is_leap_year </item>
+      <item> mcal_list_alarms </item>
+      <item> mcal_list_events </item>
+      <item> mcal_next_recurrence </item>
+      <item> mcal_open </item>
+      <item> mcal_popen </item>
+      <item> mcal_rename_calendar </item>
+      <item> mcal_reopen </item>
+      <item> mcal_snooze </item>
+      <item> mcal_store_event </item>
+      <item> mcal_time_valid </item>
+      <item> mcal_week_of_year </item>
+      <item> mcrypt_cbc </item>
+      <item> mcrypt_cfb </item>
+      <item> mcrypt_create_iv </item>
+      <item> mcrypt_decrypt </item>
+      <item> mcrypt_ecb </item>
+      <item> mcrypt_enc_get_algorithms_name </item>
+      <item> mcrypt_enc_get_block_size </item>
+      <item> mcrypt_enc_get_iv_size </item>
+      <item> mcrypt_enc_get_key_size </item>
+      <item> mcrypt_enc_get_modes_name </item>
+      <item> mcrypt_enc_get_supported_key_sizes </item>
+      <item> mcrypt_enc_is_block_algorithm </item>
+      <item> mcrypt_enc_is_block_algorithm_mode </item>
+      <item> mcrypt_enc_is_block_mode </item>
+      <item> mcrypt_enc_self_test </item>
+      <item> mcrypt_encrypt </item>
+      <item> mcrypt_generic </item>
+      <item> mcrypt_generic_deinit </item>
+      <item> mcrypt_generic_end </item>
+      <item> mcrypt_generic_init </item>
+      <item> mcrypt_get_block_size </item>
+      <item> mcrypt_get_cipher_name </item>
+      <item> mcrypt_get_iv_size </item>
+      <item> mcrypt_get_key_size </item>
+      <item> mcrypt_list_algorithms </item>
+      <item> mcrypt_list_modes </item>
+      <item> mcrypt_module_close </item>
+      <item> mcrypt_module_get_algo_block_size </item>
+      <item> mcrypt_module_get_algo_key_size </item>
+      <item> mcrypt_module_get_supported_key_sizes </item>
+      <item> mcrypt_module_is_block_algorithm </item>
+      <item> mcrypt_module_is_block_algorithm_mode </item>
+      <item> mcrypt_module_is_block_mode </item>
+      <item> mcrypt_module_open </item>
+      <item> mcrypt_module_self_test </item>
+      <item> mcrypt_ofb </item>
+      <item> md5 </item>
+      <item> md5_file </item>
+      <item> mdecrypt_generic </item>
+      <item> memory_get_usage </item>
+      <item> metaphone </item>
+      <item> method_exists </item>
+      <item> mhash </item>
+      <item> mhash_count </item>
+      <item> mhash_get_block_size </item>
+      <item> mhash_get_hash_name </item>
+      <item> mhash_keygen_s2k </item>
+      <item> microtime </item>
+      <item> min </item>
+      <item> ming_setcubicthreshold </item>
+      <item> ming_setscale </item>
+      <item> ming_useswfversion </item>
+      <item> mkdir </item>
+      <item> mktime </item>
+      <item> money_format </item>
+      <item> move_uploaded_file </item>
+      <item> msg_get_queue </item>
+      <item> msg_receive </item>
+      <item> msg_remove_queue </item>
+      <item> msg_send </item>
+      <item> msg_set_queue </item>
+      <item> msg_stat_queue </item>
+      <item> msession_connect </item>
+      <item> msession_count </item>
+      <item> msession_create </item>
+      <item> msession_destroy </item>
+      <item> msession_disconnect </item>
+      <item> msession_find </item>
+      <item> msession_get </item>
+      <item> msession_get_array </item>
+      <item> msession_getdata </item>
+      <item> msession_inc </item>
+      <item> msession_list </item>
+      <item> msession_listvar </item>
+      <item> msession_lock </item>
+      <item> msession_plugin </item>
+      <item> msession_randstr </item>
+      <item> msession_set </item>
+      <item> msession_set_array </item>
+      <item> msession_setdata </item>
+      <item> msession_timeout </item>
+      <item> msession_uniq </item>
+      <item> msession_unlock </item>
+      <item> msql </item>
+      <item> msql_affected_rows </item>
+      <item> msql_close </item>
+      <item> msql_connect </item>
+      <item> msql_create_db </item>
+      <item> msql_createdb </item>
+      <item> msql_data_seek </item>
+      <item> msql_dbname </item>
+      <item> msql_drop_db </item>
+      <item> msql_dropdb </item>
+      <item> msql_error </item>
+      <item> msql_fetch_array </item>
+      <item> msql_fetch_field </item>
+      <item> msql_fetch_object </item>
+      <item> msql_fetch_row </item>
+      <item> msql_field_seek </item>
+      <item> msql_fieldflags </item>
+      <item> msql_fieldlen </item>
+      <item> msql_fieldname </item>
+      <item> msql_fieldtable </item>
+      <item> msql_fieldtype </item>
+      <item> msql_free_result </item>
+      <item> msql_freeresult </item>
+      <item> msql_list_dbs </item>
+      <item> msql_list_fields </item>
+      <item> msql_list_tables </item>
+      <item> msql_listdbs </item>
+      <item> msql_listfields </item>
+      <item> msql_listtables </item>
+      <item> msql_num_fields </item>
+      <item> msql_num_rows </item>
+      <item> msql_numfields </item>
+      <item> msql_numrows </item>
+      <item> msql_pconnect </item>
+      <item> msql_query </item>
+      <item> msql_regcase </item>
+      <item> msql_result </item>
+      <item> msql_select_db </item>
+      <item> msql_selectdb </item>
+      <item> msql_tablename </item>
+      <item> mssql_bind </item>
+      <item> mssql_close </item>
+      <item> mssql_connect </item>
+      <item> mssql_data_seek </item>
+      <item> mssql_execute </item>
+      <item> mssql_fetch_array </item>
+      <item> mssql_fetch_assoc </item>
+      <item> mssql_fetch_batch </item>
+      <item> mssql_fetch_field </item>
+      <item> mssql_fetch_object </item>
+      <item> mssql_fetch_row </item>
+      <item> mssql_field_length </item>
+      <item> mssql_field_name </item>
+      <item> mssql_field_seek </item>
+      <item> mssql_field_type </item>
+      <item> mssql_free_result </item>
+      <item> mssql_get_last_message </item>
+      <item> mssql_guid_string </item>
+      <item> mssql_init </item>
+      <item> mssql_min_error_severity </item>
+      <item> mssql_min_message_severity </item>
+      <item> mssql_next_result </item>
+      <item> mssql_num_fields </item>
+      <item> mssql_num_rows </item>
+      <item> mssql_pconnect </item>
+      <item> mssql_query </item>
+      <item> mssql_result </item>
+      <item> mssql_rows_affected </item>
+      <item> mssql_select_db </item>
+      <item> mt_getrandmax </item>
+      <item> mt_rand </item>
+      <item> mt_srand </item>
+      <item> muscat_close </item>
+      <item> muscat_get </item>
+      <item> muscat_give </item>
+      <item> muscat_setup </item>
+      <item> muscat_setup_net </item>
+      <item> mysql </item>
+      <item> mysql_affected_rows </item>
+      <item> mysql_client_encoding </item>
+      <item> mysql_change_user </item>
+      <item> mysql_character_set_name </item>
+      <item> mysql_close </item>
+      <item> mysql_connect </item>
+      <item> mysql_create_db </item>
+      <item> mysql_data_seek </item>
+      <item> mysql_db_name </item>
+      <item> mysql_db_query </item>
+      <item> mysql_dbname </item>
+      <item> mysql_drop_db </item>
+      <item> mysql_errno </item>
+      <item> mysql_error </item>
+      <item> mysql_escape_string </item>
+      <item> mysql_fetch_array </item>
+      <item> mysql_fetch_assoc </item>
+      <item> mysql_fetch_field </item>
+      <item> mysql_fetch_lengths </item>
+      <item> mysql_fetch_object </item>
+      <item> mysql_fetch_row </item>
+      <item> mysql_field_flags </item>
+      <item> mysql_field_len </item>
+      <item> mysql_field_name </item>
+      <item> mysql_field_seek </item>
+      <item> mysql_field_table </item>
+      <item> mysql_field_type </item>
+      <item> mysql_fieldflags </item>
+      <item> mysql_fieldlen </item>
+      <item> mysql_fieldname </item>
+      <item> mysql_fieldtable </item>
+      <item> mysql_fieldtype </item>
+      <item> mysql_free_result </item>
+      <item> mysql_freeresult </item>
+      <item> mysql_get_client_info </item>
+      <item> mysql_get_host_info </item>
+      <item> mysql_get_proto_info </item>
+      <item> mysql_get_server_info </item>
+      <item> mysql_info </item>
+      <item> mysql_insert_id </item>
+      <item> mysql_list_dbs </item>
+      <item> mysql_list_fields </item>
+      <item> mysql_list_processes </item>
+      <item> mysql_list_tables </item>
+      <item> mysql_listdbs </item>
+      <item> mysql_listfields </item>
+      <item> mysql_listtables </item>
+      <item> mysql_num_fields </item>
+      <item> mysql_num_rows </item>
+      <item> mysql_numfields </item>
+      <item> mysql_numrows </item>
+      <item> mysql_pconnect </item>
+      <item> mysql_ping </item>
+      <item> mysql_query </item>
+      <item> mysql_real_escape_string </item>
+      <item> mysql_result </item>
+      <item> mysql_select_db </item>
+      <item> mysql_selectdb </item>
+      <item> mysql_stat </item>
+      <item> mysql_table_name </item>
+      <item> mysql_tablename </item>
+      <item> mysql_thread_id </item>
+      <item> mysql_unbuffered_query </item>
+      <item> mysqli_affected_rows </item>
+      <item> mysqli_autocommit </item>
+      <item> mysqli_bind_param </item>
+      <item> mysqli_bind_result </item>
+      <item> mysqli_change_user </item>
+      <item> mysqli_character_set_name </item>
+      <item> mysqli_client_encoding </item>
+      <item> mysqli_close </item>
+      <item> mysqli_commit </item>
+      <item> mysqli_connect </item>
+      <item> mysqli_connect_errno </item>
+      <item> mysqli_connect_error </item>
+      <item> mysqli_data_seek </item>
+      <item> mysqli_debug </item>
+      <item> mysqli_disable_reads_from_master </item>
+      <item> mysqli_disable_rpl_parse </item>
+      <item> mysqli_dump_debug_info </item>
+      <item> mysqli_enable_reads_from_master </item>
+      <item> mysqli_enable_rpl_parse </item>
+      <item> mysqli_errno </item>
+      <item> mysqli_error </item>
+      <item> mysqli_escape_string </item>
+      <item> mysqli_execute </item>
+      <item> mysqli_fetch </item>
+      <item> mysqli_fetch_array </item>
+      <item> mysqli_fetch_assoc </item>
+      <item> mysqli_fetch_field </item>
+      <item> mysqli_fetch_field_direct </item>
+      <item> mysqli_fetch_fields </item>
+      <item> mysqli_fetch_lengths </item>
+      <item> mysqli_fetch_object </item>
+      <item> mysqli_fetch_row </item>
+      <item> mysqli_field_count </item>
+      <item> mysqli_field_seek </item>
+      <item> mysqli_field_tell </item>
+      <item> mysqli_free_result </item>
+      <item> mysqli_get_client_info </item>
+      <item> mysqli_get_client_version </item>
+      <item> mysqli_get_host_info </item>
+      <item> mysqli_get_metadata </item>
+      <item> mysqli_get_proto_info </item>
+      <item> mysqli_get_server_info </item>
+      <item> mysqli_get_server_version </item>
+      <item> mysqli_info </item>
+      <item> mysqli_init </item>
+      <item> mysqli_insert_id </item>
+      <item> mysqli_kill </item>
+      <item> mysqli_master_query </item>
+      <item> mysqli_more_results </item>
+      <item> mysqli_multi_query </item>
+      <item> mysqli_next_result </item>
+      <item> mysqli_num_fields </item>
+      <item> mysqli_num_rows </item>
+      <item> mysqli_options </item>
+      <item> mysqli_param_count </item>
+      <item> mysqli_ping </item>
+      <item> mysqli_prepare </item>
+      <item> mysqli_query </item>
+      <item> mysqli_real_connect </item>
+      <item> mysqli_real_escape_string </item>
+      <item> mysqli_real_query </item>
+      <item> mysqli_report </item>
+      <item> mysqli_rollback </item>
+      <item> mysqli_rpl_parse_enabled </item>
+      <item> mysqli_rpl_probe </item>
+      <item> mysqli_rpl_query_type </item>
+      <item> mysqli_select_db </item>
+      <item> mysqli_send_long_data </item>
+      <item> mysqli_send_query </item>
+      <item> mysqli_set_local_infile_default </item>
+      <item> mysqli_set_local_infile_handler </item>
+      <item> mysqli_set_opt </item>
+      <item> mysqli_slave_query </item>
+      <item> mysqli_sqlstate </item>
+      <item> mysqli_ssl_set </item>
+      <item> mysqli_stat </item>
+      <item> mysqli_stmt_affected_rows </item>
+      <item> mysqli_stmt_attr_get </item>
+      <item> mysqli_stmt_attr_set </item>
+      <item> mysqli_stmt_bind_param </item>
+      <item> mysqli_stmt_bind_result </item>
+      <item> mysqli_stmt_close </item>
+      <item> mysqli_stmt_data_seek </item>
+      <item> mysqli_stmt_errno </item>
+      <item> mysqli_stmt_error </item>
+      <item> mysqli_stmt_execute </item>
+      <item> mysqli_stmt_fetch </item>
+      <item> mysqli_stmt_field_count </item>
+      <item> mysqli_stmt_free_result </item>
+      <item> mysqli_stmt_init </item>
+      <item> mysqli_stmt_insert_id </item>
+      <item> mysqli_stmt_num_rows </item>
+      <item> mysqli_stmt_param_count </item>
+      <item> mysqli_stmt_prepare </item>
+      <item> mysqli_stmt_reset </item>
+      <item> mysqli_stmt_result_metadata </item>
+      <item> mysqli_stmt_send_long_data </item>
+      <item> mysqli_stmt_sqlstate </item>
+      <item> mysqli_stmt_store_result </item>
+      <item> mysqli_store_result </item>
+      <item> mysqli_thread_id </item>
+      <item> mysqli_thread_safe </item>
+      <item> mysqli_use_result </item>
+      <item> mysqli_warning_count </item>
+      <item> natcasesort </item>
+      <item> natsort </item>
+      <item> ncurses_addch </item>
+      <item> ncurses_addchnstr </item>
+      <item> ncurses_addchstr </item>
+      <item> ncurses_addnstr </item>
+      <item> ncurses_addstr </item>
+      <item> ncurses_assume_default_colors </item>
+      <item> ncurses_attroff </item>
+      <item> ncurses_attron </item>
+      <item> ncurses_attrset </item>
+      <item> ncurses_baudrate </item>
+      <item> ncurses_beep </item>
+      <item> ncurses_bkgd </item>
+      <item> ncurses_bkgdset </item>
+      <item> ncurses_border </item>
+      <item> ncurses_bottom_panel </item>
+      <item> ncurses_can_change_color </item>
+      <item> ncurses_cbreak </item>
+      <item> ncurses_clear </item>
+      <item> ncurses_clrtobot </item>
+      <item> ncurses_clrtoeol </item>
+      <item> ncurses_color_content </item>
+      <item> ncurses_color_set </item>
+      <item> ncurses_curs_set </item>
+      <item> ncurses_def_prog_mode </item>
+      <item> ncurses_def_shell_mode </item>
+      <item> ncurses_define_key </item>
+      <item> ncurses_del_panel </item>
+      <item> ncurses_delay_output </item>
+      <item> ncurses_delch </item>
+      <item> ncurses_deleteln </item>
+      <item> ncurses_delwin </item>
+      <item> ncurses_doupdate </item>
+      <item> ncurses_echo </item>
+      <item> ncurses_echochar </item>
+      <item> ncurses_end </item>
+      <item> ncurses_erase </item>
+      <item> ncurses_erasechar </item>
+      <item> ncurses_filter </item>
+      <item> ncurses_flash </item>
+      <item> ncurses_flushinp </item>
+      <item> ncurses_getch </item>
+      <item> ncurses_getmaxyx </item>
+      <item> ncurses_getmouse </item>
+      <item> ncurses_getyx </item>
+      <item> ncurses_halfdelay </item>
+      <item> ncurses_has_colors </item>
+      <item> ncurses_has_ic </item>
+      <item> ncurses_has_il </item>
+      <item> ncurses_has_key </item>
+      <item> ncurses_hide_panel </item>
+      <item> ncurses_hline </item>
+      <item> ncurses_inch </item>
+      <item> ncurses_init </item>
+      <item> ncurses_init_color </item>
+      <item> ncurses_init_pair </item>
+      <item> ncurses_insch </item>
+      <item> ncurses_insdelln </item>
+      <item> ncurses_insertln </item>
+      <item> ncurses_insstr </item>
+      <item> ncurses_instr </item>
+      <item> ncurses_isendwin </item>
+      <item> ncurses_keyok </item>
+      <item> ncurses_keypad </item>
+      <item> ncurses_killchar </item>
+      <item> ncurses_longname </item>
+      <item> ncurses_meta </item>
+      <item> ncurses_mouse_trafo </item>
+      <item> ncurses_mouseinterval </item>
+      <item> ncurses_mousemask </item>
+      <item> ncurses_move </item>
+      <item> ncurses_move_panel </item>
+      <item> ncurses_mvaddch </item>
+      <item> ncurses_mvaddchnstr </item>
+      <item> ncurses_mvaddchstr </item>
+      <item> ncurses_mvaddnstr </item>
+      <item> ncurses_mvaddstr </item>
+      <item> ncurses_mvcur </item>
+      <item> ncurses_mvdelch </item>
+      <item> ncurses_mvgetch </item>
+      <item> ncurses_mvhline </item>
+      <item> ncurses_mvinch </item>
+      <item> ncurses_mvvline </item>
+      <item> ncurses_mvwaddstr </item>
+      <item> ncurses_napms </item>
+      <item> ncurses_new_panel </item>
+      <item> ncurses_newpad </item>
+      <item> ncurses_newwin </item>
+      <item> ncurses_nl </item>
+      <item> ncurses_nocbreak </item>
+      <item> ncurses_noecho </item>
+      <item> ncurses_nonl </item>
+      <item> ncurses_noqiflush </item>
+      <item> ncurses_noraw </item>
+      <item> ncurses_pair_content </item>
+      <item> ncurses_panel_above </item>
+      <item> ncurses_panel_below </item>
+      <item> ncurses_panel_window </item>
+      <item> ncurses_pnoutrefresh </item>
+      <item> ncurses_prefresh </item>
+      <item> ncurses_putp </item>
+      <item> ncurses_qiflush </item>
+      <item> ncurses_raw </item>
+      <item> ncurses_refresh </item>
+      <item> ncurses_replace_panel </item>
+      <item> ncurses_reset_prog_mode </item>
+      <item> ncurses_reset_shell_mode </item>
+      <item> ncurses_resetty </item>
+      <item> ncurses_savetty </item>
+      <item> ncurses_scr_dump </item>
+      <item> ncurses_scr_init </item>
+      <item> ncurses_scr_restore </item>
+      <item> ncurses_scr_set </item>
+      <item> ncurses_scrl </item>
+      <item> ncurses_show_panel </item>
+      <item> ncurses_slk_attr </item>
+      <item> ncurses_slk_attroff </item>
+      <item> ncurses_slk_attron </item>
+      <item> ncurses_slk_attrset </item>
+      <item> ncurses_slk_clear </item>
+      <item> ncurses_slk_color </item>
+      <item> ncurses_slk_init </item>
+      <item> ncurses_slk_noutrefresh </item>
+      <item> ncurses_slk_refresh </item>
+      <item> ncurses_slk_restore </item>
+      <item> ncurses_slk_set </item>
+      <item> ncurses_slk_touch </item>
+      <item> ncurses_standend </item>
+      <item> ncurses_standout </item>
+      <item> ncurses_start_color </item>
+      <item> ncurses_termattrs </item>
+      <item> ncurses_termname </item>
+      <item> ncurses_timeout </item>
+      <item> ncurses_top_panel </item>
+      <item> ncurses_typeahead </item>
+      <item> ncurses_ungetch </item>
+      <item> ncurses_ungetmouse </item>
+      <item> ncurses_update_panels </item>
+      <item> ncurses_use_default_colors </item>
+      <item> ncurses_use_env </item>
+      <item> ncurses_use_extended_names </item>
+      <item> ncurses_vidattr </item>
+      <item> ncurses_vline </item>
+      <item> ncurses_waddch </item>
+      <item> ncurses_waddstr </item>
+      <item> ncurses_wattroff </item>
+      <item> ncurses_wattron </item>
+      <item> ncurses_wattrset </item>
+      <item> ncurses_wborder </item>
+      <item> ncurses_wclear </item>
+      <item> ncurses_wcolor_set </item>
+      <item> ncurses_werase </item>
+      <item> ncurses_wgetch </item>
+      <item> ncurses_whline </item>
+      <item> ncurses_wmouse_trafo </item>
+      <item> ncurses_wmove </item>
+      <item> ncurses_wnoutrefresh </item>
+      <item> ncurses_wrefresh </item>
+      <item> ncurses_wstandend </item>
+      <item> ncurses_wstandout </item>
+      <item> ncurses_wvline </item>
+      <item> next </item>
+      <item> ngettext </item>
+      <item> nl2br </item>
+      <item> nl_langinfo </item>
+      <item> notes_body </item>
+      <item> notes_copy_db </item>
+      <item> notes_create_db </item>
+      <item> notes_create_note </item>
+      <item> notes_drop_db </item>
+      <item> notes_find_note </item>
+      <item> notes_header_info </item>
+      <item> notes_list_msgs </item>
+      <item> notes_mark_read </item>
+      <item> notes_mark_unread </item>
+      <item> notes_nav_create </item>
+      <item> notes_search </item>
+      <item> notes_unread </item>
+      <item> notes_version </item>
+      <item> number_format </item>
+      <item> ob_clean </item>
+      <item> ob_end_clean </item>
+      <item> ob_end_flush </item>
+      <item> ob_flush </item>
+      <item> ob_get_clean </item>
+      <item> ob_get_contents </item>
+      <item> ob_get_flush </item>
+      <item> ob_get_length </item>
+      <item> ob_get_level </item>
+      <item> ob_get_status </item>
+      <item> ob_gzhandler </item>
+      <item> ob_iconv_handler </item>
+      <item> ob_implicit_flush </item>
+      <item> ob_list_handlers </item>
+      <item> ob_start </item>
+      <item> ocibindbyname </item>
+      <item> ocicancel </item>
+      <item> ocicollappend </item>
+      <item> ocicollassign </item>
+      <item> ocicollassignelem </item>
+      <item> ocicollgetelem </item>
+      <item> ocicollmax </item>
+      <item> ocicollsize </item>
+      <item> ocicolltrim </item>
+      <item> ocicolumnisnull </item>
+      <item> ocicolumnname </item>
+      <item> ocicolumnprecision </item>
+      <item> ocicolumnscale </item>
+      <item> ocicolumnsize </item>
+      <item> ocicolumntype </item>
+      <item> ocicolumntyperaw </item>
+      <item> ocicommit </item>
+      <item> ocidefinebyname </item>
+      <item> ocierror </item>
+      <item> ociexecute </item>
+      <item> ocifetch </item>
+      <item> ocifetchinto </item>
+      <item> ocifetchstatement </item>
+      <item> ocifreecollection </item>
+      <item> ocifreecursor </item>
+      <item> ocifreedesc </item>
+      <item> ocifreestatement </item>
+      <item> ociinternaldebug </item>
+      <item> ociloadlob </item>
+      <item> ocilogoff </item>
+      <item> ocilogon </item>
+      <item> ocinewcollection </item>
+      <item> ocinewcursor </item>
+      <item> ocinewdescriptor </item>
+      <item> ocinlogon </item>
+      <item> ocinumcols </item>
+      <item> ociparse </item>
+      <item> ociplogon </item>
+      <item> ociresult </item>
+      <item> ocirollback </item>
+      <item> ocirowcount </item>
+      <item> ocisavelob </item>
+      <item> ocisavelobfile </item>
+      <item> ociserverversion </item>
+      <item> ocisetprefetch </item>
+      <item> ocistatementtype </item>
+      <item> ociwritelobtofile </item>
+      <item> octdec </item>
+      <item> odbc_autocommit </item>
+      <item> odbc_binmode </item>
+      <item> odbc_close </item>
+      <item> odbc_close_all </item>
+      <item> odbc_columnprivileges </item>
+      <item> odbc_columns </item>
+      <item> odbc_commit </item>
+      <item> odbc_connect </item>
+      <item> odbc_cursor </item>
+      <item> odbc_data_source </item>
+      <item> odbc_do </item>
+      <item> odbc_error </item>
+      <item> odbc_errormsg </item>
+      <item> odbc_exec </item>
+      <item> odbc_execute </item>
+      <item> odbc_fetch_array </item>
+      <item> odbc_fetch_into </item>
+      <item> odbc_fetch_object </item>
+      <item> odbc_fetch_row </item>
+      <item> odbc_field_len </item>
+      <item> odbc_field_name </item>
+      <item> odbc_field_num </item>
+      <item> odbc_field_precision </item>
+      <item> odbc_field_scale </item>
+      <item> odbc_field_type </item>
+      <item> odbc_foreignkeys </item>
+      <item> odbc_free_result </item>
+      <item> odbc_gettypeinfo </item>
+      <item> odbc_longreadlen </item>
+      <item> odbc_next_result </item>
+      <item> odbc_num_fields </item>
+      <item> odbc_num_rows </item>
+      <item> odbc_pconnect </item>
+      <item> odbc_prepare </item>
+      <item> odbc_primarykeys </item>
+      <item> odbc_procedurecolumns </item>
+      <item> odbc_procedures </item>
+      <item> odbc_result </item>
+      <item> odbc_result_all </item>
+      <item> odbc_rollback </item>
+      <item> odbc_setoption </item>
+      <item> odbc_specialcolumns </item>
+      <item> odbc_statistics </item>
+      <item> odbc_tableprivileges </item>
+      <item> odbc_tables </item>
+      <item> opendir </item>
+      <item> openlog </item>
+      <item> openssl_csr_export </item>
+      <item> openssl_csr_export_to_file </item>
+      <item> openssl_csr_new </item>
+      <item> openssl_csr_sign </item>
+      <item> openssl_error_string </item>
+      <item> openssl_free_key </item>
+      <item> openssl_get_privatekey </item>
+      <item> openssl_get_publickey </item>
+      <item> openssl_open </item>
+      <item> openssl_pkcs7_decrypt </item>
+      <item> openssl_pkcs7_encrypt </item>
+      <item> openssl_pkcs7_sign </item>
+      <item> openssl_pkcs7_verify </item>
+      <item> openssl_pkey_export </item>
+      <item> openssl_pkey_export_to_file </item>
+      <item> openssl_pkey_free </item>
+      <item> openssl_pkey_get_private </item>
+      <item> openssl_pkey_get_public </item>
+      <item> openssl_pkey_new </item>
+      <item> openssl_private_decrypt </item>
+      <item> openssl_private_encrypt </item>
+      <item> openssl_public_decrypt </item>
+      <item> openssl_public_encrypt </item>
+      <item> openssl_seal </item>
+      <item> openssl_sign </item>
+      <item> openssl_verify </item>
+      <item> openssl_x509_check_private_key </item>
+      <item> openssl_x509_checkpurpose </item>
+      <item> openssl_x509_export </item>
+      <item> openssl_x509_export_to_file </item>
+      <item> openssl_x509_free </item>
+      <item> openssl_x509_parse </item>
+      <item> openssl_x509_read </item>
+      <item> ora_bind </item>
+      <item> ora_close </item>
+      <item> ora_columnname </item>
+      <item> ora_columnsize </item>
+      <item> ora_columntype </item>
+      <item> ora_commit </item>
+      <item> ora_commitoff </item>
+      <item> ora_commiton </item>
+      <item> ora_do </item>
+      <item> ora_error </item>
+      <item> ora_errorcode </item>
+      <item> ora_exec </item>
+      <item> ora_fetch </item>
+      <item> ora_fetch_into </item>
+      <item> ora_getcolumn </item>
+      <item> ora_logoff </item>
+      <item> ora_logon </item>
+      <item> ora_numcols </item>
+      <item> ora_numrows </item>
+      <item> ora_open </item>
+      <item> ora_parse </item>
+      <item> ora_plogon </item>
+      <item> ora_rollback </item>
+      <item> ord </item>
+      <item> output_add_rewrite_var </item>
+      <item> output_reset_rewrite_vars </item>
+      <item> overload </item>
+      <item> ovrimos_close </item>
+      <item> ovrimos_commit </item>
+      <item> ovrimos_connect </item>
+      <item> ovrimos_cursor </item>
+      <item> ovrimos_exec </item>
+      <item> ovrimos_execute </item>
+      <item> ovrimos_fetch_into </item>
+      <item> ovrimos_fetch_row </item>
+      <item> ovrimos_field_len </item>
+      <item> ovrimos_field_name </item>
+      <item> ovrimos_field_num </item>
+      <item> ovrimos_field_type </item>
+      <item> ovrimos_free_result </item>
+      <item> ovrimos_longreadlen </item>
+      <item> ovrimos_num_fields </item>
+      <item> ovrimos_num_rows </item>
+      <item> ovrimos_prepare </item>
+      <item> ovrimos_result </item>
+      <item> ovrimos_result_all </item>
+      <item> ovrimos_rollback </item>
+      <item> pack </item>
+      <item> parse_ini_file </item>
+      <item> parse_str </item>
+      <item> parse_url </item>
+      <item> passthru </item>
+      <item> pathinfo </item>
+      <item> pclose </item>
+      <item> pcntl_alarm </item>
+      <item> pcntl_exec </item>
+      <item> pcntl_fork </item>
+      <item> pcntl_getpriority </item>
+      <item> pcntl_setpriority </item>
+      <item> pcntl_signal </item>
+      <item> pcntl_wait </item>
+      <item> pcntl_waitpid </item>
+      <item> pcntl_wexitstatus </item>
+      <item> pcntl_wifexited </item>
+      <item> pcntl_wifsignaled </item>
+      <item> pcntl_wifstopped </item>
+      <item> pcntl_wstopsig </item>
+      <item> pcntl_wtermsig </item>
+      <item> pdf_add_annotation </item>
+      <item> pdf_add_bookmark </item>
+      <item> pdf_add_launchlink </item>
+      <item> pdf_add_locallink </item>
+      <item> pdf_add_note </item>
+      <item> pdf_add_outline </item>
+      <item> pdf_add_pdflink </item>
+      <item> pdf_add_thumbnail </item>
+      <item> pdf_add_weblink </item>
+      <item> pdf_arc </item>
+      <item> pdf_arcn </item>
+      <item> pdf_attach_file </item>
+      <item> pdf_begin_page </item>
+      <item> pdf_begin_pattern </item>
+      <item> pdf_begin_template </item>
+      <item> pdf_circle </item>
+      <item> pdf_clip </item>
+      <item> pdf_close </item>
+      <item> pdf_close_image </item>
+      <item> pdf_close_pdi </item>
+      <item> pdf_close_pdi_page </item>
+      <item> pdf_closepath </item>
+      <item> pdf_closepath_fill_stroke </item>
+      <item> pdf_closepath_stroke </item>
+      <item> pdf_concat </item>
+      <item> pdf_continue_text </item>
+      <item> pdf_curveto </item>
+      <item> pdf_delete </item>
+      <item> pdf_end_page </item>
+      <item> pdf_end_pattern </item>
+      <item> pdf_end_template </item>
+      <item> pdf_endpath </item>
+      <item> pdf_fill </item>
+      <item> pdf_fill_stroke </item>
+      <item> pdf_findfont </item>
+      <item> pdf_get_buffer </item>
+      <item> pdf_get_font </item>
+      <item> pdf_get_fontname </item>
+      <item> pdf_get_fontsize </item>
+      <item> pdf_get_image_height </item>
+      <item> pdf_get_image_width </item>
+      <item> pdf_get_majorversion </item>
+      <item> pdf_get_minorversion </item>
+      <item> pdf_get_parameter </item>
+      <item> pdf_get_pdi_parameter </item>
+      <item> pdf_get_pdi_value </item>
+      <item> pdf_get_value </item>
+      <item> pdf_initgraphics </item>
+      <item> pdf_lineto </item>
+      <item> pdf_makespotcolor </item>
+      <item> pdf_moveto </item>
+      <item> pdf_new </item>
+      <item> pdf_open </item>
+      <item> pdf_open_ccitt </item>
+      <item> pdf_open_file </item>
+      <item> pdf_open_gif </item>
+      <item> pdf_open_image </item>
+      <item> pdf_open_image_file </item>
+      <item> pdf_open_jpeg </item>
+      <item> pdf_open_memory_image </item>
+      <item> pdf_open_pdi </item>
+      <item> pdf_open_pdi_page </item>
+      <item> pdf_open_png </item>
+      <item> pdf_open_tiff </item>
+      <item> pdf_place_image </item>
+      <item> pdf_place_pdi_page </item>
+      <item> pdf_rect </item>
+      <item> pdf_restore </item>
+      <item> pdf_rotate </item>
+      <item> pdf_save </item>
+      <item> pdf_scale </item>
+      <item> pdf_set_border_color </item>
+      <item> pdf_set_border_dash </item>
+      <item> pdf_set_border_style </item>
+      <item> pdf_set_char_spacing </item>
+      <item> pdf_set_duration </item>
+      <item> pdf_set_font </item>
+      <item> pdf_set_horiz_scaling </item>
+      <item> pdf_set_info </item>
+      <item> pdf_set_info_author </item>
+      <item> pdf_set_info_creator </item>
+      <item> pdf_set_info_keywords </item>
+      <item> pdf_set_info_subject </item>
+      <item> pdf_set_info_title </item>
+      <item> pdf_set_leading </item>
+      <item> pdf_set_parameter </item>
+      <item> pdf_set_text_pos </item>
+      <item> pdf_set_text_rendering </item>
+      <item> pdf_set_text_rise </item>
+      <item> pdf_set_transition </item>
+      <item> pdf_set_value </item>
+      <item> pdf_set_word_spacing </item>
+      <item> pdf_setcolor </item>
+      <item> pdf_setdash </item>
+      <item> pdf_setflat </item>
+      <item> pdf_setfont </item>
+      <item> pdf_setgray </item>
+      <item> pdf_setgray_fill </item>
+      <item> pdf_setgray_stroke </item>
+      <item> pdf_setlinecap </item>
+      <item> pdf_setlinejoin </item>
+      <item> pdf_setlinewidth </item>
+      <item> pdf_setmatrix </item>
+      <item> pdf_setmiterlimit </item>
+      <item> pdf_setpolydash </item>
+      <item> pdf_setrgbcolor </item>
+      <item> pdf_setrgbcolor_fill </item>
+      <item> pdf_setrgbcolor_stroke </item>
+      <item> pdf_show </item>
+      <item> pdf_show_boxed </item>
+      <item> pdf_show_xy </item>
+      <item> pdf_skew </item>
+      <item> pdf_stringwidth </item>
+      <item> pdf_stroke </item>
+      <item> pdf_translate </item>
+      <item> pfpro_cleanup </item>
+      <item> pfpro_init </item>
+      <item> pfpro_process </item>
+      <item> pfpro_process_raw </item>
+      <item> pfpro_version </item>
+      <item> pfsockopen </item>
+      <item> pg_affected_rows </item>
+      <item> pg_cancel_query </item>
+      <item> pg_client_encoding </item>
+      <item> pg_clientencoding </item>
+      <item> pg_close </item>
+      <item> pg_cmdtuples </item>
+      <item> pg_connect </item>
+      <item> pg_connection_busy </item>
+      <item> pg_connection_reset </item>
+      <item> pg_connection_status </item>
+      <item> pg_convert </item>
+      <item> pg_copy_from </item>
+      <item> pg_copy_to </item>
+      <item> pg_dbname </item>
+      <item> pg_delete </item>
+      <item> pg_end_copy </item>
+      <item> pg_errormessage </item>
+      <item> pg_escape_bytea </item>
+      <item> pg_escape_string </item>
+      <item> pg_exec </item>
+      <item> pg_fetch_all </item>
+      <item> pg_fetch_array </item>
+      <item> pg_fetch_assoc </item>
+      <item> pg_fetch_object </item>
+      <item> pg_fetch_result </item>
+      <item> pg_fetch_row </item>
+      <item> pg_field_is_null </item>
+      <item> pg_field_name </item>
+      <item> pg_field_num </item>
+      <item> pg_field_prtlen </item>
+      <item> pg_field_size </item>
+      <item> pg_field_type </item>
+      <item> pg_fieldisnull </item>
+      <item> pg_fieldname </item>
+      <item> pg_fieldnum </item>
+      <item> pg_fieldprtlen </item>
+      <item> pg_fieldsize </item>
+      <item> pg_fieldtype </item>
+      <item> pg_free_result </item>
+      <item> pg_freeresult </item>
+      <item> pg_get_notify </item>
+      <item> pg_get_pid </item>
+      <item> pg_get_result </item>
+      <item> pg_getlastoid </item>
+      <item> pg_host </item>
+      <item> pg_insert </item>
+      <item> pg_last_error </item>
+      <item> pg_last_notice </item>
+      <item> pg_last_oid </item>
+      <item> pg_lo_close </item>
+      <item> pg_lo_create </item>
+      <item> pg_lo_export </item>
+      <item> pg_lo_import </item>
+      <item> pg_lo_open </item>
+      <item> pg_lo_read </item>
+      <item> pg_lo_read_all </item>
+      <item> pg_lo_seek </item>
+      <item> pg_lo_tell </item>
+      <item> pg_lo_unlink </item>
+      <item> pg_lo_write </item>
+      <item> pg_loclose </item>
+      <item> pg_locreate </item>
+      <item> pg_loexport </item>
+      <item> pg_loimport </item>
+      <item> pg_loopen </item>
+      <item> pg_loread </item>
+      <item> pg_loreadall </item>
+      <item> pg_lounlink </item>
+      <item> pg_lowrite </item>
+      <item> pg_meta_data </item>
+      <item> pg_num_fields </item>
+      <item> pg_num_rows </item>
+      <item> pg_numfields </item>
+      <item> pg_numrows </item>
+      <item> pg_options </item>
+      <item> pg_parameter_status </item>
+      <item> pg_pconnect </item>
+      <item> pg_ping </item>
+      <item> pg_port </item>
+      <item> pg_put_line </item>
+      <item> pg_query </item>
+      <item> pg_result </item>
+      <item> pg_result_error </item>
+      <item> pg_result_seek </item>
+      <item> pg_result_status </item>
+      <item> pg_select </item>
+      <item> pg_send_query </item>
+      <item> pg_set_client_encoding </item>
+      <item> pg_setclientencoding </item>
+      <item> pg_trace </item>
+      <item> pg_tty </item>
+      <item> pg_unescape_bytea </item>
+      <item> pg_untrace </item>
+      <item> pg_update </item>
+      <item> pg_version </item>
+      <item> php_check_syntax </item>
+      <item> php_egg_logo_guid </item>
+      <item> php_ini_scanned_files </item>
+      <item> php_logo_guid </item>
+      <item> php_real_logo_guid </item>
+      <item> php_sapi_name </item>
+      <item> php_strip_whitespace </item>
+      <item> php_uname </item>
+      <item> phpcredits </item>
+      <item> phpinfo </item>
+      <item> phpversion </item>
+      <item> pi </item>
+      <item> png2wbmp </item>
+      <item> popen </item>
+      <item> pos </item>
+      <item> posix_ctermid </item>
+      <item> posix_errno </item>
+      <item> posix_get_last_error </item>
+      <item> posix_getcwd </item>
+      <item> posix_getegid </item>
+      <item> posix_geteuid </item>
+      <item> posix_getgid </item>
+      <item> posix_getgrgid </item>
+      <item> posix_getgrnam </item>
+      <item> posix_getgroups </item>
+      <item> posix_getlogin </item>
+      <item> posix_getpgid </item>
+      <item> posix_getpgrp </item>
+      <item> posix_getpid </item>
+      <item> posix_getppid </item>
+      <item> posix_getpwnam </item>
+      <item> posix_getpwuid </item>
+      <item> posix_getrlimit </item>
+      <item> posix_getsid </item>
+      <item> posix_getuid </item>
+      <item> posix_isatty </item>
+      <item> posix_kill </item>
+      <item> posix_mkfifo </item>
+      <item> posix_setegid </item>
+      <item> posix_seteuid </item>
+      <item> posix_setgid </item>
+      <item> posix_setpgid </item>
+      <item> posix_setsid </item>
+      <item> posix_setuid </item>
+      <item> posix_strerror </item>
+      <item> posix_times </item>
+      <item> posix_ttyname </item>
+      <item> posix_uname </item>
+      <item> pow </item>
+      <item> preg_grep </item>
+      <item> preg_match </item>
+      <item> preg_match_all </item>
+      <item> preg_quote </item>
+      <item> preg_replace </item>
+      <item> preg_replace_callback </item>
+      <item> preg_split </item>
+      <item> prev </item>
+      <item> print </item>
+      <item> print_r </item>
+      <item> printer_abort </item>
+      <item> printer_close </item>
+      <item> printer_create_brush </item>
+      <item> printer_create_dc </item>
+      <item> printer_create_font </item>
+      <item> printer_create_pen </item>
+      <item> printer_delete_brush </item>
+      <item> printer_delete_dc </item>
+      <item> printer_delete_font </item>
+      <item> printer_delete_pen </item>
+      <item> printer_draw_bmp </item>
+      <item> printer_draw_chord </item>
+      <item> printer_draw_elipse </item>
+      <item> printer_draw_line </item>
+      <item> printer_draw_pie </item>
+      <item> printer_draw_rectangle </item>
+      <item> printer_draw_roundrect </item>
+      <item> printer_draw_text </item>
+      <item> printer_end_doc </item>
+      <item> printer_end_page </item>
+      <item> printer_get_option </item>
+      <item> printer_list </item>
+      <item> printer_logical_fontheight </item>
+      <item> printer_open </item>
+      <item> printer_select_brush </item>
+      <item> printer_select_font </item>
+      <item> printer_select_pen </item>
+      <item> printer_set_option </item>
+      <item> printer_start_doc </item>
+      <item> printer_start_page </item>
+      <item> printer_write </item>
+      <item> printf </item>
+      <item> proc_close </item>
+      <item> proc_get_status </item>
+      <item> proc_nice </item>
+      <item> proc_open </item>
+      <item> proc_terminate </item>
+      <item> pspell_add_to_personal </item>
+      <item> pspell_add_to_session </item>
+      <item> pspell_check </item>
+      <item> pspell_clear_session </item>
+      <item> pspell_config_create </item>
+      <item> pspell_config_ignore </item>
+      <item> pspell_config_mode </item>
+      <item> pspell_config_personal </item>
+      <item> pspell_config_repl </item>
+      <item> pspell_config_runtogether </item>
+      <item> pspell_config_save_repl </item>
+      <item> pspell_new </item>
+      <item> pspell_new_config </item>
+      <item> pspell_new_personal </item>
+      <item> pspell_save_wordlist </item>
+      <item> pspell_store_replacement </item>
+      <item> pspell_suggest </item>
+      <item> putenv </item>
+      <item> qdom_error </item>
+      <item> qdom_tree </item>
+      <item> quoted_printable_decode </item>
+      <item> quotemeta </item>
+      <item> rad2deg </item>
+      <item> rand </item>
+      <item> range </item>
+      <item> rawurldecode </item>
+      <item> rawurlencode </item>
+      <item> read_exif_data </item>
+      <item> readdir </item>
+      <item> readfile </item>
+      <item> readgzfile </item>
+      <item> readline </item>
+      <item> readline_add_history </item>
+      <item> readline_clear_history </item>
+      <item> readline_completion_function </item>
+      <item> readline_info </item>
+      <item> readline_list_history </item>
+      <item> readline_read_history </item>
+      <item> readline_write_history </item>
+      <item> readlink </item>
+      <item> realpath </item>
+      <item> recode </item>
+      <item> recode_file </item>
+      <item> recode_string </item>
+      <item> register_shutdown_function </item>
+      <item> register_tick_function </item>
+      <item> rename </item>
+      <item> require </item>
+      <item> require_once </item>
+      <item> reset </item>
+      <item> restore_error_handler </item>
+      <item> restore_exception_handler </item>
+      <item> restore_include_path </item>
+      <item> rewind </item>
+      <item> rewinddir </item>
+      <item> rmdir </item>
+      <item> round </item>
+      <item> rsort </item>
+      <item> rtrim </item>
+      <item> scandir </item>
+      <item> sem_acquire </item>
+      <item> sem_get </item>
+      <item> sem_release </item>
+      <item> sem_remove </item>
+      <item> serialize </item>
+      <item> sesam_affected_rows </item>
+      <item> sesam_commit </item>
+      <item> sesam_connect </item>
+      <item> sesam_diagnostic </item>
+      <item> sesam_disconnect </item>
+      <item> sesam_errormsg </item>
+      <item> sesam_execimm </item>
+      <item> sesam_fetch_array </item>
+      <item> sesam_fetch_result </item>
+      <item> sesam_fetch_row </item>
+      <item> sesam_field_array </item>
+      <item> sesam_field_name </item>
+      <item> sesam_free_result </item>
+      <item> sesam_num_fields </item>
+      <item> sesam_query </item>
+      <item> sesam_rollback </item>
+      <item> sesam_seek_row </item>
+      <item> sesam_settransaction </item>
+      <item> session_cache_expire </item>
+      <item> session_cache_limiter </item>
+      <item> session_commit </item>
+      <item> session_decode </item>
+      <item> session_destroy </item>
+      <item> session_encode </item>
+      <item> session_get_cookie_params </item>
+      <item> session_id </item>
+      <item> session_is_registered </item>
+      <item> session_module_name </item>
+      <item> session_name </item>
+      <item> session_regenerate_id </item>
+      <item> session_register </item>
+      <item> session_save_path </item>
+      <item> session_set_cookie_params </item>
+      <item> session_set_save_handler </item>
+      <item> session_start </item>
+      <item> session_unregister </item>
+      <item> session_unset </item>
+      <item> session_write_close </item>
+      <item> set_error_handler </item>
+      <item> set_exception_handler </item>
+      <item> set_file_buffer </item>
+      <item> set_include_path </item>
+      <item> set_magic_quotes_runtime </item>
+      <item> set_socket_blocking </item>
+      <item> set_time_limit </item>
+      <item> setcookie </item>
+      <item> setlocale </item>
+      <item> setrawcookie </item>
+      <item> settype </item>
+      <item> sha1 </item>
+      <item> sha1_file </item>
+      <item> shell_exec </item>
+      <item> shm_attach </item>
+      <item> shm_detach </item>
+      <item> shm_get_var </item>
+      <item> shm_put_var </item>
+      <item> shm_remove </item>
+      <item> shm_remove_var </item>
+      <item> shmop_close </item>
+      <item> shmop_delete </item>
+      <item> shmop_open </item>
+      <item> shmop_read </item>
+      <item> shmop_size </item>
+      <item> shmop_write </item>
+      <item> show_source </item>
+      <item> shuffle </item>
+      <item> similar_text </item>
+      <item> simplexml_load_file </item>
+      <item> simplexml_load_string </item>
+      <item> sin </item>
+      <item> sinh </item>
+      <item> sizeof </item>
+      <item> sleep </item>
+      <item> snmp3_get </item>
+      <item> snmp3_getnext </item>
+      <item> snmp3_real_walk </item>
+      <item> snmp3_set </item>
+      <item> snmp3_walk </item>
+      <item> snmp_get_quick_print </item>
+      <item> snmp_get_valueretrieval </item>
+      <item> snmp_read_mib </item>
+      <item> snmp_set_enum_print </item>
+      <item> snmp_set_oid_numeric_print </item>
+      <item> snmp_set_quick_print </item>
+      <item> snmp_set_valueretrieval </item>
+      <item> snmpget </item>
+      <item> snmpgetnext </item>
+      <item> snmprealwalk </item>
+      <item> snmpset </item>
+      <item> snmpwalk </item>
+      <item> snmpwalkoid </item>
+      <item> socket_accept </item>
+      <item> socket_bind </item>
+      <item> socket_clear_error </item>
+      <item> socket_close </item>
+      <item> socket_connect </item>
+      <item> socket_create </item>
+      <item> socket_create_listen </item>
+      <item> socket_create_pair </item>
+      <item> socket_get_option </item>
+      <item> socket_get_status </item>
+      <item> socket_getopt </item>
+      <item> socket_getpeername </item>
+      <item> socket_getsockname </item>
+      <item> socket_iovec_add </item>
+      <item> socket_iovec_alloc </item>
+      <item> socket_iovec_delete </item>
+      <item> socket_iovec_fetch </item>
+      <item> socket_iovec_free </item>
+      <item> socket_iovec_set </item>
+      <item> socket_last_error </item>
+      <item> socket_listen </item>
+      <item> socket_read </item>
+      <item> socket_readv </item>
+      <item> socket_recv </item>
+      <item> socket_recvfrom </item>
+      <item> socket_recvmsg </item>
+      <item> socket_select </item>
+      <item> socket_send </item>
+      <item> socket_sendmsg </item>
+      <item> socket_sendto </item>
+      <item> socket_set_block </item>
+      <item> socket_set_blocking </item>
+      <item> socket_set_nonblock </item>
+      <item> socket_set_option </item>
+      <item> socket_set_timeout </item>
+      <item> socket_setopt </item>
+      <item> socket_shutdown </item>
+      <item> socket_strerror </item>
+      <item> socket_write </item>
+      <item> socket_writev </item>
+      <item> sort </item>
+      <item> soundex </item>
+      <item> spl_classes </item>
+      <item> split </item>
+      <item> spliti </item>
+      <item> sprintf </item>
+      <item> sql_regcase </item>
+      <item> sqlite_array_query </item>
+      <item> sqlite_busy_timeout </item>
+      <item> sqlite_changes </item>
+      <item> sqlite_close </item>
+      <item> sqlite_column </item>
+      <item> sqlite_create_aggregate </item>
+      <item> sqlite_create_function </item>
+      <item> sqlite_current </item>
+      <item> sqlite_error_string </item>
+      <item> sqlite_escape_string </item>
+      <item> sqlite_exec </item>
+      <item> sqlite_factory </item>
+      <item> sqlite_fetch_all </item>
+      <item> sqlite_fetch_array </item>
+      <item> sqlite_fetch_column_types </item>
+      <item> sqlite_fetch_object </item>
+      <item> sqlite_fetch_single </item>
+      <item> sqlite_fetch_string </item>
+      <item> sqlite_field_name </item>
+      <item> sqlite_has_more </item>
+      <item> sqlite_has_prev </item>
+      <item> sqlite_last_error </item>
+      <item> sqlite_last_insert_rowid </item>
+      <item> sqlite_libencoding </item>
+      <item> sqlite_libversion </item>
+      <item> sqlite_next </item>
+      <item> sqlite_num_fields </item>
+      <item> sqlite_num_rows </item>
+      <item> sqlite_open </item>
+      <item> sqlite_popen </item>
+      <item> sqlite_prev </item>
+      <item> sqlite_query </item>
+      <item> sqlite_rewind </item>
+      <item> sqlite_seek </item>
+      <item> sqlite_single_query </item>
+      <item> sqlite_udf_decode_binary </item>
+      <item> sqlite_udf_encode_binary </item>
+      <item> sqlite_unbuffered_query </item>
+      <item> sqlite_valid </item>
+      <item> sqrt </item>
+      <item> srand </item>
+      <item> sscanf </item>
+      <item> stat </item>
+      <item> str_ireplace </item>
+      <item> str_pad </item>
+      <item> str_repeat </item>
+      <item> str_replace </item>
+      <item> str_rot13 </item>
+      <item> str_shuffle </item>
+      <item> str_split </item>
+      <item> str_word_count </item>
+      <item> strcasecmp </item>
+      <item> strchr </item>
+      <item> strcmp </item>
+      <item> strcoll </item>
+      <item> strcspn </item>
+      <item> stream_bucket_append </item>
+      <item> stream_bucket_make_writeable </item>
+      <item> stream_bucket_new </item>
+      <item> stream_bucket_prepend </item>
+      <item> stream_context_create </item>
+      <item> stream_context_get_options </item>
+      <item> stream_context_set_option </item>
+      <item> stream_context_set_params </item>
+      <item> stream_copy_to_stream </item>
+      <item> stream_filter_append </item>
+      <item> stream_filter_prepend </item>
+      <item> stream_filter_register </item>
+      <item> stream_get_contents </item>
+      <item> stream_get_filters </item>
+      <item> stream_get_line </item>
+      <item> stream_get_meta_data </item>
+      <item> stream_get_transports </item>
+      <item> stream_get_wrappers </item>
+      <item> stream_register_wrapper </item>
+      <item> stream_select </item>
+      <item> stream_set_blocking </item>
+      <item> stream_set_timeout </item>
+      <item> stream_set_write_buffer </item>
+      <item> stream_socket_accept </item>
+      <item> stream_socket_client </item>
+      <item> stream_socket_get_name </item>
+      <item> stream_socket_recvfrom </item>
+      <item> stream_socket_sendto </item>
+      <item> stream_socket_server </item>
+      <item> stream_wrapper_register </item>
+      <item> strftime </item>
+      <item> strip_tags </item>
+      <item> stripcslashes </item>
+      <item> stripos </item>
+      <item> stripslashes </item>
+      <item> stristr </item>
+      <item> strlen </item>
+      <item> strnatcasecmp </item>
+      <item> strnatcmp </item>
+      <item> strncasecmp </item>
+      <item> strncmp </item>
+      <item> strpbrk </item>
+      <item> strpos </item>
+      <item> strrchr </item>
+      <item> strrev </item>
+      <item> strripos </item>
+      <item> strrpos </item>
+      <item> strspn </item>
+      <item> strstr </item>
+      <item> strtok </item>
+      <item> strtolower </item>
+      <item> strtotime </item>
+      <item> strtoupper </item>
+      <item> strtr </item>
+      <item> strval </item>
+      <item> substr </item>
+      <item> substr_compare </item>
+      <item> substr_count </item>
+      <item> substr_replace </item>
+      <item> swf_actiongeturl </item>
+      <item> swf_actiongotoframe </item>
+      <item> swf_actiongotolabel </item>
+      <item> swf_actionnextframe </item>
+      <item> swf_actionplay </item>
+      <item> swf_actionprevframe </item>
+      <item> swf_actionsettarget </item>
+      <item> swf_actionstop </item>
+      <item> swf_actiontogglequality </item>
+      <item> swf_actionwaitforframe </item>
+      <item> swf_addbuttonrecord </item>
+      <item> swf_addcolor </item>
+      <item> swf_closefile </item>
+      <item> swf_definebitmap </item>
+      <item> swf_definefont </item>
+      <item> swf_defineline </item>
+      <item> swf_definepoly </item>
+      <item> swf_definerect </item>
+      <item> swf_definetext </item>
+      <item> swf_endbutton </item>
+      <item> swf_enddoaction </item>
+      <item> swf_endshape </item>
+      <item> swf_endsymbol </item>
+      <item> swf_fontsize </item>
+      <item> swf_fontslant </item>
+      <item> swf_fonttracking </item>
+      <item> swf_getbitmapinfo </item>
+      <item> swf_getfontinfo </item>
+      <item> swf_getframe </item>
+      <item> swf_labelframe </item>
+      <item> swf_lookat </item>
+      <item> swf_modifyobject </item>
+      <item> swf_mulcolor </item>
+      <item> swf_nextid </item>
+      <item> swf_oncondition </item>
+      <item> swf_openfile </item>
+      <item> swf_ortho </item>
+      <item> swf_ortho2 </item>
+      <item> swf_perspective </item>
+      <item> swf_placeobject </item>
+      <item> swf_polarview </item>
+      <item> swf_popmatrix </item>
+      <item> swf_posround </item>
+      <item> swf_pushmatrix </item>
+      <item> swf_removeobject </item>
+      <item> swf_rotate </item>
+      <item> swf_scale </item>
+      <item> swf_setfont </item>
+      <item> swf_setframe </item>
+      <item> swf_shapearc </item>
+      <item> swf_shapecurveto </item>
+      <item> swf_shapecurveto3 </item>
+      <item> swf_shapefillbitmapclip </item>
+      <item> swf_shapefillbitmaptile </item>
+      <item> swf_shapefilloff </item>
+      <item> swf_shapefillsolid </item>
+      <item> swf_shapelinesolid </item>
+      <item> swf_shapelineto </item>
+      <item> swf_shapemoveto </item>
+      <item> swf_showframe </item>
+      <item> swf_startbutton </item>
+      <item> swf_startdoaction </item>
+      <item> swf_startshape </item>
+      <item> swf_startsymbol </item>
+      <item> swf_textwidth </item>
+      <item> swf_translate </item>
+      <item> swf_viewport </item>
+      <item> swfaction </item>
+      <item> swfbitmap </item>
+      <item> swfbitmap.getheight </item>
+      <item> swfbitmap.getwidth </item>
+      <item> swfbutton </item>
+      <item> swfbutton.addaction </item>
+      <item> swfbutton.addshape </item>
+      <item> swfbutton.setaction </item>
+      <item> swfbutton.setdown </item>
+      <item> swfbutton.sethit </item>
+      <item> swfbutton.setover </item>
+      <item> swfbutton.setup </item>
+      <item> swfbutton_keypress </item>
+      <item> swfdisplayitem </item>
+      <item> swfdisplayitem.addcolor </item>
+      <item> swfdisplayitem.move </item>
+      <item> swfdisplayitem.moveto </item>
+      <item> swfdisplayitem.multcolor </item>
+      <item> swfdisplayitem.remove </item>
+      <item> swfdisplayitem.rotate </item>
+      <item> swfdisplayitem.rotateto </item>
+      <item> swfdisplayitem.scale </item>
+      <item> swfdisplayitem.scaleto </item>
+      <item> swfdisplayitem.setdepth </item>
+      <item> swfdisplayitem.setname </item>
+      <item> swfdisplayitem.setratio </item>
+      <item> swfdisplayitem.skewx </item>
+      <item> swfdisplayitem.skewxto </item>
+      <item> swfdisplayitem.skewy </item>
+      <item> swfdisplayitem.skewyto </item>
+      <item> swffill </item>
+      <item> swffill.moveto </item>
+      <item> swffill.rotateto </item>
+      <item> swffill.scaleto </item>
+      <item> swffill.skewxto </item>
+      <item> swffill.skewyto </item>
+      <item> swffont </item>
+      <item> swffont.getwidth </item>
+      <item> swfgradient </item>
+      <item> swfgradient.addentry </item>
+      <item> swfmorph </item>
+      <item> swfmorph.getshape1 </item>
+      <item> swfmorph.getshape2 </item>
+      <item> swfmovie </item>
+      <item> swfmovie.add </item>
+      <item> swfmovie.nextframe </item>
+      <item> swfmovie.output </item>
+      <item> swfmovie.remove </item>
+      <item> swfmovie.save </item>
+      <item> swfmovie.setbackground </item>
+      <item> swfmovie.setdimension </item>
+      <item> swfmovie.setframes </item>
+      <item> swfmovie.setrate </item>
+      <item> swfmovie.streammp3 </item>
+      <item> swfshape </item>
+      <item> swfshape.addfill </item>
+      <item> swfshape.drawcurve </item>
+      <item> swfshape.drawcurveto </item>
+      <item> swfshape.drawline </item>
+      <item> swfshape.drawlineto </item>
+      <item> swfshape.movepen </item>
+      <item> swfshape.movepento </item>
+      <item> swfshape.setleftfill </item>
+      <item> swfshape.setline </item>
+      <item> swfshape.setrightfill </item>
+      <item> swfsprite </item>
+      <item> swfsprite.add </item>
+      <item> swfsprite.nextframe </item>
+      <item> swfsprite.remove </item>
+      <item> swfsprite.setframes </item>
+      <item> swftext </item>
+      <item> swftext.addstring </item>
+      <item> swftext.getwidth </item>
+      <item> swftext.moveto </item>
+      <item> swftext.setcolor </item>
+      <item> swftext.setfont </item>
+      <item> swftext.setheight </item>
+      <item> swftext.setspacing </item>
+      <item> swftextfield </item>
+      <item> swftextfield.addstring </item>
+      <item> swftextfield.align </item>
+      <item> swftextfield.setbounds </item>
+      <item> swftextfield.setcolor </item>
+      <item> swftextfield.setfont </item>
+      <item> swftextfield.setheight </item>
+      <item> swftextfield.setindentation </item>
+      <item> swftextfield.setleftmargin </item>
+      <item> swftextfield.setlinespacing </item>
+      <item> swftextfield.setmargins </item>
+      <item> swftextfield.setname </item>
+      <item> swftextfield.setrightmargin </item>
+      <item> sybase_affected_rows </item>
+      <item> sybase_close </item>
+      <item> sybase_connect </item>
+      <item> sybase_data_seek </item>
+      <item> sybase_fetch_array </item>
+      <item> sybase_fetch_field </item>
+      <item> sybase_fetch_object </item>
+      <item> sybase_fetch_row </item>
+      <item> sybase_field_seek </item>
+      <item> sybase_free_result </item>
+      <item> sybase_get_last_message </item>
+      <item> sybase_min_client_severity </item>
+      <item> sybase_min_error_severity </item>
+      <item> sybase_min_message_severity </item>
+      <item> sybase_min_server_severity </item>
+      <item> sybase_num_fields </item>
+      <item> sybase_num_rows </item>
+      <item> sybase_pconnect </item>
+      <item> sybase_query </item>
+      <item> sybase_result </item>
+      <item> sybase_select_db </item>
+      <item> symlink </item>
+      <item> syslog </item>
+      <item> system </item>
+      <item> tan </item>
+      <item> tanh </item>
+      <item> tempnam </item>
+      <item> textdomain </item>
+      <item> time </item>
+      <item> time_nanosleep </item>
+      <item> tmpfile </item>
+      <item> token_get_all </item>
+      <item> token_name </item>
+      <item> touch </item>
+      <item> trigger_error </item>
+      <item> trim </item>
+      <item> uasort </item>
+      <item> ucfirst </item>
+      <item> ucwords </item>
+      <item> udm_add_search_limit </item>
+      <item> udm_alloc_agent </item>
+      <item> udm_api_version </item>
+      <item> udm_cat_list </item>
+      <item> udm_cat_path </item>
+      <item> udm_check_charset </item>
+      <item> udm_check_stored </item>
+      <item> udm_clear_search_limits </item>
+      <item> udm_close_stored </item>
+      <item> udm_crc32 </item>
+      <item> udm_errno </item>
+      <item> udm_error </item>
+      <item> udm_find </item>
+      <item> udm_free_agent </item>
+      <item> udm_free_ispell_data </item>
+      <item> udm_free_res </item>
+      <item> udm_get_doc_count </item>
+      <item> udm_get_res_field </item>
+      <item> udm_get_res_param </item>
+      <item> udm_load_ispell_data </item>
+      <item> udm_open_stored </item>
+      <item> udm_set_agent_param </item>
+      <item> uksort </item>
+      <item> umask </item>
+      <item> uniqid </item>
+      <item> unixtojd </item>
+      <item> unlink </item>
+      <item> unpack </item>
+      <item> unregister_tick_function </item>
+      <item> unserialize </item>
+      <item> unset </item>
+      <item> urldecode </item>
+      <item> urlencode </item>
+      <item> use_soap_error_handler </item>
+      <item> user_error </item>
+      <item> usleep </item>
+      <item> usort </item>
+      <item> utf8_decode </item>
+      <item> utf8_encode </item>
+      <item> var_dump </item>
+      <item> var_export </item>
+      <item> variant </item>
+      <item> version_compare </item>
+      <item> vfprintf </item>
+      <item> virtual </item>
+      <item> vpopmail_add_alias_domain </item>
+      <item> vpopmail_add_alias_domain_ex </item>
+      <item> vpopmail_add_domain </item>
+      <item> vpopmail_add_domain_ex </item>
+      <item> vpopmail_add_user </item>
+      <item> vpopmail_alias_add </item>
+      <item> vpopmail_alias_del </item>
+      <item> vpopmail_alias_del_domain </item>
+      <item> vpopmail_alias_get </item>
+      <item> vpopmail_alias_get_all </item>
+      <item> vpopmail_auth_user </item>
+      <item> vpopmail_del_domain </item>
+      <item> vpopmail_del_domain_ex </item>
+      <item> vpopmail_del_user </item>
+      <item> vpopmail_error </item>
+      <item> vpopmail_passwd </item>
+      <item> vpopmail_set_user_quota </item>
+      <item> vprintf </item>
+      <item> vsprintf </item>
+      <item> w32api_deftype </item>
+      <item> w32api_init_dtype </item>
+      <item> w32api_invoke_function </item>
+      <item> w32api_register_function </item>
+      <item> w32api_set_call_method </item>
+      <item> wddx_add_vars </item>
+      <item> wddx_deserialize </item>
+      <item> wddx_packet_end </item>
+      <item> wddx_packet_start </item>
+      <item> wddx_serialize_value </item>
+      <item> wddx_serialize_vars </item>
+      <item> wordwrap </item>
+      <item> xml_error_string </item>
+      <item> xml_get_current_byte_index </item>
+      <item> xml_get_current_column_number </item>
+      <item> xml_get_current_line_number </item>
+      <item> xml_get_error_code </item>
+      <item> xml_parse </item>
+      <item> xml_parse_into_struct </item>
+      <item> xml_parser_create </item>
+      <item> xml_parser_create_ns </item>
+      <item> xml_parser_free </item>
+      <item> xml_parser_get_option </item>
+      <item> xml_parser_set_option </item>
+      <item> xml_set_character_data_handler </item>
+      <item> xml_set_default_handler </item>
+      <item> xml_set_element_handler </item>
+      <item> xml_set_end_namespace_decl_handler </item>
+      <item> xml_set_external_entity_ref_handler </item>
+      <item> xml_set_notation_decl_handler </item>
+      <item> xml_set_object </item>
+      <item> xml_set_processing_instruction_handler </item>
+      <item> xml_set_start_namespace_decl_handler </item>
+      <item> xml_set_unparsed_entity_decl_handler </item>
+      <item> xmldoc </item>
+      <item> xmldocfile </item>
+      <item> xmlrpc_decode </item>
+      <item> xmlrpc_decode_request </item>
+      <item> xmlrpc_encode </item>
+      <item> xmlrpc_encode_request </item>
+      <item> xmlrpc_get_type </item>
+      <item> xmlrpc_is_fault </item>
+      <item> xmlrpc_parse_method_descriptions </item>
+      <item> xmlrpc_server_add_introspection_data </item>
+      <item> xmlrpc_server_call_method </item>
+      <item> xmlrpc_server_create </item>
+      <item> xmlrpc_server_destroy </item>
+      <item> xmlrpc_server_register_introspection_callback </item>
+      <item> xmlrpc_server_register_method </item>
+      <item> xmlrpc_set_type </item>
+      <item> xmltree </item>
+      <item> xpath_eval </item>
+      <item> xpath_eval_expression </item>
+      <item> xpath_new_context </item>
+      <item> xptr_eval </item>
+      <item> xptr_new_context </item>
+      <item> xslt_create </item>
+      <item> xslt_errno </item>
+      <item> xslt_error </item>
+      <item> xslt_free </item>
+      <item> xslt_process </item>
+      <item> xslt_set_base </item>
+      <item> xslt_set_encoding </item>
+      <item> xslt_set_error_handler </item>
+      <item> xslt_set_log </item>
+      <item> xslt_set_sax_handler </item>
+      <item> xslt_set_sax_handlers </item>
+      <item> xslt_set_scheme_handler </item>
+      <item> xslt_set_scheme_handlers </item>
+      <item> yaz_addinfo </item>
+      <item> yaz_ccl_conf </item>
+      <item> yaz_ccl_parse </item>
+      <item> yaz_close </item>
+      <item> yaz_connect </item>
+      <item> yaz_database </item>
+      <item> yaz_element </item>
+      <item> yaz_errno </item>
+      <item> yaz_error </item>
+      <item> yaz_hits </item>
+      <item> yaz_itemorder </item>
+      <item> yaz_present </item>
+      <item> yaz_range </item>
+      <item> yaz_record </item>
+      <item> yaz_scan </item>
+      <item> yaz_scan_result </item>
+      <item> yaz_search </item>
+      <item> yaz_sort </item>
+      <item> yaz_syntax </item>
+      <item> yaz_wait </item>
+      <item> yp_all </item>
+      <item> yp_cat </item>
+      <item> yp_err_string </item>
+      <item> yp_errno </item>
+      <item> yp_first </item>
+      <item> yp_get_default_domain </item>
+      <item> yp_master </item>
+      <item> yp_match </item>
+      <item> yp_next </item>
+      <item> yp_order </item>
+      <item> zend_logo_guid </item>
+      <item> zend_version </item>
+      <item> zip_close </item>
+      <item> zip_entry_close </item>
+      <item> zip_entry_compressedsize </item>
+      <item> zip_entry_compressionmethod </item>
+      <item> zip_entry_filesize </item>
+      <item> zip_entry_name </item>
+      <item> zip_entry_open </item>
+      <item> zip_entry_read </item>
+      <item> zip_open </item>
+      <item> zip_read </item>
+      <item> zlib_get_coding_type </item>
+    </list>
+    <contexts>
+      <context name="start" lineEndContext="#stay" attribute="Normal Text">
+          <RegExpr context="phpsource" attribute="Keyword" String="&lt;\?(?:=|php)?" insensitive="true" beginRegion="php" />
+        <StringDetect attribute="Keyword" context="#pop" String="?&gt;" endRegion="php" />
+      </context>
+      <context name="braceregion" lineEndContext="#stay" attribute="Normal Text">
+        <IncludeRules context="phpsource"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Brace1" />
+      </context>
+      <context name="phpsource" attribute="PHP Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <!-- WORKAROUND for bug #143022 / missing feature #103257 -->
+        <StringDetect attribute="Keyword" context="#pop" String="?&gt;" endRegion="Brace1" lookAhead="true" />
+        <DetectChar attribute="Comment" context="onelinecomment" char="#" />
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="onelinecomment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="&#42;" beginRegion="Comment"/>
+        <keyword attribute="Control Structures" context="#stay" String="control structures" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <DetectChar attribute="Function" context="#stay" char="@" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Special method" context="#stay" String="special_methods" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="doublequotestring" char="&quot;" />
+        <DetectChar attribute="String" context="backquotestring" char="`" />
+        <DetectChar attribute="String" context="singlequotestring" char="&#39;" />
+        <RegExpr attribute="Backslash Code" context="heredoc" String="&lt;&lt;&lt;([A-Za-z_][A-Za-z0-9_]*)" />
+        <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
+        <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
+        <HlCOct attribute="Octal" context="#stay" />
+        <HlCHex attribute="Hex" context="#stay" />
+        <Float attribute="Float" context="#stay" />
+        <Int attribute="Decimal" context="#stay" />
+        <DetectChar attribute="Normal Text" context="braceregion" char="{" beginRegion="Brace1" />
+        <AnyChar attribute="Other" context="#stay" String=";():,[]" />
+      </context>
+      <context name="onelinecomment" attribute="Comment" lineEndContext="#pop">
+        <StringDetect attribute="Keyword" context="#pop" lookAhead="true" String="?&gt;" />
+      </context>
+      <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
+      </context>
+      <context name="doublebackquotestringcommon" attribute="String" lineEndContext="#stay">
+        <!-- Common rules for double quoted strings and backticks (execution operator) URL:
+              http://de3.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="n" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="r" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="t" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="$" />
+        <RegExpr attribute="Backslash Code" context="#stay" String="\\[0-7]{1,3}" />
+        <RegExpr attribute="Backslash Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />
+        <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[^&quot;]*&quot;|\$[a-zA-Z]*)|'[^']*'|\])*(->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*)*\}" />
+      </context>
+      <context name="backquotestring" attribute="String" lineEndContext="#stay">
+        <IncludeRules context="doublebackquotestringcommon"/>
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="`" />
+        <DetectChar attribute="String" context="#pop" char="`" />
+      </context>
+      <context name="doublequotestring" attribute="String" lineEndContext="#stay">
+        <IncludeRules context="doublebackquotestringcommon"/>
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="&quot;" />
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+      </context>
+      <context name="singlequotestring" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="'"/>
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\"/>
+        <DetectChar attribute="String" context="#pop" char="'" />
+      </context>
+      <context name="heredoc" attribute="String" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" />
+        <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*(->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*)*\}" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="PHP Text" defStyleNum="dsNormal" />
+      <itemData name="Keyword" defStyleNum="dsKeyword" />
+      <itemData name="Function" defStyleNum="dsFunction" />
+      <itemData name="Special method" defStyleNum="dsFunction" />
+      <itemData name="Decimal" defStyleNum="dsDecVal" />
+      <itemData name="Octal" defStyleNum="dsBaseN" />
+      <itemData name="Hex" defStyleNum="dsBaseN" />
+      <itemData name="Float" defStyleNum="dsFloat" />
+      <itemData name="String" defStyleNum="dsString" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" />
+      <itemData name="Control Structures" defStyleNum="dsKeyword" color="#A1A100" selColor="#ffffff" bold="0" italic="0" />
+      <itemData name="Backslash Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Other" defStyleNum="dsOthers" />
+
+      <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#0F0000" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="HTML Comment" defStyleNum="dsComment" />
+      <itemData name="Identifier" defStyleNum="dsOthers" />
+      <itemData name="Types" defStyleNum="dsDataType" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="" additionalDeliminator="@"/>
+  </general>
+</language>
\ No newline at end of file
diff --git a/src/plugins/genericeditor/XML/python.xml b/src/plugins/genericeditor/XML/python.xml
new file mode 100644
index 00000000000..542b35d08a6
--- /dev/null
+++ b/src/plugins/genericeditor/XML/python.xml
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<!-- Python syntax highlightning v0.9 by Per Wigren -->
+<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
+<!-- Python syntax highlighting v1.97 by Paul Giannaros -->
+<!-- Python syntax highlighting v1.99 by Primoz Anzur -->
+<language name="Python" version="2.00" kateversion="2.4" section="Scripts" extensions="*.py;*.pyw" mimetype="application/x-python;text/x-python" casesensitive="1" author="Michael Bueker" license="">
+	<highlighting>
+		<list name="prep">
+			<item> import </item>
+			<item> from </item>
+			<item> as </item>
+		</list>
+		<list name="defs">
+			<item> class </item>
+			<item> def </item>
+			<item> del </item>
+			<item> global </item>
+			<item> lambda </item>
+		</list>
+		<list name="operators">
+			<item> and </item>
+			<item> assert </item>
+			<item> in </item>
+			<item> is </item>
+			<item> not </item>
+			<item> or </item>
+		</list>
+		<list name="commands">
+			<item> exec </item>
+			<item> print </item>
+		</list>
+		<list name="flow">
+			<item> break </item>
+			<item> continue </item>
+			<item> elif </item>
+			<item> else </item>
+			<item> except </item>
+			<item> finally </item>
+			<item> for </item>
+			<item> if </item>
+			<item> pass </item>
+			<item> raise </item>
+			<item> return </item>
+			<item> try </item>
+			<item> while </item>
+			<item> yield </item>
+		</list>
+		<list name="builtinfuncs">
+			<item> __future__ </item>
+			<item> __import__ </item>
+			<item> __name__ </item>
+			<item> abs </item>
+			<item> all </item>
+			<item> any </item>
+			<item> apply </item>
+			<item> basestring </item>
+			<item> bool </item>
+			<item> buffer </item>
+			<item> callable </item>
+			<item> chr </item>
+			<item> classmethod </item>
+			<item> cmp </item>
+			<item> coerce </item>
+			<item> compile </item>
+			<item> complex </item>
+			<item> delattr </item>
+			<item> dict </item>
+			<item> dir </item>
+			<item> divmod </item>
+			<item> enumerate </item>
+			<item> eval </item>
+			<item> execfile </item>
+			<item> file </item>
+			<item> filter </item>
+			<item> float </item>
+			<item> frozenset </item>
+			<item> getattr </item>
+			<item> globals </item>
+			<item> hasattr </item>
+			<item> hash </item>
+			<item> hex </item>
+			<item> id </item>
+			<item> input </item>
+			<item> int </item>
+			<item> intern </item>
+			<item> isinstance </item>
+			<item> issubclass </item>
+			<item> iter </item>
+			<item> len </item>
+			<item> list </item>
+			<item> locals </item>
+			<item> long </item>
+			<item> map </item>
+			<item> max </item>
+			<item> min </item>
+			<item> object </item>
+			<item> oct </item>
+			<item> open </item>
+			<item> ord </item>
+			<item> pow </item>
+			<item> property </item>
+			<item> range </item>
+			<item> raw_input </item>
+			<item> reduce </item>
+			<item> reload </item>
+			<item> repr </item>
+			<item> reversed </item>
+			<item> round </item>
+			<item> set </item>
+			<item> setattr </item>
+			<item> slice </item>
+			<item> sorted </item>
+			<item> staticmethod </item>
+			<item> str </item>
+			<item> sum </item>
+			<item> super </item>
+			<item> tuple </item>
+			<item> type </item>
+			<item> unichr </item>
+			<item> unicode </item>
+			<item> vars </item>
+			<item> xrange </item>
+			<item> zip </item>
+		</list>
+		<list name="specialvars">
+			<item> None </item>
+			<item> self </item>
+			<item> True </item>
+			<item> False </item>
+			<item> NotImplemented </item>
+			<item> Ellipsis </item>
+		</list>
+		<list name="bindings">
+			<item> SIGNAL </item>
+			<item> SLOT </item>
+			<item> connect </item>
+		</list>
+		<list name="overloaders">
+			<item>__new__</item>
+			<item>__init__</item>
+			<item>__del__</item>
+			<item>__repr__</item>
+			<item>__str__</item>
+			<item>__lt__</item>
+			<item>__le__</item>
+			<item>__eq__</item>
+			<item>__ne__</item>
+			<item>__gt__</item>
+			<item>__ge__</item>
+			<item>__cmp__</item>
+			<item>__rcmp__</item>
+			<item>__hash__</item>
+			<item>__nonzero__</item>
+			<item>__unicode__</item>
+		</list>
+		<list name="exceptions">
+			<item>ArithmeticError</item>
+			<item>AssertionError</item>
+			<item>AttributeError</item>
+			<item>BaseException</item>
+			<item>DeprecationWarning</item>
+			<item>EnvironmentError</item>
+			<item>EOFError</item>
+			<item>Exception</item>
+			<item>FloatingPointError</item>
+			<item>FutureWarning</item>
+			<item>GeneratorExit</item>
+			<item>IOError</item>
+			<item>ImportError</item>
+			<item>ImportWarning</item>
+			<item>IndexError</item>
+			<item>KeyError</item>
+			<item>KeyboardInterrupt</item>
+			<item>LookupError</item>
+			<item>MemoryError</item>
+			<item>NameError</item>
+			<item>NotImplementedError</item>
+			<item>OSError</item>
+			<item>OverflowError</item>
+			<item>PendingDeprecationWarning</item>
+			<item>ReferenceError</item>
+			<item>RuntimeError</item>
+			<item>RuntimeWarning</item>
+			<item>StandardError</item>
+			<item>StopIteration</item>
+			<item>SyntaxError</item>
+			<item>SyntaxWarning</item>
+			<item>SystemError</item>
+			<item>SystemExit</item>
+			<item>TypeError</item>
+			<item>UnboundLocalError</item>
+			<item>UserWarning</item>
+			<item>UnicodeError</item>
+			<item>UnicodeWarning</item>
+			<item>UnicodeEncodeError</item>
+			<item>UnicodeDecodeError</item>
+			<item>UnicodeTranslateError</item>
+			<item>ValueError</item>
+			<item>Warning</item>
+			<item>WindowsError</item>
+			<item>ZeroDivisionError</item>
+		</list>
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<keyword attribute="Preprocessor" String="prep" context="#stay"/>
+				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
+				<keyword attribute="Operator" String="operators" context="#stay"/>
+				<keyword attribute="Command Keyword" String="commands" context="#stay"/>
+				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
+				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
+				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
+				<keyword attribute="Extensions" String="bindings" context="#stay"/>
+				<keyword attribute="Exceptions" String="exceptions" context="#stay"/>
+				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
+				<RegExpr attribute="Normal" String="[a-zA-Z_][a-zA-Z_0-9]+" context="#stay"/>
+
+				<RegExpr attribute="Complex" String=" ((([0-9]*\.[0-9]+|[0-9]+\.)|([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.))[eE](\+|-)?[0-9]+)|[0-9]+)[jJ]" context="#stay"/>
+				<RegExpr attribute="Float" String="([0-9]+\.[0-9]*|\.[0-9]+)([eE][0-9]+)?" context="#stay"/>
+				<RegExpr attribute="Int" String="([1-9][0-9]*([eE][0-9]+)?|0)" context="#stay"/>
+				<RegExpr attribute="Long" String="[1-9][0-9]*([eE][0-9.]+)?[Ll]" context="#stay"/>
+				<RegExpr attribute="Hex" String="0[Xx][0-9a-fA-F]+" context="#stay"/>
+				<RegExpr attribute="Octal" String="0[1-9][0-9]*" context="#stay"/>
+  
+				<RegExpr attribute="Raw String" String="[rR]'''" context="Raw Tripple A-string"/>
+				<RegExpr attribute="Raw String" String="[rR]&quot;&quot;&quot;" context="Raw Tripple Q-string"/>
+
+				<RegExpr attribute="Raw String" String="[rR]'" context="Raw A-string"/>
+				<RegExpr attribute="Raw String" String="[rR]&quot;" context="Raw Q-string"/>
+
+				<DetectChar attribute="Comment" char="#" context="Hash comment"/>
+				<RegExpr attribute="Comment" String="^\s*u?'''" context="Tripple A-comment" beginRegion="Tripple A-region"/>
+				<RegExpr attribute="Comment" String="^\s*u?&quot;&quot;&quot;" context="Tripple Q-comment" beginRegion="Tripple Q-region"/>
+
+				<StringDetect attribute="String" String="'''" context="Tripple A-string" beginRegion="Tripple A-region"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="Tripple Q-string" beginRegion="Tripple Q-region"/>
+				<DetectChar attribute="String" char="'" context="Single A-string"/>
+				<DetectChar attribute="String" char="&quot;" context="Single Q-string"/>
+				
+				<DetectChar attribute="Operator" char="(" context="parenthesised" beginRegion="parenthesis"/>
+				<DetectChar attribute="Operator" char=")" context="#pop" endRegion="parenthesis"/>
+				
+				<RegExpr attribute="Operator" String="[+*/%\|=;\!&lt;&gt;!^&amp;~-]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+
+			</context>
+			
+			<context name="parenthesised" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="Normal" />
+			</context>
+			
+			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="##Alerts" />
+			</context>
+
+			<context name="Tripple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Tripple A-region"/>
+				<IncludeRules context="##Alerts" />
+			</context>
+
+			<context name="Tripple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCChar attribute="Comment" context="#stay"/>
+				<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+				<IncludeRules context="##Alerts" />
+			</context>
+
+			<context name="Tripple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/> 
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<StringDetect attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
+			</context>
+
+			<context name="Raw Tripple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/> 
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<StringDetect attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
+			</context>
+
+			<context name="Tripple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+			</context>
+
+			<context name="Raw Tripple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+			</context>
+
+			<context name="Single A-comment" attribute="Comment" lineEndContext="#stay">
+				<HlCStringChar attribute="Comment" context="#stay"/>
+				<DetectChar attribute="Comment" char="'" context="#pop"/>
+				<IncludeRules context="##Alerts" />
+			</context>
+
+			<context name="Single Q-comment" attribute="Comment" lineEndContext="#stay">
+				<HlCStringChar attribute="Comment" context="#stay"/>
+				<DetectChar attribute="Comment" char="&quot;" context="#pop"/>
+				<IncludeRules context="##Alerts" />
+			</context>
+
+			<context name="Single A-string" attribute="String" lineEndContext="#stay">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="String" char="'" context="#pop"/>
+			</context>
+
+			<context name="Single Q-string" attribute="String" lineEndContext="#stay">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="String" char="&quot;" context="#pop"/>
+			</context>
+
+			<context name="Raw A-string" attribute="Raw String" lineEndContext="#stay">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="Raw String" char="'" context="#pop"/>
+			</context>
+
+			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#stay">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="Raw String" char="&quot;" context="#pop"/>
+			</context>
+
+
+		</contexts>
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"/>
+			<itemData name="Definition Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Operator" defStyleNum="dsNormal"/>
+			<itemData name="String Substitution" defStyleNum="dsNormal"/>
+			<itemData name="Command Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Flow Control Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Builtin Function" defStyleNum="dsDataType"/>
+			<itemData name="Special Variable" defStyleNum="dsOthers"/>
+			<itemData name="Extensions" defStyleNum="dsOthers" color="#0095ff" selColor="#ffffff" bold="1" italic="0"/>
+			<itemData name="Exceptions" defStyleNum="dsOthers" color="#054d00" selColor="#ffffff" bold="1" italic="0"/>
+			<itemData name="Overloaders" defStyleNum="dsOthers" color="#000e52" selColor="#ffffff" bold="1" italic="0"/>
+			<itemData name="Preprocessor" defStyleNum="dsChar"/>
+			<itemData name="String Char" defStyleNum="dsChar"/>
+			<itemData name="Long" defStyleNum="dsOthers"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Int" defStyleNum="dsDecVal"/>
+			<itemData name="Hex" defStyleNum="dsOthers"/>
+			<itemData name="Octal" defStyleNum="dsOthers"/>
+			<itemData name="Complex" defStyleNum="dsOthers"/>
+			<itemData name="Comment" defStyleNum="dsComment"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String" defStyleNum="dsString"/>
+		</itemDatas>
+	</highlighting>
+   <general>
+     <folding indentationsensitive="1" />
+     <emptyLines>
+       <emptyLine regexpr="\s+" casesensitive="false"/>
+       <emptyLine regexpr="\s*#.*$" casesensitive="false"/>
+     </emptyLines>
+     <comments>
+        <comment name="singleLine" start="#" position="afterwhitespace"/>
+     </comments>
+     <keywords casesensitive="1" />
+   </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/ruby.xml b/src/plugins/genericeditor/XML/ruby.xml
new file mode 100644
index 00000000000..c59f0152939
--- /dev/null
+++ b/src/plugins/genericeditor/XML/ruby.xml
@@ -0,0 +1,915 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!--
+  Ruby syntax highlighting definition for Kate.
+  
+  Copyright (C) 2004  by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)
+  Copyright (C) 2004  by Stefan Lang (langstefan@gmx.at)
+  Copyright (C) 2008  by Robin Pedersen (robinpeder@gmail.com)
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; if not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA  02110-1301, USA.
+-->
+
+<!--
+	TODO:	* "Nested" HERE documents aren't recognized.
+			* Division after gdl contexts is interpreted as regexp
+-->
+
+<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
+<language name="Ruby" section="Scripts"
+          version="1.18" kateversion="2.4" 
+	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb"
+	  mimetype="application/x-ruby"
+	  style="ruby" indenter="ruby"
+	  author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com)" license="LGPL">
+	
+	<highlighting>
+	
+		<list name="keywords">
+			<item> BEGIN </item>
+			<item> END </item>
+			<item> and </item>
+			<item> begin </item>
+			<item> break </item>
+			<item> case </item>
+			<item> defined? </item>
+			<item> do </item>
+			<item> else </item>
+			<item> elsif </item>
+			<item> end </item>
+			<item> ensure </item>
+			<item> for </item>
+			<item> if </item>
+			<item> in </item>
+			<item> include </item>
+			<item> next </item>
+			<item> not </item>
+			<item> or </item>
+			<item> redo </item>
+			<item> rescue </item>
+			<item> retry </item>
+			<item> return </item>
+			<item> then </item>
+			<item> unless </item>
+			<item> until </item>
+			<item> when </item>
+			<item> while </item>
+			<item> yield </item>
+		</list>
+		
+		<list name="access-control">
+			<item> private_class_method </item>
+			<item> private </item>
+			<item> protected </item>
+			<item> public_class_method </item>
+			<item> public </item>
+		</list>
+
+		<list name="attribute-definitions">
+			<item> attr_reader </item>
+			<item> attr_writer </item>
+			<item> attr_accessor </item>
+		</list>
+		
+		<list name="definitions">
+			<item> alias </item>
+			<item> module </item>
+			<item> class </item>
+			<item> def </item>
+			<item> undef </item>
+		</list>
+		
+		<list name="pseudo-variables">
+			<item> self </item>
+			<item> super </item>
+			<item> nil </item>
+			<item> false </item>
+			<item> true </item>
+			<item> caller </item>
+			<item> __FILE__ </item>
+			<item> __LINE__ </item>
+		</list>
+		
+		<list name="default-globals">
+			<item> $stdout </item>
+			<item> $defout </item>
+			<item> $stderr </item>
+			<item> $deferr </item>
+			<item> $stdin </item>
+		</list>
+		
+		<!-- Kernel module methods.
+			NOTE: Methods ending in ? or !
+				are included below as regexes.
+		-->
+		<list name="kernel-methods">
+			<!-- backquote ` -->
+			<item> abort </item>
+			<item> at_exit </item>
+			<item> autoload </item>
+			<item> autoload? </item>
+			<item> binding </item>
+			<item> block_given? </item>
+			<item> callcc </item>
+			<item> caller </item>
+			<item> catch </item>
+			<item> chomp </item>
+			<item> chomp! </item>
+			<item> chop </item>
+			<item> chop! </item>
+			<item> eval </item>
+			<item> exec </item>
+			<item> exit </item>
+			<item> exit! </item>
+			<item> fail </item>
+			<item> fork </item>
+			<item> format </item>
+			<item> getc </item>
+			<item> gets </item>
+			<item> global_variables </item>
+			<item> gsub </item>
+			<item> gsub! </item>
+			<item> iterator? </item>
+			<item> lambda </item>
+			<item> load </item>
+			<item> local_variables </item>
+			<item> loop </item>
+			<item> method_missing </item>
+			<item> open </item>
+			<item> p </item>
+			<item> print </item>
+			<item> printf </item>
+			<item> proc </item>
+			<item> putc </item>
+			<item> puts </item>
+			<item> raise </item>
+			<item> rand </item>
+			<item> readline </item>
+			<item> readlines </item>
+			<item> require </item>
+			<item> scan </item>
+			<item> select </item>
+			<item> set_trace_func </item>
+			<item> sleep </item>
+			<item> split </item>
+			<item> sprintf </item>
+			<item> srand </item>
+			<item> sub </item>
+			<item> sub! </item>
+			<item> syscall </item>
+			<item> system </item>
+			<item> test </item>
+			<item> throw </item>
+			<item> trace_var </item>
+			<item> trap </item>
+			<item> untrace_var </item>
+			<item> warn </item>
+		</list>
+		
+		<list name="attention">
+			<item> TODO </item>
+			<item> FIXME </item>
+			<item> NOTE </item>
+		</list>
+		
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<!-- ruby ignores newline after \ -->
+				<LineContinue attribute="Normal Text" context="Line Continue"/>
+				
+				<!-- __END__ token on own line. -->
+				<RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/>
+			
+				<!-- "shebang" line -->
+				<RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>
+				
+				<!-- "def" - "end" blocks -->
+				<!-- check for statement modifiers with regexes -->
+				<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bclass\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bmodule\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bbegin\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bcase\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bdo\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bdef\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bend\b" context="#stay" endRegion="def block"/>
+				<!-- elsif/else close the current block and start a new one -->
+				<RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>
+				
+				<StringDetect attribute="Operator" String="..." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
+				
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>
+				
+				<!-- Check for "ASCII code operator". e.g.: ?a -->
+				<RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="check_div_1"/>
+				
+				<keyword attribute="Keyword" String="keywords" context="#stay"/>
+				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="check_div_2"/>
+				<keyword attribute="Access Control" String="access-control" context="check_div_2"/>
+				<keyword attribute="Definition" String="definitions"  context="#stay" />
+				<keyword attribute="Pseudo variable" String="pseudo-variables"  context="check_div_1"/>
+				<keyword attribute="Default globals" String="default-globals" context="check_div_2"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="check_div_2"/>
+				
+				<!-- (global) vars starting with $
+						Match them before $_.
+				-->
+				<RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+" context="check_div_1"/>
+				<RegExpr attribute="Global Variable" String="\$\-[a-zA-z_]\b" context="check_div_1"/>
+				<!-- special-character globals -->
+				<RegExpr attribute="Default globals" String="\$[\d_*`\!:?'/\\\-\&amp;&quot;]" context="check_div_1"/>
+				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>
+				
+				<RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="check_div_1"/>
+				<RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="check_div_1"/>
+				<RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="check_div_1"/>
+				<RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="check_div_1"/>
+				<RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="check_div_1"/>
+				<Int attribute="Dec" context="check_div_1"/>
+				<HlCChar attribute="Char" context="check_div_1"/>
+				
+				<!-- Check for =begin before assignment operator. -->
+				<RegExpr attribute="Blockcomment" String="^=begin(?:\s|$)" context="Embedded documentation" beginRegion="comment block" column="0"/>
+				
+				<!-- recognize the beginning of a HEREDOC
+					This uses new features in Kate 2.3 and later
+					
+					There is no other chance of keeping heredoc apart from the
+					push operator '<<' than requiring to put space between the operator
+					and the string.
+				-->
+				<RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*&lt;&lt;-(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+				<RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+				
+				<DetectChar attribute="Operator" char="." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+				<RegExpr attribute="Operator" String="\s[\?\:\%]\s" context="#stay"/>
+				<RegExpr attribute="Operator" String="[|&amp;&lt;&gt;\^\+*~\-=]+" context="#stay"/>
+				<!-- regexp hack -->
+				<RegExpr attribute="Operator" String="\s!" context="#stay"/>
+				<RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/>
+				<StringDetect attribute="Operator" String="%=" context="#stay" insensitive="0"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
+				
+				<RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?" context="check_div_1"/>
+				<RegExpr attribute="Symbol" String=":\[\]=?" contex="check_div_1"/>
+				
+				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
+				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+				
+				<StringDetect attribute="Normal Text" String="?#" context="#stay"/>
+				
+				<RegExpr attribute="Comment" String="#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+				
+				<DetectChar attribute="Delimiter" char="["  context="#stay"/>
+				<DetectChar attribute="Delimiter" char="]"  context="check_div_1"/>
+				<DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/>
+				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
+				
+				<RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="check_div_1"/>
+				<RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="check_div_1"/>
+				
+				<!-- handle the different regular expression formats -->
+				<DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>
+				
+				<!-- recognize the beginning of a general delimited input format -->
+				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
+				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[Qqxw]?[^\s])" beginRegion="GdlInput" />
+				
+				<DetectChar attribute="Normal Text" char=")" context="check_div_1"/>
+				<DetectIdentifier attribute="Normal Text" context="check_div_2"/>
+
+			</context>
+			
+			<!-- In the following contexts, a slash character ('/') is a division operator -->
+			<!-- Everywhere else, it's a regular expression delimiter -->
+			
+			<!-- A slash is always a division operator, even if preceeded by whitespace -->
+			<context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
+				<RegExpr attribute="Normal Text" String="\s*" context="#stay"/>
+				<AnyChar attribute="Operator" String="/%" context="#pop"/>
+			</context>
+			
+			<!-- Same as check_div_1, but with double pop to exit the surrounding context -->
+			<context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+				<RegExpr attribute="Normal Text" String="\s*" context="#stay"/>
+				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
+			</context>
+
+			<!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->
+			<context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
+				<AnyChar attribute="Operator" String="/%" context="#pop"/>
+				<RegExpr attribute="Normal Text" String="\s+" context="check_div_2_internal"/>
+			</context>
+			
+			<!-- Internal context used by check_div_2 -->
+			<context name="check_div_2_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+<!-- 				<DetectChar attribute="Operator" char="%" context="#pop#pop"/> -->
+				<RegExpr attribute="Operator" String="[/%](?=\s)" context="#pop#pop"/>
+			</context>
+			
+			<!-- Same as check_div_2, but with double pop to exit the surrounding context -->
+			<context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
+				<RegExpr attribute="Normal Text" String="\s+" context="check_div_2_pop_internal"/>
+			</context>
+			
+			<!-- Internal context used by check_div_2_pop -->
+			<context name="check_div_2_pop_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#pop#pop#pop">
+				<DetectChar attribute="Operator" char="%" context="#pop#pop#pop"/>
+				<RegExpr attribute="Operator" String="/(?=\s)" context="#pop#pop#pop"/>
+			</context>
+
+			<context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/>
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Operator" char="}" context="check_div_1_pop" endRegion="def block"/>
+				<IncludeRules context="Normal"/>
+			</context>
+			
+			<context name="Quoted String" attribute="String" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\&quot;" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<DetectChar char="&quot;" attribute="String" context="check_div_1_pop"/>
+			</context>
+			
+			<context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\'" context="#stay"/>
+				<DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/>
+			</context>
+			
+			<context name="Command String" attribute="Command" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\`" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<DetectChar char="`" attribute="Command" context="check_div_1_pop"/>
+			</context>
+			
+			<context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay">
+				<RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>
+			</context>
+			
+			<context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
+				<RegExpr attribute="Regular Expression" String="\\\/" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="check_div_1_pop"/>
+			</context>
+			
+			<!-- Substitutions can be nested -->
+			<context name="Subst" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Substitution" char="}" context="#pop"/>
+				<!-- Highlight substitution as code. -->
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="Short Subst" attribute="Substitution" lineEndContext="#pop">
+				<!-- Check for e.g.: "#@var#@@xy" -->
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>
+				<RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>
+			</context>
+			
+			<!-- This handles access of nested module classes and class methods -->
+			<context name="Member Access" attribute="Member" lineEndContext="#pop">
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="check_div_2_pop"/>
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="check_div_2_pop"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="check_div_2_pop"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
+				<DetectChar attribute="Member" char="." context="#stay"/>
+				
+				<AnyChar attribute="Operator" String="=+-*/%|&amp;[]{}~" context="#pop"/>
+				<DetectChar attribute="Comment" char="#" context="#pop"/>
+				<AnyChar attribute="Normal Text" String="()\" context="#pop"/>
+				<RegExpr attribute="Member" String="\W" context="#pop"/>
+			</context>
+			
+			<context name="Comment Line" attribute="Comment" lineEndContext="#pop">
+				<RegExpr attribute="Comment" String="\w\:\:\s" context="RDoc Label"/>
+				<keyword attribute="Alert" String="attention" context="#stay"/>
+			</context>
+			
+			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
+				<keyword attribute="Dec" String="attention" context="#stay"/>
+			</context>
+			
+			<context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>
+			
+			<!-- HEREDOC support
+				The contexts below support both normal and indented heredocs
+			 -->
+			<!-- here we markup the heredoc markers -->
+			<context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" >
+				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="normal_heredoc" String="&quot;?(\w+)&quot;?" />
+			</context>
+			<context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" >
+				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="indented_heredoc" String="&quot;?(\w+)&quot;?" />
+			</context>
+			<!-- these are the real heredoc contexts -->
+			<context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+			</context>
+			
+			<context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+			</context>
+			
+			<!-- rules for heredoc types -->
+			<context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- General delimited input support
+				The contexts below handle the various gdl formats
+			 -->
+			<context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">
+				
+				<!-- handle token arrays -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_1" String="w\(" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_2" String="w\{" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_3" String="w\[" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_4" String="w&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />
+				
+				<!-- handle apostrophed strings -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_1" String="q\(" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_2" String="q\{" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_3" String="q\[" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_4" String="q&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />
+				
+				<!-- handle shell commands -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_1" String="x\(" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_2" String="x\{" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_3" String="x\[" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_4" String="x&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />
+				
+				<!-- handle regular expressions -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_1" String="r\(" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_2" String="r\{" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_3" String="r\[" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_4" String="r&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />
+				
+				<!-- handle double-quoted strings -->
+				<!-- 
+					  be careful to make this the last GDL ruleset, because the rule for
+					  the short form %?foo? will otherwise catch any of the other formats
+				-->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_1" String="Q?\(" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_2" String="Q?\{" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_3" String="Q?\[" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_4" String="Q?&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />
+				
+			</context>
+			<!-- double-quoted string specific contexts follow -->
+			<context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			<!-- note that here substitution should win over nesting -->
+			<context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+			</context>
+			<context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+	
+			<context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+	
+			<context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="dq_string_rules" />
+				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			<!-- rules to be included in all dq_string contexts -->
+			<context name="dq_string_rules" attribute="String" lineEndContext="#stay" >
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- token array specific contexts -->
+			
+			<context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+			</context>
+			<context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="token_array_rules" />
+				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all token_array contexts -->
+			<context name="token_array_rules" attribute="String" lineEndContext="#stay" >
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+			</context>
+			
+			<!-- apostrophed string specific contexts -->
+			
+			<context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="Raw String" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+			</context>
+			<context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+				<DetectChar attribute="Raw String" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="Raw String" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="Raw String" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="apostrophed_rules" />
+				<RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all apostrophed contexts -->
+			<context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >
+				<Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>
+			</context>
+			
+			<!-- shell command specific contexts -->
+			
+			<context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="Command" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+			</context>
+			<context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+				<DetectChar attribute="Command" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="Command" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="Command" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="shell_command_rules" />
+				<RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all shell_command contexts -->
+			<context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >
+				<Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- regular expression specific contexts -->
+			
+			<context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<DetectChar attribute="Regular Expression" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+			</context>
+			<context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="regexpr_rules" />
+				<RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all regexpr contexts -->
+			<context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >
+				<Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- END of General delimited input support -->
+			
+			<!-- handle data in script -->
+			<context name="DATA" attribute="Data" lineEndContext="#stay"/>
+		</contexts>
+		
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"/>
+			
+			<itemData name="Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
+			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>
+			<itemData name="Definition" defStyleNum="dsKeyword"/>
+			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+			
+			<itemData name="Dec" defStyleNum="dsDecVal"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Char" defStyleNum="dsChar"/>
+			<itemData name="Octal" defStyleNum="dsBaseN"/>
+			<itemData name="Hex" defStyleNum="dsBaseN"/>
+			<itemData name="Bin" defStyleNum="dsBaseN"/>
+			
+			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>
+			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>
+			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->
+			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>
+			<itemData name="Substitution"	defStyleNum="dsOthers"/>
+			<itemData name="Data" defStyleNum="dsNormal"/>
+			<!-- short for 'general delimited input' -->
+			<itemData name="GDL input" defStyleNum="dsOthers" />
+			
+			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>
+			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>
+			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>
+			<itemData name="Constant" defStyleNum="dsDataType"/>
+			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>
+			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->
+			<itemData name="Member" defStyleNum="dsNormal"/>
+			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
+			<itemData name="Class Variable" defStyleNum="dsOthers"/>
+			
+			<itemData name="Comment" defStyleNum="dsComment"/>
+			<itemData name="Blockcomment" defStyleNum="dsComment"/>
+			<itemData name="Region Marker" defStyleNum="dsNormal" color="#0000ff"/>
+			<itemData name="RDoc Value" defStyleNum="dsOthers"/>
+			
+			<itemData name="Here Document" defStyleNum="dsOthers"/>
+			
+			<!-- use these to mark errors and alerts things -->
+			<itemData name="Error" defStyleNum="dsError" />
+			<itemData name="Alert" defStyleNum="dsAlert" />
+			
+			<itemData name="Delimiter" defStyleNum="dsNormal" color="#FF9FEC"/>
+			<itemData name="Expression" defStyleNum="dsOthers"/>
+			<itemData name="Operator" defStyleNum="dsNormal" color="#FF9FEC"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="#"/>
+		</comments>
+		<keywords casesensitive="1" weakDeliminator="!?"/> 
+	</general>
+</language>
diff --git a/src/plugins/genericeditor/XML/sql.xml b/src/plugins/genericeditor/XML/sql.xml
new file mode 100644
index 00000000000..70a9f11ce90
--- /dev/null
+++ b/src/plugins/genericeditor/XML/sql.xml
@@ -0,0 +1,951 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Oracle10g SQL and PL/SQL syntax - ANSI SQL 2003 superset -->
+<!-- This file is maintained by Anders Lund <anders@alweb.dk> since 2005-11-06 -->
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+<language name="SQL" version="1.13" kateversion="2.4" section="Database" extensions="*.sql;*.SQL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <item> ACCESS </item>
+      <item> ACCOUNT </item>
+      <item> ADD </item>
+      <item> ADMIN </item>
+      <item> ADMINISTER </item>
+      <item> ADVISE </item>
+      <item> AFTER </item>
+      <item> AGENT </item>
+      <item> ALL </item>
+      <item> ALL_ROWS </item>
+      <item> ALLOCATE </item>
+      <item> ALTER </item>
+      <item> ANALYZE </item>
+      <item> ANCILLARY </item>
+      <item> AND </item>
+      <item> ANY </item>
+      <item> ARCHIVE </item>
+      <item> ARCHIVELOG </item>
+      <item> AS </item>
+      <item> ASC </item>
+      <item> ASSERTION </item>
+      <item> ASSOCIATE </item>
+      <item> AT </item>
+      <item> ATTRIBUTE </item>
+      <item> ATTRIBUTES </item>
+      <item> AUDIT </item>
+      <item> AUTHENTICATED </item>
+      <item> AUTHID </item>
+      <item> AUTHORIZATION </item>
+      <item> AUTOALLOCATE </item>
+      <item> AUTOEXTEND </item>
+      <item> AUTOMATIC </item>
+      <item> BACKUP </item>
+      <item> BECOME </item>
+      <item> BEFORE </item>
+      <item> BEGIN </item>
+      <item> BEHALF </item>
+      <item> BETWEEN </item>
+      <item> BINDING </item>
+      <item> BITMAP </item>
+      <item> BLOCK </item>
+      <item> BLOCK_RANGE </item>
+      <item> BODY </item>
+      <item> BOUND </item>
+      <item> BOTH </item>
+      <item> BREAK </item>
+      <item> BROADCAST </item>
+      <item> BTITLE </item>
+      <item> BUFFER_POOL </item>
+      <item> BUILD </item>
+      <item> BULK </item>
+      <item> BY </item>
+      <item> CACHE </item>
+      <item> CACHE_INSTANCES </item>
+      <item> CALL </item>
+      <item> CANCEL </item>
+      <item> CASCADE </item>
+      <item> CASE </item>
+      <item> CATEGORY </item>
+      <item> CHAINED </item>
+      <item> CHANGE </item>
+      <item> CHECK </item>
+      <item> CHECKPOINT </item>
+      <item> CHILD </item>
+      <item> CHOOSE </item>
+      <item> CHUNK </item>
+      <item> CLASS </item>
+      <item> CLEAR </item>
+      <item> CLONE </item>
+      <item> CLOSE </item>
+      <item> CLOSE_CACHED_OPEN_CURSORS </item>
+      <item> CLUSTER </item>
+      <item> COALESCE </item>
+      <item> COLUMN </item>
+      <item> COLUMNS </item>
+      <item> COLUMN_VALUE </item>
+      <item> COMMENT </item>
+      <item> COMMIT </item>
+      <item> COMMITTED </item>
+      <item> COMPATIBILITY </item>
+      <item> COMPILE </item>
+      <item> COMPLETE </item>
+      <item> COMPOSITE_LIMIT </item>
+      <item> COMPRESS </item>
+      <item> COMPUTE </item>
+      <item> CONNECT </item>
+      <item> CONNECT_TIME </item>
+      <item> CONSIDER </item>
+      <item> CONSISTENT </item>
+      <item> CONSTANT </item>
+      <item> CONSTRAINT </item>
+      <item> CONSTRAINTS </item>
+      <item> CONTAINER </item>
+      <item> CONTENTS </item>
+      <item> CONTEXT </item>
+      <item> CONTINUE </item>
+      <item> CONTROLFILE </item>
+      <item> COPY </item>
+      <item> COST </item>
+      <item> CPU_PER_CALL </item>
+      <item> CPU_PER_SESSION </item>
+      <item> CREATE </item>
+      <item> CREATE_STORED_OUTLINES </item>
+      <item> CROSS </item>
+      <item> CUBE </item>
+      <item> CURRENT </item>
+      <item> CURSOR </item>
+      <item> CYCLE </item>
+      <item> DANGLING </item>
+      <item> DATA </item>
+      <item> DATABASE </item>
+      <item> DATAFILE </item>
+      <item> DATAFILES </item>
+      <item> DBA </item>
+      <item> DDL </item>
+      <item> DEALLOCATE </item>
+      <item> DEBUG </item>
+      <item> DECLARE </item>
+      <item> DEFAULT </item>
+      <item> DEFERRABLE </item>
+      <item> DEFERRED </item>
+      <item> DEFINER </item>
+      <item> DEGREE </item>
+      <item> DELETE </item>
+      <item> DEMAND </item>
+      <item> DESC </item>
+      <item> DETERMINES </item>
+      <item> DICTIONARY </item>
+      <item> DIMENSION </item>
+      <item> DIRECTORY </item>
+      <item> DISABLE </item>
+      <item> DISASSOCIATE </item>
+      <item> DISCONNECT </item>
+      <item> DISKGROUP </item>
+      <item> DISMOUNT </item>
+      <item> DISTINCT </item>
+      <item> DISTRIBUTED </item>
+      <item> DOMAIN </item>
+      <item> DROP </item>
+      <item> DYNAMIC </item>
+      <item> EACH </item>
+      <item> ELSE </item>
+      <item> ELSIF </item>
+      <item> EMPTY </item>
+      <item> ENABLE </item>
+      <item> END </item>
+      <item> ENFORCE </item>
+      <item> ENTRY </item>
+      <item> ESCAPE </item>
+      <item> ESTIMATE </item>
+      <item> EVENTS </item>
+      <item> EXCEPT </item>
+      <item> EXCEPTION </item>
+      <item> EXCEPTIONS </item>
+      <item> EXCHANGE </item>
+      <item> EXCLUDING </item>
+      <item> EXCLUSIVE </item>
+      <item> EXEC </item>
+      <item> EXECUTE </item>
+      <item> EXISTS </item>
+      <item> EXPIRE </item>
+      <item> EXPLAIN </item>
+      <item> EXPLOSION </item>
+      <item> EXTENDS </item>
+      <item> EXTENT </item>
+      <item> EXTENTS </item>
+      <item> EXTERNALLY </item>
+      <item> FAILED_LOGIN_ATTEMPTS </item>
+      <item> FALSE </item>
+      <item> FAST </item>
+      <item> FILE </item>
+      <item> FILTER </item>
+      <item> FIRST_ROWS </item>
+      <item> FLAGGER </item>
+      <item> FLASHBACK </item>
+      <item> FLUSH </item>
+      <item> FOLLOWING </item>
+      <item> FOR </item>
+      <item> FORCE </item>
+      <item> FOREIGN </item>
+      <item> FREELIST </item>
+      <item> FREELISTS </item>
+      <item> FRESH </item>
+      <item> FROM </item>
+      <item> FULL </item>
+      <item> FUNCTION </item>
+      <item> FUNCTIONS </item>
+      <item> GENERATED </item>
+      <item> GLOBAL </item>
+      <item> GLOBALLY </item>
+      <item> GLOBAL_NAME </item>
+      <item> GRANT </item>
+      <item> GROUP </item>
+      <item> GROUPS </item>
+      <item> HASH </item>
+      <item> HASHKEYS </item>
+      <item> HAVING </item>
+      <item> HEADER </item>
+      <item> HEAP </item>
+      <item> HIERARCHY </item>
+      <item> HOUR </item>
+      <item> ID </item>
+      <item> IDENTIFIED </item>
+      <item> IDENTIFIER </item>
+      <item> IDGENERATORS </item>
+      <item> IDLE_TIME </item>
+      <item> IF </item>
+      <item> IMMEDIATE </item>
+      <item> IN </item>
+      <item> INCLUDING </item>
+      <item> INCREMENT </item>
+      <item> INCREMENTAL </item>
+      <item> INDEX </item>
+      <item> INDEXED </item>
+      <item> INDEXES </item>
+      <item> INDEXTYPE </item>
+      <item> INDEXTYPES </item>
+      <item> INDICATOR </item>
+      <item> INITIAL </item>
+      <item> INITIALIZED </item>
+      <item> INITIALLY </item>
+      <item> INITRANS </item>
+      <item> INNER </item>
+      <item> INSERT </item>
+      <item> INSTANCE </item>
+      <item> INSTANCES </item>
+      <item> INSTEAD </item>
+      <item> INTERMEDIATE </item>
+      <item> INTERSECT </item>
+      <item> INTO </item>
+      <item> INVALIDATE </item>
+      <item> IS </item>
+      <item> ISOLATION </item>
+      <item> ISOLATION_LEVEL </item>
+      <item> JAVA </item>
+      <item> JOIN </item>
+      <item> KEEP </item>
+      <item> KEY </item>
+      <item> KILL </item>
+      <item> LABEL </item>
+      <item> LAYER </item>
+      <item> LEADING </item>
+      <item> LEFT </item>
+      <item> LESS </item>
+      <item> LEVEL </item>
+      <item> LIBRARY </item>
+      <item> LIKE </item>
+      <item> LIMIT </item>
+      <item> LINK </item>
+      <item> LIST </item>
+      <item> LOCAL </item>
+      <item> LOCATOR </item>
+      <item> LOCK </item>
+      <item> LOCKED </item>
+      <item> LOGFILE </item>
+      <item> LOGGING </item>
+      <item> LOGICAL_READS_PER_CALL </item>
+      <item> LOGICAL_READS_PER_SESSION </item>
+      <item> LOGOFF </item>
+      <item> LOGON </item>
+      <item> LOOP </item>
+      <item> MANAGE </item>
+      <item> MANAGED </item>
+      <item> MANAGEMENT </item>
+      <item> MASTER </item>
+      <item> MATERIALIZED </item>
+      <item> MAXARCHLOGS </item>
+      <item> MAXDATAFILES </item>
+      <item> MAXEXTENTS </item>
+      <item> MAXINSTANCES </item>
+      <item> MAXLOGFILES </item>
+      <item> MAXLOGHISTORY </item>
+      <item> MAXLOGMEMBERS </item>
+      <item> MAXSIZE </item>
+      <item> MAXTRANS </item>
+      <item> MAXVALUE </item>
+      <item> METHOD </item>
+      <item> MEMBER </item>
+      <item> MERGE </item>
+      <item> MINIMIZE </item>
+      <item> MINIMUM </item>
+      <item> MINEXTENTS </item>
+      <item> MINUS </item>
+      <item> MINUTE </item>
+      <item> MINVALUE </item>
+      <item> MODE </item>
+      <item> MODIFY </item>
+      <item> MONITORING </item>
+      <item> MOUNT </item>
+      <item> MOVE </item>
+      <item> MOVEMENT </item>
+      <item> MTS_DISPATCHERS </item>
+      <item> MULTISET </item>
+      <item> NAMED </item>
+      <item> NATURAL </item>
+      <item> NEEDED </item>
+      <item> NESTED </item>
+      <item> NESTED_TABLE_ID </item>
+      <item> NETWORK </item>
+      <item> NEVER </item>
+      <item> NEW </item>
+      <item> NEXT </item>
+      <item> NLS_CALENDAR </item>
+      <item> NLS_CHARACTERSET </item>
+      <item> NLS_COMP </item>
+      <item> NLS_CURRENCY </item>
+      <item> NLS_DATE_FORMAT </item>
+      <item> NLS_DATE_LANGUAGE </item>
+      <item> NLS_ISO_CURRENCY </item>
+      <item> NLS_LANG </item>
+      <item> NLS_LANGUAGE </item>
+      <item> NLS_NUMERIC_CHARACTERS </item>
+      <item> NLS_SORT </item>
+      <item> NLS_SPECIAL_CHARS </item>
+      <item> NLS_TERRITORY </item>
+      <item> NO </item>
+      <item> NOARCHIVELOG </item>
+      <item> NOAUDIT </item>
+      <item> NOCACHE </item>
+      <item> NOCOMPRESS </item>
+      <item> NOCYCLE </item>
+      <item> NOFORCE </item>
+      <item> NOLOGGING </item>
+      <item> NOMAXVALUE </item>
+      <item> NOMINIMIZE </item>
+      <item> NOMINVALUE </item>
+      <item> NOMONITORING </item>
+      <item> NONE </item>
+      <item> NOORDER </item>
+      <item> NOOVERRIDE </item>
+      <item> NOPARALLEL </item>
+      <item> NORELY </item>
+      <item> NORESETLOGS </item>
+      <item> NOREVERSE </item>
+      <item> NORMAL </item>
+      <item> NOSEGMENT </item>
+      <item> NOSORT </item>
+      <item> NOT </item>
+      <item> NOTHING </item>
+      <item> NOVALIDATE </item>
+      <item> NOWAIT </item>
+      <item> NULL </item>
+      <item> NULLS </item>
+      <item> OBJNO </item>
+      <item> OBJNO_REUSE </item>
+      <item> OF </item>
+      <item> OFF </item>
+      <item> OFFLINE </item>
+      <item> OID </item>
+      <item> OIDINDEX </item>
+      <item> OLD </item>
+      <item> ON </item>
+      <item> ONLINE </item>
+      <item> ONLY </item>
+      <item> OPCODE </item>
+      <item> OPEN </item>
+      <item> OPERATOR </item>
+      <item> OPTIMAL </item>
+      <item> OPTIMIZER_GOAL </item>
+      <item> OPTION </item>
+      <item> OR </item>
+      <item> ORDER </item>
+      <item> ORGANIZATION </item>
+      <item> OUT </item>
+      <item> OUTER </item>
+      <item> OUTLINE </item>
+      <item> OVER </item>
+      <item> OVERFLOW </item>
+      <item> OVERLAPS </item>
+      <item> OWN </item>
+      <item> PACKAGE </item>
+      <item> PACKAGES </item>
+      <item> PARALLEL </item>
+      <item> PARAMETERS </item>
+      <item> PARENT </item>
+      <item> PARTITION </item>
+      <item> PARTITIONS </item>
+      <item> PARTITION_HASH </item>
+      <item> PARTITION_RANGE </item>
+      <item> PASSWORD </item>
+      <item> PASSWORD_GRACE_TIME </item>
+      <item> PASSWORD_LIFE_TIME </item>
+      <item> PASSWORD_LOCK_TIME </item>
+      <item> PASSWORD_REUSE_MAX </item>
+      <item> PASSWORD_REUSE_TIME </item>
+      <item> PASSWORD_VERIFY_FUNCTION </item>
+      <item> PCTFREE </item>
+      <item> PCTINCREASE </item>
+      <item> PCTTHRESHOLD </item>
+      <item> PCTUSED </item>
+      <item> PCTVERSION </item>
+      <item> PERCENT </item>
+      <item> PERMANENT </item>
+      <item> PLAN </item>
+      <item> PLSQL_DEBUG </item>
+      <item> POST_TRANSACTION </item>
+      <item> PREBUILT </item>
+      <item> PRECEDING </item>
+      <item> PREPARE </item>
+      <item> PRESENT </item>
+      <item> PRESERVE </item>
+      <item> PREVIOUS </item>
+      <item> PRIMARY </item>
+      <item> PRIOR </item>
+      <item> PRIVATE </item>
+      <item> PRIVATE_SGA </item>
+      <item> PRIVILEGE </item>
+      <item> PRIVILEGES </item>
+      <item> PROCEDURE </item>
+      <item> PROFILE </item>
+      <item> PUBLIC </item>
+      <item> PURGE </item>
+      <item> QUERY </item>
+      <item> QUEUE </item>
+      <item> QUOTA </item>
+      <item> RANDOM </item>
+      <item> RANGE </item>
+      <item> RBA </item>
+      <item> READ </item>
+      <item> READS </item>
+      <item> REBUILD </item>
+      <item> RECORDS_PER_BLOCK </item>
+      <item> RECOVER </item>
+      <item> RECOVERABLE </item>
+      <item> RECOVERY </item>
+      <item> RECYCLE </item>
+      <item> REDUCED </item>
+      <item> REFERENCES </item>
+      <item> REFERENCING </item>
+      <item> REFRESH </item>
+      <item> RELY </item>
+      <item> RENAME </item>
+      <item> REPLACE </item>
+      <item> RESET </item>
+      <item> RESETLOGS </item>
+      <item> RESIZE </item>
+      <item> RESOLVE </item>
+      <item> RESOLVER </item>
+      <item> RESOURCE </item>
+      <item> RESTRICT </item>
+      <item> RESTRICTED </item>
+      <item> RESUME </item>
+      <item> RETURN </item>
+      <item> RETURNING </item>
+      <item> REUSE </item>
+      <item> REVERSE </item>
+      <item> REVOKE </item>
+      <item> REWRITE </item>
+      <item> RIGHT </item>
+      <item> ROLE </item>
+      <item> ROLES </item>
+      <item> ROLLBACK </item>
+      <item> ROLLUP </item>
+      <item> ROW </item>
+      <item> ROWNUM </item>
+      <item> ROWS </item>
+      <item> RULE </item>
+      <item> SAMPLE </item>
+      <item> SAVEPOINT </item>
+      <item> SCAN </item>
+      <item> SCAN_INSTANCES </item>
+      <item> SCHEMA </item>
+      <item> SCN </item>
+      <item> SCOPE </item>
+      <item> SD_ALL </item>
+      <item> SD_INHIBIT </item>
+      <item> SD_SHOW </item>
+      <item> SEGMENT </item>
+      <item> SEG_BLOCK </item>
+      <item> SEG_FILE </item>
+      <item> SELECT </item>
+      <item> SELECTIVITY </item>
+      <item> SEQUENCE </item>
+      <item> SERIALIZABLE </item>
+      <item> SERVERERROR </item>
+      <item> SESSION </item>
+      <item> SESSION_CACHED_CURSORS </item>
+      <item> SESSIONS_PER_USER </item>
+      <item> SET </item>
+      <item> SHARE </item>
+      <item> SHARED </item>
+      <item> SHARED_POOL </item>
+      <item> SHRINK </item>
+      <item> SHUTDOWN </item>
+      <item> SINGLETASK </item>
+      <item> SIZE </item>
+      <item> SKIP </item>
+      <item> SKIP_UNUSABLE_INDEXES </item>
+      <item> SNAPSHOT </item>
+      <item> SOME </item>
+      <item> SORT </item>
+      <item> SOURCE </item>
+      <item> SPECIFICATION </item>
+      <item> SPLIT </item>
+      <item> SQL_TRACE </item>
+      <item> STANDBY </item>
+      <item> START </item>
+      <item> STARTUP </item>
+      <item> STATEMENT_ID </item>
+      <item> STATISTICS </item>
+      <item> STATIC </item>
+      <item> STOP </item>
+      <item> STORAGE </item>
+      <item> STORE </item>
+      <item> STRUCTURE </item>
+      <item> SUBMULTISET </item>
+      <item> SUBPARTITION </item>
+      <item> SUBPARTITIONS </item>
+      <item> SUCCESSFUL </item>
+      <item> SUMMARY </item>
+      <item> SUPPLEMENTAL </item>
+      <item> SUSPEND </item>
+      <item> SWITCH </item>
+      <item> SYS_OP_BITVEC </item>
+      <item> SYS_OP_ENFORCE_NOT_NULL$ </item>
+      <item> SYS_OP_NOEXPAND </item>
+      <item> SYS_OP_NTCIMG$ </item>
+      <item> SYNONYM </item>
+      <item> SYSDBA </item>
+      <item> SYSOPER </item>
+      <item> SYSTEM </item>
+      <item> TABLE </item>
+      <item> TABLES </item>
+      <item> TABLESPACE </item>
+      <item> TABLESPACE_NO </item>
+      <item> TABNO </item>
+      <item> TEMPFILE </item>
+      <item> TEMPORARY </item>
+      <item> THAN </item>
+      <item> THE </item>
+      <item> THEN </item>
+      <item> THREAD </item>
+      <item> THROUGH </item>
+      <item> TIMEOUT </item>
+      <item> TIMEZONE_HOUR </item>
+      <item> TIMEZONE_MINUTE </item>
+      <item> TIME_ZONE </item>
+      <item> TO </item>
+      <item> TOPLEVEL </item>
+      <item> TRACE </item>
+      <item> TRACING </item>
+      <item> TRAILING </item>
+      <item> TRANSACTION </item>
+      <item> TRANSITIONAL </item>
+      <item> TRIGGER </item>
+      <item> TRIGGERS </item>
+      <item> TRUE </item>
+      <item> TRUNCATE </item>
+      <item> TYPE </item>
+      <item> TYPES </item>
+      <item> UNARCHIVED </item>
+      <item> UNBOUND </item>
+      <item> UNBOUNDED </item>
+      <item> UNDO </item>
+      <item> UNIFORM </item>
+      <item> UNION </item>
+      <item> UNIQUE </item>
+      <item> UNLIMITED </item>
+      <item> UNLOCK </item>
+      <item> UNRECOVERABLE </item>
+      <item> UNTIL </item>
+      <item> UNUSABLE </item>
+      <item> UNUSED </item>
+      <item> UPD_INDEXES </item>
+      <item> UPDATABLE </item>
+      <item> UPDATE </item>
+      <item> UPPPER </item>
+      <item> USAGE </item>
+      <item> USE </item>
+      <item> USE_STORED_OUTLINES </item>
+      <item> USER_DEFINED </item>
+      <item> USING </item>
+      <item> VALIDATE </item>
+      <item> VALIDATION </item>
+      <item> VALUES </item>
+      <item> VIEW </item>
+      <item> WHEN </item>
+      <item> WHENEVER </item>
+      <item> WHERE </item>
+      <item> WITH </item>
+      <item> WITHOUT </item>
+      <item> WORK </item>
+      <item> WRITE </item>
+    </list>
+    <list name="operators">
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+      <item> / </item>
+      <item> || </item>
+      <item> = </item>
+      <item> != </item>
+      <item> &lt;&gt; </item>
+      <item> &lt; </item>
+      <item> &lt;= </item>
+      <item> &gt; </item>
+      <item> &gt;= </item>
+      <item> ~= </item>
+      <item> ^= </item>
+      <item> := </item>
+      <item> =&gt; </item>
+      <item> ** </item>
+      <item> .. </item>
+    </list>
+    <list name="functions">
+      <item> ABS </item>
+      <item> ACOS </item>
+      <item> ADD_MONTHS </item>
+      <item> ASCII </item>
+      <item> ASCIISTR </item>
+      <item> ASIN </item>
+      <item> ATAN </item>
+      <item> ATAN2 </item>
+      <item> AVG </item>
+      <item> BFILENAME </item>
+      <item> BIN_TO_NUM </item>
+      <item> BITAND </item>
+      <item> CARDINALITY </item>
+      <item> CAST </item>
+      <item> CEIL </item>
+      <item> CHARTOROWID </item>
+      <item> CHR </item>
+      <item> COALESCE </item>
+      <item> COLLECT </item>
+      <item> COMPOSE </item>
+      <item> CONCAT </item>
+      <item> CONVERT </item>
+      <item> CORR </item>
+      <item> CORR_K </item>
+      <item> CORR_S </item>
+      <item> COS </item>
+      <item> COSH </item>
+      <item> COUNT </item>
+      <item> COVAR_POP </item>
+      <item> COVAR_SAMP </item>
+      <item> CUME_DIST </item>
+      <item> CURRENT_DATE </item>
+      <item> CURRENT_TIMESTAMP </item>
+      <item> CV </item>
+      <item> DBTIMEZONE </item>
+      <item> DECODE </item>
+      <item> DECOMPOSE </item>
+      <item> DENSE_RANK </item>
+      <item> DEPTH </item>
+      <item> DEREF </item>
+      <item> DUMP </item>
+      <item> EMPTY_BLOB </item>
+      <item> EMPTY_CLOB </item>
+      <item> EXISTSNODE </item>
+      <item> EXP </item>
+      <item> EXTRACT </item>
+      <item> EXTRACTVALUE </item>
+      <item> FIRST </item>
+      <item> FIRST_VALUE </item>
+      <item> FLOOR </item>
+      <item> FROM_TZ </item>
+      <item> GREATEST </item>
+      <item> GROUP_ID </item>
+      <item> GROUPING </item>
+      <item> GROUPING_ID </item>
+      <item> HEXTORAW </item>
+      <item> INITCAP </item>
+      <item> INSTR </item>
+      <item> INSTRB </item>
+      <item> LAG </item>
+      <item> LAST </item>
+      <item> LAST_DAY </item>
+      <item> LAST_VALUE </item>
+      <item> LEAD </item>
+      <item> LEAST </item>
+      <item> LENGTH </item>
+      <item> LENGTHB </item>
+      <item> LN </item>
+      <item> LNNVL </item>
+      <item> LOCALTIMESTAMP </item>
+      <item> LOG </item>
+      <item> LOWER </item>
+      <item> LPAD </item>
+      <item> LTRIM </item>
+      <item> MAKE_REF </item>
+      <item> MAX </item>
+      <item> MEDIAN </item>
+      <item> MIN </item>
+      <item> MOD </item>
+      <item> MONTHS_BETWEEN </item>
+      <item> NANVL </item>
+      <item> NCHR </item>
+      <item> NEW_TIME </item>
+      <item> NEXT_DAY </item>
+      <item> NLS_CHARSET_DECL_LEN </item>
+      <item> NLS_CHARSET_ID </item>
+      <item> NLS_CHARSET_NAME </item>
+      <item> NLS_INITCAP </item>
+      <item> NLS_LOWER </item>
+      <item> NLS_UPPER </item>
+      <item> NLSSORT </item>
+      <item> NTILE </item>
+      <item> NULLIF </item>
+      <item> NUMTODSINTERVAL </item>
+      <item> NUMTOYMINTERVAL </item>
+      <item> NVL </item>
+      <item> NVL2 </item>
+      <item> ORA_HASH </item>
+      <item> ORA_ROWSCN </item>
+      <item> PERCENT_RANK </item>
+      <item> PERCENTILE_CONT </item>
+      <item> PERCENTILE_DISC </item>
+      <item> POWER </item>
+      <item> POWERMULTISET </item>
+      <item> POWERMULTISET_BY_CARDINALITY </item>
+      <item> PRESENTNNV </item>
+      <item> PRESENTV </item>
+      <item> RANK </item>
+      <item> RATIO_TO_REPORT </item>
+      <item> RAWTOHEX </item>
+      <item> RAWTONHEX </item>
+      <item> REF </item>
+      <item> REFTOHEX </item>
+      <item> REGEXP_INSTR </item>
+      <item> REGEXP_LIKE </item>
+      <item> REGEXP_REPLACE </item>
+      <item> REGEXP_SUBSTR </item>
+      <item> REGR_SLOPE </item>
+      <item> REGR_INTERCEPT </item>
+      <item> REGR_COUNT </item>
+      <item> REGR_R2 </item>
+      <item> REGR_AVGX </item>
+      <item> REGR_AVGY </item>
+      <item> REGR_SXX </item>
+      <item> REGR_SYY </item>
+      <item> REGR_SXY </item>
+      <item> REMAINDER </item>
+      <item> ROUND </item>
+      <item> ROW_NUMBER </item>
+      <item> ROWIDTOCHAR </item>
+      <item> ROWIDTONCHAR </item>
+      <item> RPAD </item>
+      <item> RTRIM </item>
+      <item> SCN_TO_TIMESTAMP </item>
+      <item> SESSIONTIMEZONE </item>
+      <item> SIGN </item>
+      <item> SIN </item>
+      <item> SINH </item>
+      <item> SOUNDEX </item>
+      <item> SQRT </item>
+      <item> STATS_BINOMIAL_TEST </item>
+      <item> STATS_CROSSTAB </item>
+      <item> STATS_F_TEST </item>
+      <item> STATS_KS_TEST </item>
+      <item> STATS_MODE </item>
+      <item> STATS_MW_TEST </item>
+      <item> STATS_ONE_WAY_ANOVA </item>
+      <item> STATS_T_TEST_ONE </item>
+      <item> STATS_T_TEST_PAIRED </item>
+      <item> STATS_T_TEST_INDEP </item>
+      <item> STATS_T_TEST_INDEPU </item>
+      <item> STATS_WSR_TEST </item>
+      <item> STDDEV </item>
+      <item> STDDEV_POP </item>
+      <item> STDDEV_SAMP </item>
+      <item> SUBSTR </item>
+      <item> SUBSTRB </item>
+      <item> SUM </item>
+      <item> SYS_CONNECT_BY_PATH </item>
+      <item> SYS_CONTEXT </item>
+      <item> SYS_DBURIGEN </item>
+      <item> SYS_EXTRACT_UTC </item>
+      <item> SYS_GUID </item>
+      <item> SYS_TYPEID </item>
+      <item> SYS_XMLAGG </item>
+      <item> SYS_XMLGEN </item>
+      <item> SYSDATE </item>
+      <item> SYSTIMESTAMP </item>
+      <item> TAN </item>
+      <item> TANH </item>
+      <item> TIMESTAMP_TO_SCN </item>
+      <item> TO_BINARY_DOUBLE </item>
+      <item> TO_BINARY_FLOAT </item>
+      <item> TO_CHAR </item>
+      <item> TO_CLOB </item>
+      <item> TO_DATE </item>
+      <item> TO_DSINTERVAL </item>
+      <item> TO_LOB </item>
+      <item> TO_MULTI_BYTE </item>
+      <item> TO_NCHAR </item>
+      <item> TO_NCLOB </item>
+      <item> TO_NUMBER </item>
+      <item> TO_SINGLE_BYTE </item>
+      <item> TO_TIMESTAMP </item>
+      <item> TO_TIMESTAMP_TZ </item>
+      <item> TO_YMINTERVAL </item>
+      <item> TRANSLATE </item>
+      <item> TREAT </item>
+      <item> TRIM </item>
+      <item> TRUNC </item>
+      <item> TZ_OFFSET </item>
+      <item> UID </item>
+      <item> UNISTR </item>
+      <item> UPDATEXML </item>
+      <item> UPPER </item>
+      <item> USER </item>
+      <item> USERENV </item>
+      <item> VALUE </item>
+      <item> VAR_POP </item>
+      <item> VAR_SAMP </item>
+      <item> VARIANCE </item>
+      <item> VSIZE </item>
+      <item> WIDTH_BUCKET </item>
+      <item> XMLAGG </item>
+      <item> XMLCOLATTVAL </item>
+      <item> XMLCONCAT </item>
+      <item> XMLELEMENT </item>
+      <item> XMLFOREST </item>
+      <item> XMLSEQUENCE </item>
+      <item> XMLTRANSFORM </item>
+    </list>
+    <list name="types">
+      <item> ANYDATA </item>
+      <item> ANYDATASET </item>
+      <item> ANYTYPE </item>
+      <item> ARRAY </item>
+      <item> BFILE </item>
+      <item> BINARY_DOUBLE </item>
+      <item> BINARY_FLOAT </item>
+      <item> BINARY_INTEGER </item>
+      <item> BLOB </item>
+      <item> BOOLEAN </item>
+      <item> CFILE </item>
+      <item> CHAR </item>
+      <item> CHARACTER </item>
+      <item> CLOB </item>
+      <item> DATE </item>
+      <item> DAY </item>
+      <item> DBURITYPE </item>
+      <item> DEC </item>
+      <item> DECIMAL </item>
+      <item> DOUBLE </item>
+      <item> FLOAT </item>
+      <item> FLOB </item>
+      <item> HTTPURITYPE </item>
+      <item> INT </item>
+      <item> INTEGER </item>
+      <item> INTERVAL </item>
+      <item> LOB </item>
+      <item> LONG </item>
+      <item> MLSLABEL </item>
+      <item> MONTH </item>
+      <item> NATIONAL </item>
+      <item> NCHAR </item>
+      <item> NCLOB </item>
+      <item> NUMBER </item>
+      <item> NUMERIC </item>
+      <item> NVARCHAR </item>
+      <item> OBJECT </item>
+      <item> PLS_INTEGER </item>
+      <item> PRECISION </item>
+      <item> RAW </item>
+      <item> RECORD </item>
+      <item> REAL </item>
+      <item> ROWID </item>
+      <item> SECOND </item>
+      <item> SINGLE </item>
+      <item> SMALLINT </item>
+      <item> TIME </item>
+      <item> TIMESTAMP </item>
+      <item> URIFACTORYTYPE </item>
+      <item> URITYPE </item>
+      <item> UROWID </item>
+      <item> VARCHAR </item>
+      <item> VARCHAR2 </item>
+      <item> VARYING </item>
+      <item> VARRAY </item>
+      <item> XMLTYPE </item>
+      <item> YEAR </item>
+      <item> ZONE </item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Keyword" String="keywords" context="#stay"/>
+        <keyword attribute="Operator" String="operators" context="#stay"/>
+        <keyword attribute="Function" String="functions" context="#stay"/>
+        <keyword attribute="Data Type" String="types" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%bulk_exceptions\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%bulk_rowcount\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%found\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%isopen\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%notfound\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%rowcount\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%rowtype\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%type\b" insensitive="true" context="#stay"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <DetectChar attribute="String" context="String literal" char="'"/>
+        <Detect2Chars attribute="Comment" context="Singleline PL/SQL-style comment" char="-" char1="-"/>
+        <Detect2Chars attribute="Comment" context="Multiline C-style comment" char="/" char1="*"/>
+        <RegExpr attribute="Comment" context="SQL*Plus remark directive" String="^rem\b" insensitive="true" column="0"/>
+        <DetectChar attribute="Identifier" context="User-defined identifier" char="&quot;"/>
+        <RegExpr attribute="External Variable" context="#stay" String="(:|&amp;&amp;?)\w+"/>
+        <RegExpr attribute="Symbol" context="#stay" String="^/$" column="0"/>
+        <RegExpr attribute="Preprocessor" context="SQL*Plus directive to include file" String="^@@?[^@ \t\r\n]" column="0"/>
+      </context>
+      <context name="String literal" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="String" context="#pop" char="\" char1="'" />
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <RegExpr attribute="External Variable" context="#stay" String="&amp;&amp;?\w+"/>
+        <Detect2Chars attribute="String Char" context="#stay" char="'" char1="'" />
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="Multiline C-style comment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+      </context>
+      <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop"/>
+      <context name="User-defined identifier" attribute="Identifier" lineEndContext="#pop">
+        <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
+      </context>
+      <context name="SQL*Plus directive to include file" attribute="Preprocessor" lineEndContext="#pop"/>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"       defStyleNum="dsNormal"/>
+      <itemData name="Keyword"           defStyleNum="dsKeyword"/>
+      <itemData name="Operator"          defStyleNum="dsNormal"/>
+      <itemData name="Function"          defStyleNum="dsFunction"/>
+      <itemData name="Data Type"         defStyleNum="dsDataType"/>
+      <itemData name="Decimal"           defStyleNum="dsDecVal"/>
+      <itemData name="Float"             defStyleNum="dsFloat"/>
+      <itemData name="String"            defStyleNum="dsString"/>
+      <itemData name="String Char"       defStyleNum="dsChar"/>
+      <itemData name="Comment"           defStyleNum="dsComment"/>
+      <itemData name="Identifier"        defStyleNum="dsOthers"/>
+      <itemData name="External Variable" defStyleNum="dsChar"/>
+      <itemData name="Symbol"            defStyleNum="dsChar"/>
+      <itemData name="Preprocessor"      defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--"/>
+      <comment name="multiLine" start="/*" end="*/"/>
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="+-*/|=!&lt;&gt;~^:."/>
+  </general>
+</language>
diff --git a/src/plugins/genericeditor/XML/tcl.xml b/src/plugins/genericeditor/XML/tcl.xml
new file mode 100644
index 00000000000..cb74c1f5212
--- /dev/null
+++ b/src/plugins/genericeditor/XML/tcl.xml
@@ -0,0 +1,536 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!-- Authors: Alexander Dederer & JM. Philippe -->
+<!-- Copyright: BSD copyright & Irsid - Arcelor Innovation R&D -->
+<!-- Ported to Kate 2.0/ KWrite 4.0 by Joseph Wenninger (Updated by Simon Robins)-->
+<!--
+    Updated by Pawel Salawa (boogie at scripts dot one dot pl)
+
+    Revision history:
+        1.10:
+            - Fixed problem with single ':' character after variable name (it's no longer variable,
+              because only double-colon is namespace delimiter and can be part of variable name).
+            - Fixed problem with matching quote character next to regular character, for example:
+              puts {"string"}
+              In that case left bracked was marked as string, but it's no longer like that.
+            - Fixed problem with variable names like: ${text\}test}
+              It whole is valid variable name, because of escape character.
+            - Fixed problem with marking ';' character as a comment when '#' character was after the ';'.
+            - Fixed problem with marking options. '-' character after word-delimiter character caused
+              marking that word-delimiter character as option too, even it wasn't white-space.
+            - Few other minor optimalizations.
+	1.09:
+	    - Added fast comments support (Ctrl+d or whatever your shortcut is)
+	    - Fixed single-character variables detection
+	    - Fixed detection of varaibles with names containing serval namespace delimiters (::)
+-->
+
+<language name="Tcl/Tk" version="1.10" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl">
+  <highlighting>
+    <list name="keywords">
+      <item> after </item>
+      <item> append  </item>
+      <item> AppleScript  </item>
+      <item> argv  </item>
+      <item> argc  </item>
+      <item> array  </item>
+      <item> auto_execk  </item>
+      <item> auto_load  </item>
+      <item> auto_mkindex  </item>
+      <item> auto_path  </item>
+      <item> auto_reset  </item>
+      <item> beep  </item>
+      <item> bell  </item>
+      <item> binary  </item>
+      <item> bind  </item>
+      <item> bindtags  </item>
+      <item> bgerror  </item>
+      <item> break  </item>
+      <item> button  </item>
+      <item> canvas  </item>
+      <item> case  </item>
+      <item> catch  </item>
+      <item> cd  </item>
+      <item> checkbutton  </item>
+      <item> clipboard  </item>
+      <item> clock  </item>
+      <item> close  </item>
+      <item> concat  </item>
+      <item> console  </item>
+      <item> continue  </item>
+      <item> dde  </item>
+      <item> destroy  </item>
+      <item> else  </item>
+      <item> elseif  </item>
+      <item> encoding  </item>
+      <item> entry  </item>
+      <item> env  </item>
+      <item> eof  </item>
+      <item> error  </item>
+      <item> errorCode  </item>
+      <item> errorInfo  </item>
+      <item> eval  </item>
+      <item> event  </item>
+      <item> exec  </item>
+      <item> exit  </item>
+      <item> expr  </item>
+      <item> fblocked  </item>
+      <item> fconfigure  </item>
+      <item> fcopy  </item>
+      <item> file  </item>
+      <item> fileevent  </item>
+      <item> flush  </item>
+      <item> focus  </item>
+      <item> font  </item>
+      <item> for  </item>
+      <item> foreach  </item>
+      <item> format  </item>
+      <item> frame  </item>
+      <item> gets  </item>
+      <item> glob  </item>
+      <item> global  </item>
+      <item> grab  </item>
+      <item> grid  </item>
+      <item> history  </item>
+      <item> if  </item>
+      <item> image  </item>
+      <item> incr  </item>
+      <item> info  </item>
+      <item> interp  </item>
+      <item> join  </item>
+      <item> label  </item>
+      <item> lappend  </item>
+      <item> lindex  </item>
+      <item> linsert  </item>
+      <item> list  </item>
+      <item> listbox  </item>
+      <item> llength  </item>
+      <item> load  </item>
+      <item> lower  </item>
+      <item> lrange  </item>
+      <item> lreplace  </item>
+      <item> lsearch  </item>
+      <item> lsort  </item>
+      <item> menu  </item>
+      <item> menubutton  </item>
+      <item> message  </item>
+      <item> namespace  </item>
+      <item> open  </item>
+      <item> option  </item>
+      <item> OptProc  </item>
+      <item> pack  </item>
+      <item> package  </item>
+      <item> parray  </item>
+      <item> pid  </item>
+      <item> place  </item>
+      <item> pkg_mkindex  </item>
+      <item> proc  </item>
+      <item> puts  </item>
+      <item> pwd  </item>
+      <item> radiobutton  </item>
+      <item> raise  </item>
+      <item> read  </item>
+      <item> regexp  </item>
+      <item> registry  </item>
+      <item> regsub  </item>
+      <item> rename  </item>
+      <item> resource  </item>
+      <item> return  </item>
+      <item> scale  </item>
+      <item> scan  </item>
+      <item> scrollbar  </item>
+      <item> seek  </item>
+      <item> selection  </item>
+      <item> send  </item>
+      <item> set  </item>
+      <item> socket  </item>
+      <item> source  </item>
+      <item> split  </item>
+      <item> string  </item>
+      <item> subst  </item>
+      <item> switch  </item>
+      <item> tclLog  </item>
+      <item> tcl_endOfWord  </item>
+      <item> tcl_findLibrary  </item>
+      <item> tcl_library  </item>
+      <item> tcl_patchLevel  </item>
+      <item> tcl_platform  </item>
+      <item> tcl_precision  </item>
+      <item> tcl_rcFileName  </item>
+      <item> tcl_rcRsrcName  </item>
+      <item> tcl_startOfNextWord  </item>
+      <item> tcl_startOfPreviousWord  </item>
+      <item> tcl_traceCompile  </item>
+      <item> tcl_traceExec  </item>
+      <item> tcl_version  </item>
+      <item> tcl_wordBreakAfter  </item>
+      <item> tcl_wordBreakBefore  </item>
+      <item> tell  </item>
+      <item> text  </item>
+      <item> time  </item>
+      <item> tk  </item>
+      <item> tkTabToWindow  </item>
+      <item> tkwait  </item>
+      <item> tk_chooseColor  </item>
+      <item> tk_chooseDirectory  </item>
+      <item> tk_focusFollowMouse  </item>
+      <item> tk_focusNext  </item>
+      <item> tk_focusPrev  </item>
+      <item> tk_getOpenFile  </item>
+      <item> tk_getSaveFile  </item>
+      <item> tk_library  </item>
+      <item> tk_messageBox  </item>
+      <item> tk_optionMenu  </item>
+      <item> tk_patchLevel  </item>
+      <item> tk_popup  </item>
+      <item> tk_strictMotif  </item>
+      <item> tk_version  </item>
+      <item> toplevel  </item>
+      <item> trace  </item>
+      <item> unknown  </item>
+      <item> unset  </item>
+      <item> update  </item>
+      <item> uplevel  </item>
+      <item> upvar  </item>
+      <item> variable  </item>
+      <item> vwait  </item>
+      <item> while  </item>
+      <item> winfo  </item>
+      <item> wm  </item>
+    </list>
+
+    <list name="keywords-opt">
+      <item> add </item>
+      <item> args </item>
+      <item> atime </item>
+      <item> attributes </item>
+      <item> body </item>
+      <item> bytelength </item>
+      <item> cancel </item>
+      <item> channels </item>
+      <item> clicks </item>
+      <item> cmdcount </item>
+      <item> commands </item>
+      <item> compare </item>
+      <item> complete </item>
+      <item> convertfrom </item>
+      <item> convertto </item>
+      <item> copy </item>
+      <item> default </item>
+      <item> delete </item>
+      <item> dirname </item>
+      <item> equal </item>
+      <item> executable </item>
+      <item> exists </item>
+      <item> extension </item>
+      <item> first </item>
+      <item> forget </item>
+      <item> format </item>
+      <item> functions </item>
+      <item> globals </item>
+      <item> hostname </item>
+      <item> idle </item>
+      <item> ifneeded </item>
+      <item> index </item>
+      <item> info </item>
+      <item> is </item>
+      <item> isdirectory </item>
+      <item> isfile </item>
+      <item> join </item>
+      <item> last </item>
+      <item> length </item>
+      <item> level </item>
+      <item> library </item>
+      <item> link </item>
+      <item> loaded </item>
+      <item> locals </item>
+      <item> lstat </item>
+      <item> map </item>
+      <item> match </item>
+      <item> mkdir </item>
+      <item> mtime </item>
+      <item> nameofexecutable </item>
+      <item> names </item>
+      <item> nativename </item>
+      <item> normalize </item>
+      <item> number </item>
+      <item> owned </item>
+      <item> patchlevel </item>
+      <item> pathtype </item>
+      <item> present </item>
+      <item> procs </item>
+      <item> provide </item>
+      <item> range </item>
+      <item> readable </item>
+      <item> readlink </item>
+      <item> remove </item>
+      <item> rename </item>
+      <item> repeat </item>
+      <item> replace </item>
+      <item> require </item>
+      <item> rootname </item>
+      <item> scan </item>
+      <item> script </item>
+      <item> seconds </item>
+      <item> separator </item>
+      <item> sharedlibextension </item>
+      <item> size </item>
+      <item> split </item>
+      <item> stat </item>
+      <item> system </item>
+      <item> tail </item>
+      <item> tclversion </item>
+      <item> tolower </item>
+      <item> totitle </item>
+      <item> toupper </item>
+      <item> trim </item>
+      <item> trimleft </item>
+      <item> trimright </item>
+      <item> type </item>
+      <item> unknown </item>
+      <item> variable </item>
+      <item> vars </item>
+      <item> vcompare </item>
+      <item> vdelete </item>
+      <item> versions </item>
+      <item> vinfo </item>
+      <item> volumes </item>
+      <item> vsatisfies </item>
+      <item> wordend </item>
+      <item> wordstart </item>
+      <item> writable </item>
+
+      <item> activate </item>
+      <item> actual </item>
+      <item> addtag </item>
+      <item> append </item>
+      <item> appname </item>
+      <item> aspect </item>
+      <item> atom </item>
+      <item> atomname </item>
+      <item> bbox </item>
+      <item> bind </item>
+      <item> broadcast </item>
+      <item> canvasx </item>
+      <item> canvasy </item>
+      <item> caret </item>
+      <item> cells </item>
+      <item> cget </item>
+      <item> children </item>
+      <item> class </item>
+      <item> clear </item>
+      <item> client </item>
+      <item> clone </item>
+      <item> colormapfull </item>
+      <item> colormapwindows </item>
+      <item> command </item>
+      <item> configure </item>
+      <item> containing </item>
+      <item> coords </item>
+      <item> create </item>
+      <item> current </item>
+      <item> curselection </item>
+      <item> dchars </item>
+      <item> debug </item>
+      <item> deiconify </item>
+      <item> delta </item>
+      <item> depth </item>
+      <item> deselect </item>
+      <item> dlineinfo </item>
+      <item> dtag </item>
+      <item> dump </item>
+      <item> edit </item>
+      <item> entrycget </item>
+      <item> entryconfigure </item>
+      <item> families </item>
+      <item> find </item>
+      <item> flash </item>
+      <item> focus </item>
+      <item> focusmodel </item>
+      <item> fpixels </item>
+      <item> fraction </item>
+      <item> frame </item>
+      <item> generate </item>
+      <item> geometry </item>
+      <item> get </item>
+      <item> gettags </item>
+      <item> grid </item>
+      <item> group </item>
+      <item> handle </item>
+      <item> height </item>
+      <item> hide </item>
+      <item> iconbitmap </item>
+      <item> iconify </item>
+      <item> iconmask </item>
+      <item> iconname </item>
+      <item> iconposition </item>
+      <item> iconwindow </item>
+      <item> icursor </item>
+      <item> id </item>
+      <item> identify </item>
+      <item> image </item>
+      <item> insert </item>
+      <item> interps </item>
+      <item> inuse </item>
+      <item> invoke </item>
+      <item> ismapped </item>
+      <item> itemcget </item>
+      <item> itemconfigure </item>
+      <item> keys </item>
+      <item> lower </item>
+      <item> manager </item>
+      <item> mark </item>
+      <item> maxsize </item>
+      <item> measure </item>
+      <item> metrics </item>
+      <item> minsize </item>
+      <item> move </item>
+      <item> name </item>
+      <item> nearest </item>
+      <item> overrideredirect </item>
+      <item> own </item>
+      <item> panecget </item>
+      <item> paneconfigure </item>
+      <item> panes </item>
+      <item> parent </item>
+      <item> pathname </item>
+      <item> pixels </item>
+      <item> pointerx </item>
+      <item> pointerxy </item>
+      <item> pointery </item>
+      <item> positionfrom </item>
+      <item> post </item>
+      <item> postcascade </item>
+      <item> postscript </item>
+      <item> protocol </item>
+      <item> proxy </item>
+      <item> raise </item>
+      <item> release </item>
+      <item> reqheight </item>
+      <item> reqwidth </item>
+      <item> resizable </item>
+      <item> rgb </item>
+      <item> rootx </item>
+      <item> rooty </item>
+      <item> scale </item>
+      <item> scaling </item>
+      <item> screen </item>
+      <item> screencells </item>
+      <item> screendepth </item>
+      <item> screenheight </item>
+      <item> screenmmheight </item>
+      <item> screenmmwidth </item>
+      <item> screenvisual </item>
+      <item> screenwidth </item>
+      <item> search </item>
+      <item> see </item>
+      <item> select </item>
+      <item> selection </item>
+      <item> server </item>
+      <item> set </item>
+      <item> show </item>
+      <item> sizefrom </item>
+      <item> stackorder </item>
+      <item> state </item>
+      <item> status </item>
+      <item> tag </item>
+      <item> title </item>
+      <item> toplevel </item>
+      <item> transient </item>
+      <item> types </item>
+      <item> unpost </item>
+      <item> useinputmethods </item>
+      <item> validate </item>
+      <item> values </item>
+      <item> viewable </item>
+      <item> visual </item>
+      <item> visualid </item>
+      <item> visualsavailable </item>
+      <item> vrootheight </item>
+      <item> vrootwidth </item>
+      <item> vrootx </item>
+      <item> vrooty </item>
+      <item> width </item>
+      <item> window </item>
+      <item> windowingsystem </item>
+      <item> withdraw </item>
+      <item> x </item>
+      <item> xview </item>
+      <item> y </item>
+    </list>
+
+    <contexts>
+      <context name = "Base" attribute = "Normal Text" lineEndContext="#stay">
+      
+        <!-- Virtual blocks -->
+        <RegExpr attribute="Region Marker" context="#stay" String="#\s*BEGIN.*$" beginRegion="region" firstNonSpace="true"/>
+        <RegExpr attribute="Region Marker" context="#stay" String="#\s*END.*$" endRegion="region" firstNonSpace="true"/>
+        
+        <!-- Standard -->
+        <keyword String = "keywords" attribute = "Keyword" context="#stay"/>
+        <keyword String = "keywords-opt" attribute = "Parameter" context="#stay"/>
+        <Float attribute = "Float" context="#stay"/>
+        <Int attribute ="Decimal" context="#stay"/>
+        <RegExpr String="\\." attribute = "Char" context = "#stay"/>
+        
+        <!-- Options -->
+        <RegExpr String = "\s-\w+" attribute = "Parameter" context="#stay"/>
+        
+        <!-- Variables -->
+        <RegExpr String = "\$\{([^\}]|\\\})+\}" attribute = "Variable" context="#stay"/>
+        <RegExpr String = "\$(::|\w)+" attribute = "Variable" context="#stay"/>
+        
+        <!-- Strings -->
+        <RegExpr String = "&quot;{2}" attribute = "String" context="#stay"/>
+        <RegExpr String = "&quot;" attribute = "String" context="String"/>
+        
+        <!-- Comments -->
+        <DetectChar char = ";" attribute = "Normal Text" context="New command line" />
+        <DetectChar char = "#" attribute = "Comment" context="Comment" firstNonSpace="true"/>
+        
+        <!-- Braces, brackets, etc -->
+        <DetectChar char = "{" attribute = "Keyword" context="#stay" beginRegion="block"/>
+        <DetectChar char = "}" attribute = "Keyword" context="#stay" endRegion="block"/>
+        <DetectChar char = "[" attribute = "Keyword" context="#stay"/>
+        <DetectChar char = "]" attribute = "Keyword" context="#stay"/>
+        
+      </context>
+
+      <context name = "String" attribute = "String" lineEndContext="#stay">
+        <RegExpr String="\\." attribute = "Char" context = "#stay"/>
+        <DetectChar char="&quot;" attribute = "String" context = "#pop"/>
+        <DetectChar char  = "$" attribute = "Variable" context="#stay"/>
+      </context>
+
+      <context name = "Comment" attribute = "Comment" lineEndContext="#pop"/>
+
+      <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay">
+        <RegExpr String = "\s*#" attribute="Comment" context="Comment" />
+        <RegExpr String = "." attribute="Normal Text" context="#pop" lookAhead="true" />
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name = "Normal Text" defStyleNum = "dsNormal"/>
+      <itemData name = "Keyword" defStyleNum = "dsKeyword"/>
+      <itemData name = "Decimal" defStyleNum = "dsDecVal"/>
+      <itemData name = "Float" defStyleNum = "dsFloat"/>
+      <itemData name = "String" defStyleNum = "dsString"/>
+      <itemData name = "Comment" defStyleNum = "dsComment"/>
+      <itemData name = "Parameter" defStyleNum = "dsOthers"/>
+      <itemData name = "Variable" defStyleNum = "dsDataType"/>
+      <itemData name = "Char" defStyleNum="dsChar"/>
+      <itemData name = "Region Marker" defStyleNum="dsRegionMarker"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+	<comment name="singleLine" start="#" />
+    </comments>
+    <keywords casesensitive="1"/>
+  </general>
+
+</language>
diff --git a/src/plugins/genericeditor/context.cpp b/src/plugins/genericeditor/context.cpp
new file mode 100644
index 00000000000..0ef788d3767
--- /dev/null
+++ b/src/plugins/genericeditor/context.cpp
@@ -0,0 +1,156 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "context.h"
+#include "rule.h"
+#include "reuse.h"
+#include "dynamicrule.h"
+#include "highlightdefinition.h"
+
+using namespace Highlight;
+using namespace Internal;
+
+Context::Context() : m_fallthrough(false), m_dynamic(false)
+{}
+
+Context::Context(const Context &context) :
+    m_id(context.m_id), m_name(context.m_name), m_lineBeginContext(context.m_lineBeginContext),
+    m_lineEndContext(context.m_lineEndContext), m_fallthroughContext(context.m_fallthroughContext),
+    m_itemData(context.m_itemData), m_fallthrough(context.m_fallthrough),
+    m_dynamic(context.m_dynamic), m_instructions(context.m_instructions),
+    m_definition(context.m_definition)
+{
+    // Rules need to be deeply copied because of dynamic contexts.
+    foreach (const QSharedPointer<Rule> &rule, context.m_rules)
+        m_rules.append(QSharedPointer<Rule>(rule->clone()));
+}
+
+const Context &Context::operator=(Context copy)
+{
+    swap(copy);
+    return *this;
+}
+
+Context::~Context()
+{}
+
+void Context::swap(Context &context)
+{
+    qSwap(m_id, context.m_id);
+    qSwap(m_name, context.m_name);
+    qSwap(m_lineBeginContext, context.m_lineBeginContext);
+    qSwap(m_lineEndContext, context.m_lineEndContext);
+    qSwap(m_fallthroughContext, context.m_fallthroughContext);
+    qSwap(m_itemData, context.m_itemData);
+    qSwap(m_fallthrough, context.m_fallthrough);
+    qSwap(m_dynamic, context.m_dynamic);
+    qSwap(m_rules, context.m_rules);
+    qSwap(m_instructions, context.m_instructions);
+    qSwap(m_definition, context.m_definition);
+}
+
+void Context::configureId(const int unique)
+{ m_id.append(QString::number(unique)); }
+
+const QString &Context::id() const
+{ return m_id; }
+
+void Context::setName(const QString &name)
+{
+    m_name = name;
+    m_id = name;
+}
+
+const QString &Context::name() const
+{ return m_name; }
+
+void Context::setLineBeginContext(const QString &context)
+{ m_lineBeginContext = context; }
+
+const QString &Context::lineBeginContext() const
+{ return m_lineBeginContext; }
+
+void Context::setLineEndContext(const QString &context)
+{ m_lineEndContext = context; }
+
+const QString &Context::lineEndContext() const
+{ return m_lineEndContext; }
+
+void Context::setFallthroughContext(const QString &context)
+{ m_fallthroughContext = context; }
+
+const QString &Context::fallthroughContext() const
+{ return m_fallthroughContext; }
+
+void Context::setItemData(const QString &itemData)
+{ m_itemData = itemData; }
+
+const QString &Context::itemData() const
+{ return m_itemData; }
+
+void Context::setFallthrough(const QString &fallthrough)
+{ m_fallthrough = toBool(fallthrough); }
+
+bool Context::isFallthrough() const
+{ return m_fallthrough; }
+
+void Context::setDynamic(const QString &dynamic)
+{ m_dynamic = toBool(dynamic); }
+
+bool Context::isDynamic() const
+{ return m_dynamic; }
+
+void Context::updateDynamicRules(const QStringList &captures) const
+{
+    Highlight::Internal::updateDynamicRules(m_rules, captures);
+}
+
+void Context::addRule(const QSharedPointer<Rule> &rule)
+{ m_rules.append(rule); }
+
+void Context::addRule(const QSharedPointer<Rule> &rule, int index)
+{ m_rules.insert(index, rule); }
+
+const QList<QSharedPointer<Rule> > & Context::rules() const
+{ return m_rules; }
+
+void Context::addIncludeRulesInstruction(const IncludeRulesInstruction &instruction)
+{ m_instructions.append(instruction); }
+
+const QList<IncludeRulesInstruction> &Context::includeRulesInstructions() const
+{ return m_instructions; }
+
+void Context::clearIncludeRulesInstructions()
+{ m_instructions.clear(); }
+
+void Context::setDefinition(const QSharedPointer<HighlightDefinition> &definition)
+{ m_definition = definition; }
+
+const QSharedPointer<HighlightDefinition> &Context::definition() const
+{ return m_definition; }
diff --git a/src/plugins/genericeditor/context.h b/src/plugins/genericeditor/context.h
new file mode 100644
index 00000000000..28dbcbe802a
--- /dev/null
+++ b/src/plugins/genericeditor/context.h
@@ -0,0 +1,110 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef CONTEXT_H
+#define CONTEXT_H
+
+#include "includerulesinstruction.h"
+
+#include <QtCore/QString>
+#include <QtCore/QList>
+#include <QtCore/QSharedPointer>
+
+namespace Highlight {
+namespace Internal {
+
+class Rule;
+class HighlightDefinition;
+
+class Context
+{
+public:
+    Context();
+    Context(const Context &context);
+    const Context &operator=(Context copy);
+    ~Context();
+
+    void configureId(const int unique);
+    const QString &id() const;
+
+    void setName(const QString &name);
+    const QString &name() const;
+
+    void setLineBeginContext(const QString &context);
+    const QString &lineBeginContext() const;
+
+    void setLineEndContext(const QString &context);
+    const QString &lineEndContext() const;
+
+    void setFallthroughContext(const QString &context);
+    const QString &fallthroughContext() const;
+
+    void setItemData(const QString &itemData);
+    const QString &itemData() const;
+
+    void setFallthrough(const QString &fallthrough);
+    bool isFallthrough() const;
+
+    void setDynamic(const QString &dynamic);
+    bool isDynamic() const;
+    void updateDynamicRules(const QStringList &captures) const;
+
+    void addRule(const QSharedPointer<Rule> &rule);
+    void addRule(const QSharedPointer<Rule> &rule, int index);
+    const QList<QSharedPointer<Rule> > &rules() const;
+
+    void addIncludeRulesInstruction(const IncludeRulesInstruction &instruction);
+    const QList<IncludeRulesInstruction> &includeRulesInstructions() const;
+    void clearIncludeRulesInstructions();
+
+    void setDefinition(const QSharedPointer<HighlightDefinition> &definition);
+    const QSharedPointer<HighlightDefinition> &definition() const;
+
+    void swap(Context &context);
+
+private:
+    QString m_id;
+    QString m_name;
+    QString m_lineBeginContext;
+    QString m_lineEndContext;
+    QString m_fallthroughContext;
+    QString m_itemData;
+    bool m_fallthrough;
+    bool m_dynamic;
+
+    QList<QSharedPointer<Rule> > m_rules;
+    QList<IncludeRulesInstruction> m_instructions;
+
+    QSharedPointer<HighlightDefinition> m_definition;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // CONTEXT_H
diff --git a/src/plugins/genericeditor/dynamicrule.cpp b/src/plugins/genericeditor/dynamicrule.cpp
new file mode 100644
index 00000000000..887bb0c169e
--- /dev/null
+++ b/src/plugins/genericeditor/dynamicrule.cpp
@@ -0,0 +1,67 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "dynamicrule.h"
+#include "reuse.h"
+
+using namespace Highlight;
+using namespace Internal;
+
+DynamicRule::DynamicRule() : m_active(false)
+{}
+
+DynamicRule::~DynamicRule()
+{}
+
+void DynamicRule::setActive(const QString &active)
+{ m_active = toBool(active); }
+
+bool DynamicRule::isActive() const
+{ return m_active; }
+
+void DynamicRule::replaceExpressions(const QStringList &captures)
+{
+    doReplaceExpressions(captures);
+    updateDynamicRules(childs(), captures);
+}
+
+namespace Highlight {
+namespace Internal {
+
+void updateDynamicRules(const QList<QSharedPointer<Rule> > &rules, const QStringList &captures)
+{
+    foreach (QSharedPointer<Rule> rule, rules) {
+        DynamicRule *dynamicRule = dynamic_cast<DynamicRule *>(rule.data());
+        if (dynamicRule && dynamicRule->isActive())
+            dynamicRule->replaceExpressions(captures);
+    }
+}
+
+} // namespace Internal
+} // namespace Highlight
diff --git a/src/plugins/genericeditor/dynamicrule.h b/src/plugins/genericeditor/dynamicrule.h
new file mode 100644
index 00000000000..17650e2c742
--- /dev/null
+++ b/src/plugins/genericeditor/dynamicrule.h
@@ -0,0 +1,64 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef DYNAMICRULE_H
+#define DYNAMICRULE_H
+
+#include "rule.h"
+
+QT_BEGIN_NAMESPACE
+class QStringList;
+QT_END_NAMESPACE
+
+namespace Highlight {
+namespace Internal {
+
+class DynamicRule : public Rule
+{
+public:
+    DynamicRule();
+    virtual ~DynamicRule();
+
+    void setActive(const QString &active);
+    bool isActive() const;
+
+    virtual void replaceExpressions(const QStringList &captures);
+
+private:
+    virtual void doReplaceExpressions(const QStringList &captures) = 0;
+
+    bool m_active;    
+};
+
+void updateDynamicRules(const QList<QSharedPointer<Rule> > &rules, const QStringList &captures);
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // DYNAMICRULE_H
diff --git a/src/plugins/genericeditor/genericeditor.cpp b/src/plugins/genericeditor/genericeditor.cpp
new file mode 100644
index 00000000000..e442e4aa880
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditor.cpp
@@ -0,0 +1,102 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "genericeditor.h"
+#include "generichighlighterconstants.h"
+#include "genericeditorplugin.h"
+#include "highlightdefinition.h"
+#include "highlighter.h"
+#include "highlighterexception.h"
+
+#include <coreplugin/uniqueidmanager.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/mimedatabase.h>
+#include <texteditor/texteditorconstants.h>
+#include <texteditor/basetextdocument.h>
+
+#include <QtCore/QSharedPointer>
+#include <QtCore/QFileInfo>
+
+using namespace Highlight;
+using namespace Internal;
+
+GenericEditorEditable::GenericEditorEditable(GenericEditor *editor) :
+    TextEditor::BaseTextEditorEditable(editor)
+{
+    Core::UniqueIDManager *uidm = Core::UniqueIDManager::instance();
+    m_context << uidm->uniqueIdentifier(Highlight::Constants::GENERIC_EDITOR);
+    m_context << uidm->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR);
+}
+
+QString GenericEditorEditable::id() const
+{ return QLatin1String(Highlight::Constants::GENERIC_EDITOR); }
+
+QList<int> GenericEditorEditable::context() const
+{ return m_context; }
+
+bool GenericEditorEditable::isTemporary() const
+{ return false; }
+
+bool GenericEditorEditable::duplicateSupported() const
+{ return true; }
+
+Core::IEditor *GenericEditorEditable::duplicate(QWidget *parent)
+{
+    GenericEditor *newEditor = new GenericEditor(editor()->mimeType(), parent);
+    newEditor->duplicateFrom(editor());
+    return newEditor->editableInterface();
+}
+
+bool GenericEditorEditable::open(const QString &fileName)
+{
+    if (TextEditor::BaseTextEditorEditable::open(fileName)) {
+        editor()->setMimeType(
+                Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(fileName)).type());
+        return true;
+    }
+    return false;
+}
+
+GenericEditor::GenericEditor(const QString &definitionId, QWidget *parent) :
+    TextEditor::BaseTextEditor(parent)
+{
+    try {
+        QSharedPointer<HighlightDefinition> definition =
+            GenericEditorPlugin::instance()->definition(definitionId);
+        baseTextDocument()->setSyntaxHighlighter(new Highlighter(definition->initialContext()));
+    } catch (const HighlighterException &) {
+        // No highlighter will be set.
+    }
+}
+
+TextEditor::BaseTextEditorEditable *GenericEditor::createEditableInterface()
+{
+    GenericEditorEditable *editable = new GenericEditorEditable(this);
+    return editable;
+}
diff --git a/src/plugins/genericeditor/genericeditor.h b/src/plugins/genericeditor/genericeditor.h
new file mode 100644
index 00000000000..37e798f4751
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditor.h
@@ -0,0 +1,79 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef GENERICEDITOR_H
+#define GENERICEDITOR_H
+
+#include <texteditor/basetexteditor.h>
+
+#include <QtCore/QList>
+
+QT_BEGIN_NAMESPACE
+class QString;
+QT_END_NAMESPACE
+
+namespace Highlight {
+namespace Internal {
+
+class GenericEditor;
+
+class GenericEditorEditable : public TextEditor::BaseTextEditorEditable
+{
+    Q_OBJECT
+
+public:
+    GenericEditorEditable(GenericEditor *editor);
+
+protected:
+    virtual QString id() const;
+    virtual QList<int> context() const;
+    virtual bool isTemporary() const;
+    virtual bool duplicateSupported() const;
+    virtual Core::IEditor *duplicate(QWidget *parent);
+    virtual bool open(const QString & fileName);
+
+private:
+    QList<int> m_context;
+};
+
+class GenericEditor : public TextEditor::BaseTextEditor
+{
+    Q_OBJECT
+
+public:
+    GenericEditor(const QString &definitionId, QWidget *parent = 0);
+
+protected:
+    virtual TextEditor::BaseTextEditorEditable *createEditableInterface();
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // GENERICEDITOR_H
diff --git a/src/plugins/genericeditor/genericeditor.pri b/src/plugins/genericeditor/genericeditor.pri
new file mode 100644
index 00000000000..cd4a9337c6a
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditor.pri
@@ -0,0 +1,3 @@
+include(genericeditor_dependencies.pri)
+
+LIBS *= -l$$qtLibraryTarget(GenericEditor)
diff --git a/src/plugins/genericeditor/genericeditor.pro b/src/plugins/genericeditor/genericeditor.pro
new file mode 100644
index 00000000000..65ee07b5bce
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditor.pro
@@ -0,0 +1,48 @@
+TEMPLATE = lib
+TARGET = GenericEditor
+include(../../qtcreatorplugin.pri)
+include(genericeditor_dependencies.pri)
+
+CONFIG += help
+
+HEADERS += \
+    genericeditorplugin.h \
+    progressdata.h \
+    genericeditorfactory.h \
+    genericeditor.h \
+    languagespecificfactories.h \
+    specificrules.h \
+    rule.h \
+    reuse.h \
+    keywordlist.h \
+    itemdata.h \
+    includerulesinstruction.h \
+    highlighterexception.h \
+    highlighter.h \
+    highlightdefinitionhandler.h \
+    highlightdefinition.h \
+    dynamicrule.h \
+    context.h \
+    genericeditorconstants.h
+
+SOURCES += \
+    genericeditorplugin.cpp \
+    progressdata.cpp \
+    genericeditorfactory.cpp \
+    genericeditor.cpp \
+    languagespecificfactories.cpp \
+    specificrules.cpp \
+    rule.cpp \
+    keywordlist.cpp \
+    itemdata.cpp \
+    includerulesinstruction.cpp \
+    highlighter.cpp \
+    highlightdefinitionhandler.cpp \
+    highlightdefinition.cpp \
+    dynamicrule.cpp \
+    context.cpp
+
+OTHER_FILES += GenericEditor.pluginspec GenericEditor.mimetypes.xml
+
+RESOURCES += \
+    genericeditor.qrc
diff --git a/src/plugins/genericeditor/genericeditor.qrc b/src/plugins/genericeditor/genericeditor.qrc
new file mode 100644
index 00000000000..4ecc6a1a5ed
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditor.qrc
@@ -0,0 +1,23 @@
+<RCC>
+    <qresource prefix="/genericeditor">
+        <file>XML/c.xml</file>
+        <file>XML/cpp.xml</file>
+        <file>XML/fortran.xml</file>
+        <file>XML/html.xml</file>
+        <file>XML/java.xml</file>
+        <file>XML/javadoc.xml</file>
+        <file>XML/javascript.xml</file>
+        <file>XML/language.dtd</file>
+        <file>XML/objectivec.xml</file>
+        <file>XML/perl.xml</file>
+        <file>XML/php.xml</file>
+        <file>XML/python.xml</file>
+        <file>XML/ruby.xml</file>
+        <file>XML/sql.xml</file>
+        <file>XML/tcl.xml</file>
+        <file>XML/alert.xml</file>
+        <file>XML/css.xml</file>
+        <file>XML/doxygen.xml</file>
+        <file>GenericEditor.mimetypes.xml</file>
+    </qresource>
+</RCC>
diff --git a/src/plugins/genericeditor/genericeditor_dependencies.pri b/src/plugins/genericeditor/genericeditor_dependencies.pri
new file mode 100644
index 00000000000..53dbf455c6b
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditor_dependencies.pri
@@ -0,0 +1,2 @@
+include(../../plugins/coreplugin/coreplugin.pri)
+include(../../plugins/texteditor/texteditor.pri)
diff --git a/src/plugins/genericeditor/genericeditorconstants.h b/src/plugins/genericeditor/genericeditorconstants.h
new file mode 100644
index 00000000000..e898f2d83b3
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditorconstants.h
@@ -0,0 +1,62 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef GENERICHIGHLIGHTERCONSTANTS_H
+#define GENERICHIGHLIGHTERCONSTANTS_H
+
+#include <QtCore/QtGlobal>
+
+namespace Highlight {
+namespace Constants {
+
+const char * const GENERIC_EDITOR = "GenericEditorPlugin.GenericEditor";
+const char * const GENERIC_EDITOR_DISPLAY_NAME =
+    QT_TRANSLATE_NOOP("OpenWith::Editors", "Generic Editor");
+
+const char * const C_SOURCE_MIMETYPE = "text/x-csrc";
+const char * const C_HEADER_MIMETYPE = "text/x-chdr";
+const char * const CPP_SOURCE_MIMETYPE = "text/x-c++src";
+const char * const CPP_HEADER_MIMETYPE = "text/x-c++hdr";
+const char * const CSS_MIMETYPE = "text/css";
+const char * const FORTRAN_MIMETYPE = "text/x-fortran";
+const char * const HTML_MIMETYPE = "text/html";
+const char * const JAVA_MIMETYPE = "text/x-java";
+const char * const JAVASCRIPT_MIMETYPE = "application/x-javascript";
+const char * const OBJECTIVEC_MIMETYPE = "text/x-objcsrc";
+const char * const PERL_MIMETYPE = "application/x-perl";
+const char * const PHP_MIMETYPE = "application/x-php";
+const char * const PYTHON_MIMETYPE = "text/x-python";
+const char * const RUBY_MIMETYPE = "text/x-ruby";
+const char * const SQL_MIMETYPE = "text/x-sql";
+const char * const TCL_MIMETYPE = "application/x-tcl";
+
+} // namespace Constants
+} // namespace Highlight
+
+#endif // GENERICHIGHLIGHTERCONSTANTS_H
diff --git a/src/plugins/genericeditor/genericeditorfactory.cpp b/src/plugins/genericeditor/genericeditorfactory.cpp
new file mode 100644
index 00000000000..c9c576ee854
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditorfactory.cpp
@@ -0,0 +1,72 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "genericeditorfactory.h"
+#include "generichighlighterconstants.h"
+#include "genericeditor.h"
+
+#include <coreplugin/editormanager/editormanager.h>
+
+using namespace Highlight;
+using namespace Internal;
+
+GenericEditorFactory::GenericEditorFactory(QObject *parent) :
+    Core::IEditorFactory(parent)
+{}
+
+GenericEditorFactory::~GenericEditorFactory()
+{}
+
+Core::IEditor *GenericEditorFactory::createEditor(QWidget *parent)
+{
+    GenericEditor *genericEditor = createGenericEditor(parent);
+    return genericEditor->editableInterface();
+}
+
+QString GenericEditorFactory::id() const
+{
+    return QLatin1String(Highlight::Constants::GENERIC_EDITOR);
+}
+
+QStringList GenericEditorFactory::mimeTypes() const
+{ return m_mimeTypes; }
+
+QString GenericEditorFactory::displayName() const
+{
+    return tr(Highlight::Constants::GENERIC_EDITOR_DISPLAY_NAME);
+}
+
+Core::IFile *GenericEditorFactory::open(const QString &fileName)
+{
+    Core::IEditor *iface = Core::EditorManager::instance()->openEditor(fileName, id());
+    return iface ? iface->file() : 0;
+}
+
+void GenericEditorFactory::addMimeType(const QString &mimeType)
+{ m_mimeTypes.append(mimeType); }
diff --git a/src/plugins/genericeditor/genericeditorfactory.h b/src/plugins/genericeditor/genericeditorfactory.h
new file mode 100644
index 00000000000..c3d91c803eb
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditorfactory.h
@@ -0,0 +1,71 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef GENERICEDITORFACTORY_H
+#define GENERICEDITORFACTORY_H
+
+#include <coreplugin/editormanager/ieditorfactory.h>
+
+#include <QtCore/QStringList>
+
+namespace Highlight {
+namespace Internal {
+
+class GenericEditor;
+
+class GenericEditorFactory : public Core::IEditorFactory
+{
+    Q_OBJECT
+
+public:
+    GenericEditorFactory(QObject *parent = 0);
+    virtual ~GenericEditorFactory();
+
+    // Currently there are language specific factores which configure the correct highlighter.
+    // Would it be a good idea if the createEditor method also received the mime type? This would
+    // also discard the necessity of overriding the open method.
+    virtual Core::IEditor *createEditor(QWidget *parent);
+    virtual QStringList mimeTypes() const;
+    virtual QString id() const;
+    virtual QString displayName() const;
+    virtual Core::IFile *open(const QString &fileName);
+
+protected:
+    void addMimeType(const QString &mimeType);
+
+private:    
+    virtual GenericEditor *createGenericEditor(QWidget *parent) = 0;
+
+    QStringList m_mimeTypes;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // GENERICEDITORFACTORY_H
diff --git a/src/plugins/genericeditor/genericeditorplugin.cpp b/src/plugins/genericeditor/genericeditorplugin.cpp
new file mode 100644
index 00000000000..a75979ae1e2
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditorplugin.cpp
@@ -0,0 +1,191 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "genericeditorplugin.h"
+#include "languagespecificfactories.h"
+#include "highlightdefinition.h"
+#include "highlightdefinitionhandler.h"
+#include "highlighter.h"
+#include "highlighterexception.h"
+#include "genericeditorconstants.h"
+
+#include <coreplugin/icore.h>
+#include <coreplugin/mimedatabase.h>
+#include <utils/qtcassert.h>
+
+#include <QtCore/QtPlugin>
+#include <QtCore/QLatin1String>
+#include <QtCore/QFile>
+#include <QtXml/QXmlSimpleReader>
+#include <QtXml/QXmlInputSource>
+
+using namespace Highlight;
+using namespace Internal;
+
+const QLatin1String GenericEditorPlugin::kAlertDefinitionId(":/genericeditor/XML/alert.xml");
+const QLatin1String GenericEditorPlugin::kCDefinitionId(":/genericeditor/XML/c.xml");
+const QLatin1String GenericEditorPlugin::kCppDefinitionId(":/genericeditor/XML/cpp.xml");
+const QLatin1String GenericEditorPlugin::kCssDefinitionId(":/genericeditor/XML/css.xml");
+const QLatin1String GenericEditorPlugin::kDoxygenDefinitionId(
+        ":/genericeditor/XML/doxygen.xml");
+const QLatin1String GenericEditorPlugin::kFortranDefinitionId(
+        ":/genericeditor/XML/fortran.xml");
+const QLatin1String GenericEditorPlugin::kHtmlDefinitionId(":/genericeditor/XML/html.xml");
+const QLatin1String GenericEditorPlugin::kJavaDefinitionId(":/genericeditor/XML/java.xml");
+const QLatin1String GenericEditorPlugin::kJavadocDefinitionId(
+        ":/genericeditor/XML/javadoc.xml");
+const QLatin1String GenericEditorPlugin::kJavascriptDefinitionId(
+        ":/genericeditor/XML/javascript.xml");
+const QLatin1String GenericEditorPlugin::kObjectiveCDefinitionId(
+        ":/genericeditor/XML/objectivec.xml");
+const QLatin1String GenericEditorPlugin::kPerlDefinitionId(":/genericeditor/XML/perl.xml");
+const QLatin1String GenericEditorPlugin::kPhpDefinitionId(":/genericeditor/XML/php.xml");
+const QLatin1String GenericEditorPlugin::kPythonDefinitionId(":/genericeditor/XML/python.xml");
+const QLatin1String GenericEditorPlugin::kRubyDefinitionId(":/genericeditor/XML/ruby.xml");
+const QLatin1String GenericEditorPlugin::kSqlDefinitionId(":/genericeditor/XML/sql.xml");
+const QLatin1String GenericEditorPlugin::kTclDefinitionId(":/genericeditor/XML/tcl.xml");
+
+GenericEditorPlugin *GenericEditorPlugin::m_instance = 0;
+
+GenericEditorPlugin::GenericEditorPlugin()
+{
+    QTC_ASSERT(!m_instance, return);
+    m_instance = this;
+
+    //Todo
+
+    m_idByMimeType.insert(Highlight::Constants::C_HEADER_MIMETYPE, kCDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::C_SOURCE_MIMETYPE, kCDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::CPP_HEADER_MIMETYPE, kCppDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::CPP_SOURCE_MIMETYPE, kCppDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::CSS_MIMETYPE, kCssDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::FORTRAN_MIMETYPE, kFortranDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::HTML_MIMETYPE, kHtmlDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::JAVA_MIMETYPE, kJavaDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::JAVASCRIPT_MIMETYPE, kJavascriptDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::OBJECTIVEC_MIMETYPE, kObjectiveCDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::PERL_MIMETYPE, kPerlDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::PHP_MIMETYPE, kPhpDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::PYTHON_MIMETYPE, kPythonDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::RUBY_MIMETYPE, kRubyDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::SQL_MIMETYPE, kSqlDefinitionId);
+    m_idByMimeType.insert(Highlight::Constants::TCL_MIMETYPE, kTclDefinitionId);
+
+    m_idByName.insert(QLatin1String("alerts"), kAlertDefinitionId);
+    m_idByName.insert(QLatin1String("c"), kCDefinitionId);
+    m_idByName.insert(QLatin1String("cpp"), kCppDefinitionId);
+    m_idByName.insert(QLatin1String("css"), kCssDefinitionId);
+    m_idByName.insert(QLatin1String("doxygen"), kDoxygenDefinitionId);
+    m_idByName.insert(QLatin1String("fortran"), kFortranDefinitionId);
+    m_idByName.insert(QLatin1String("html"), kHtmlDefinitionId);
+    m_idByName.insert(QLatin1String("java"), kJavaDefinitionId);
+    m_idByName.insert(QLatin1String("javadoc"), kJavadocDefinitionId);
+    m_idByName.insert(QLatin1String("javascript"), kJavascriptDefinitionId);
+    m_idByName.insert(QLatin1String("objectivec"), kObjectiveCDefinitionId);
+    m_idByName.insert(QLatin1String("perl"), kPerlDefinitionId);
+    m_idByName.insert(QLatin1String("php"), kPhpDefinitionId);
+    m_idByName.insert(QLatin1String("python"), kPythonDefinitionId);
+    m_idByName.insert(QLatin1String("ruby"), kRubyDefinitionId);
+    m_idByName.insert(QLatin1String("sql"), kSqlDefinitionId);
+    m_idByName.insert(QLatin1String("tcl"), kTclDefinitionId);
+}
+
+GenericEditorPlugin::~GenericEditorPlugin()
+{}
+
+bool GenericEditorPlugin::initialize(const QStringList &arguments, QString *errorString)
+{
+    Q_UNUSED(arguments)
+
+    Core::ICore *core = Core::ICore::instance();
+    if (!core->mimeDatabase()->addMimeTypes(
+            QLatin1String(":/genericeditor/GenericEditor.mimetypes.xml"), errorString)) {
+        return false;
+    }
+
+    addAutoReleasedObject(new CFactory(this));
+    addAutoReleasedObject(new CppFactory(this));
+    addAutoReleasedObject(new CssFactory(this));
+    addAutoReleasedObject(new FortranFactory(this));
+    addAutoReleasedObject(new HtmlFactory(this));
+    addAutoReleasedObject(new JavaFactory(this));
+    addAutoReleasedObject(new JavascriptFactory(this));
+    addAutoReleasedObject(new ObjectiveCFactory(this));
+    addAutoReleasedObject(new PerlFactory(this));
+    addAutoReleasedObject(new PhpFactory(this)); // Php definition file is broken.
+    addAutoReleasedObject(new PythonFactory(this));
+    addAutoReleasedObject(new RubyFactory(this));
+    addAutoReleasedObject(new SqlFactory(this));
+    addAutoReleasedObject(new TclFactory(this));
+
+    return true;
+}
+
+void GenericEditorPlugin::extensionsInitialized()
+{}
+
+GenericEditorPlugin *GenericEditorPlugin::instance()
+{ return m_instance; }
+
+QString GenericEditorPlugin::definitionIdByName(const QString &name) const
+{ return m_idByName.value(name.toLower()); }
+
+QString GenericEditorPlugin::definitionIdByMimeType(const QString &mimeType) const
+{ return m_idByMimeType.value(mimeType.toLower()); }
+
+bool GenericEditorPlugin::isBuildingDefinition(const QString &id) const
+{ return m_isBuilding.contains(id); }
+
+const QSharedPointer<HighlightDefinition> &GenericEditorPlugin::definition(const QString &id)
+{
+    if (!m_definitions.contains(id)) {
+        m_isBuilding.insert(id);
+
+        QFile definitionFile(id);
+        if (!definitionFile.open(QIODevice::ReadOnly | QIODevice::Text))
+            throw HighlighterException();
+        QXmlInputSource source(&definitionFile);
+
+        QSharedPointer<HighlightDefinition> definition(new HighlightDefinition);
+        HighlightDefinitionHandler handler(definition);
+
+        QXmlSimpleReader reader;
+        reader.setContentHandler(&handler);
+        reader.parse(source);
+
+        m_definitions.insert(id, definition);
+        definitionFile.close();
+        m_isBuilding.remove(id);
+    }
+
+    return *m_definitions.constFind(id);
+}
+
+
+Q_EXPORT_PLUGIN(GenericEditorPlugin)
diff --git a/src/plugins/genericeditor/genericeditorplugin.h b/src/plugins/genericeditor/genericeditorplugin.h
new file mode 100644
index 00000000000..12fceb5bcba
--- /dev/null
+++ b/src/plugins/genericeditor/genericeditorplugin.h
@@ -0,0 +1,101 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef GENERICEDITORPLUGIN_H
+#define GENERICEDITORPLUGIN_H
+
+#include <extensionsystem/iplugin.h>
+
+#include <QtCore/QString>
+#include <QtCore/QLatin1String>
+#include <QtCore/QHash>
+#include <QtCore/QSet>
+#include <QtCore/QSharedPointer>
+
+namespace Highlight {
+namespace Internal {
+
+class HighlightDefinition;
+
+// Note: The general interface of this class is temporary. Still need discussing details about
+// the definition files integration with Creator.
+
+class GenericEditorPlugin : public ExtensionSystem::IPlugin
+{
+    Q_OBJECT
+
+public:
+    GenericEditorPlugin();
+    virtual ~GenericEditorPlugin();
+
+    static GenericEditorPlugin *instance();
+
+    virtual bool initialize(const QStringList &arguments, QString *errorString);
+    virtual void extensionsInitialized();
+
+    QString definitionIdByName(const QString &name) const;
+    QString definitionIdByMimeType(const QString &mimeType) const;
+
+    bool isBuildingDefinition(const QString &id) const;
+    const QSharedPointer<HighlightDefinition> &definition(const QString &id);
+
+    static const QLatin1String kAlertDefinitionId;
+    static const QLatin1String kCDefinitionId;
+    static const QLatin1String kCppDefinitionId;
+    static const QLatin1String kCssDefinitionId;
+    static const QLatin1String kDoxygenDefinitionId;
+    static const QLatin1String kFortranDefinitionId;
+    static const QLatin1String kHtmlDefinitionId;
+    static const QLatin1String kJavaDefinitionId;
+    static const QLatin1String kJavadocDefinitionId;
+    static const QLatin1String kJavascriptDefinitionId;
+    static const QLatin1String kObjectiveCDefinitionId;
+    static const QLatin1String kPerlDefinitionId;
+    static const QLatin1String kPhpDefinitionId;
+    static const QLatin1String kPythonDefinitionId;
+    static const QLatin1String kRubyDefinitionId;
+    static const QLatin1String kSqlDefinitionId;
+    static const QLatin1String kTclDefinitionId;
+
+private:
+    GenericEditorPlugin(const GenericEditorPlugin &HighlighterPlugin);
+    const GenericEditorPlugin &operator=(const GenericEditorPlugin &HighlighterPlugin);
+
+    QSet<QString> m_isBuilding;
+    QHash<QString, QString> m_idByName;
+    QHash<QString, QString> m_idByMimeType;
+    QHash<QString, QSharedPointer<HighlightDefinition> > m_definitions;
+
+    static GenericEditorPlugin *m_instance;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // GENERICEDITORPLUGIN_H
diff --git a/src/plugins/genericeditor/highlightdefinition.cpp b/src/plugins/genericeditor/highlightdefinition.cpp
new file mode 100644
index 00000000000..fe808354c8d
--- /dev/null
+++ b/src/plugins/genericeditor/highlightdefinition.cpp
@@ -0,0 +1,189 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "highlightdefinition.h"
+#include "highlighterexception.h"
+#include "context.h"
+#include "keywordlist.h"
+#include "itemdata.h"
+#include "reuse.h"
+
+#include <QLatin1String>
+
+using namespace Highlight;
+using namespace Internal;
+
+HighlightDefinition::HighlightDefinition() :
+    m_delimiters(QLatin1String(".():!+,-<=>%&/;?[]^{|}~\\*, \t")),
+    m_singleLineCommentPosition(0),
+    m_singleLineCommentAfterWhiteSpaces(false),
+    m_keywordCaseSensitivity(Qt::CaseSensitive)
+{}
+
+HighlightDefinition::~HighlightDefinition()
+{}
+
+template <class Element, class Container>
+const QSharedPointer<Element> &HighlightDefinition::
+GenericHelper::create(const QString &name, Container &container)
+{
+    if (name.isEmpty())
+        throw HighlighterException();
+
+    if (container.contains(name))
+        throw HighlighterException();
+
+    container.insert(name, QSharedPointer<Element>(new Element));
+    return *container.constFind(name);
+}
+
+template <class Element, class Container>
+const QSharedPointer<Element> &HighlightDefinition::
+GenericHelper::find(const QString &name, const Container &container) const
+{
+    typename Container::const_iterator it = container.find(name);
+    if (it == container.end())
+        throw HighlighterException();
+
+    return it.value();
+}
+
+const QSharedPointer<KeywordList> &HighlightDefinition::createKeywordList(const QString &list)
+{ return m_helper.create<KeywordList>(list, m_lists); }
+
+const QSharedPointer<KeywordList> &HighlightDefinition::keywordList(const QString &list)
+{ return m_helper.find<KeywordList>(list, m_lists); }
+
+const QSharedPointer<Context> &HighlightDefinition::createContext(const QString &context,
+                                                                  bool initial)
+{
+    if (initial)
+        m_initialContext = context;
+
+    return m_helper.create<Context>(context, m_contexts);
+}
+
+const QSharedPointer<Context> &HighlightDefinition::initialContext() const
+{ return m_helper.find<Context>(m_initialContext, m_contexts); }
+
+const QSharedPointer<Context> &HighlightDefinition::context(const QString &context) const
+{ return m_helper.find<Context>(context, m_contexts); }
+
+const QHash<QString, QSharedPointer<Context> > &HighlightDefinition::contexts() const
+{ return m_contexts; }
+
+const QSharedPointer<ItemData> &HighlightDefinition::createItemData(const QString &itemData)
+{ return m_helper.create<ItemData>(itemData, m_itemsData); }
+
+const QSharedPointer<ItemData> &HighlightDefinition::itemData(const QString &itemData) const
+{ return m_helper.find<ItemData>(itemData, m_itemsData); }
+
+void HighlightDefinition::setSingleLineComment(const QString &start)
+{ m_singleLineComment = start; }
+
+const QString &HighlightDefinition::singleLineComment() const
+{ return m_singleLineComment; }
+
+void HighlightDefinition::setSingleLineCommentPosition(const QString &position)
+{
+    if (position == QLatin1String("afterwhitespace")) {
+        m_singleLineCommentAfterWhiteSpaces = true;
+    } else {
+        bool ok;
+        m_singleLineCommentPosition = position.toInt(&ok);
+        if (!ok)
+            m_singleLineCommentPosition = 0;
+    }
+}
+
+int HighlightDefinition::singleLineCommentPosition() const
+{ return m_singleLineCommentPosition; }
+
+bool HighlightDefinition::isSingleLineCommentAfterWhiteSpaces() const
+{ return m_singleLineCommentAfterWhiteSpaces; }
+
+void HighlightDefinition::setMultiLineCommentStart(const QString &start)
+{ m_multiLineCommentStart = start; }
+
+const QString &HighlightDefinition::multiLineCommentStart() const
+{ return m_multiLineCommentStart; }
+
+void HighlightDefinition::setMultiLineCommentEnd(const QString &end)
+{ m_multiLineCommentEnd = end; }
+
+const QString &HighlightDefinition::multiLineCommentEnd() const
+{ return m_multiLineCommentEnd; }
+
+void HighlightDefinition::setMultiLineCommentRegion(const QString &region)
+{ m_multiLineCommentRegion = region; }
+
+const QString &HighlightDefinition::multiLineCommentRegion() const
+{ return m_multiLineCommentRegion; }
+
+void HighlightDefinition::removeDelimiters(const QString &characters)
+{
+    for (int i = 0; i < characters.length(); ++i)
+        m_delimiters.remove(characters.at(i));
+}
+
+void HighlightDefinition::addDelimiters(const QString &characters)
+{
+    for (int i = 0; i < characters.length(); ++i) {
+        if (!m_delimiters.contains(characters.at(i)))
+            m_delimiters.append(characters.at(i));
+    }
+}
+
+bool HighlightDefinition::isDelimiter(const QChar &character) const
+{
+    if (m_delimiters.contains(character))
+        return true;
+    return false;
+}
+
+void HighlightDefinition::setKeywordsSensitive(const QString &sensitivity)
+{
+    if (!sensitivity.isEmpty())
+        m_keywordCaseSensitivity = toCaseSensitivity(toBool(sensitivity));
+}
+
+Qt::CaseSensitivity HighlightDefinition::keywordsSensitive() const
+{ return m_keywordCaseSensitivity; }
+
+void HighlightDefinition::setLanguageName(const QString &name)
+{ m_languageName = name; }
+
+const QString &HighlightDefinition::languageName() const
+{ return m_languageName; }
+
+void HighlightDefinition::setFileExtensions(const QString &extensions)
+{
+    //Todo
+    Q_UNUSED(extensions);
+}
diff --git a/src/plugins/genericeditor/highlightdefinition.h b/src/plugins/genericeditor/highlightdefinition.h
new file mode 100644
index 00000000000..5c7c9c45d11
--- /dev/null
+++ b/src/plugins/genericeditor/highlightdefinition.h
@@ -0,0 +1,131 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef HIGHLIGHTDEFINITION_H
+#define HIGHLIGHTDEFINITION_H
+
+#include <QtCore/QString>
+#include <QtCore/QHash>
+#include <QtCore/QSharedPointer>
+
+namespace Highlight {
+namespace Internal {
+
+class KeywordList;
+class Context;
+class ItemData;
+
+class HighlightDefinition
+{
+public:
+    HighlightDefinition();
+    ~HighlightDefinition();
+
+    const QSharedPointer<KeywordList> &createKeywordList(const QString &list);
+    const QSharedPointer<KeywordList> &keywordList(const QString &list);
+
+    const QSharedPointer<Context> &createContext(const QString &context, bool initial);
+    const QSharedPointer<Context> &initialContext() const;
+    const QSharedPointer<Context> &context(const QString &context) const;
+    const QHash<QString, QSharedPointer<Context> > &contexts() const;
+
+    const QSharedPointer<ItemData> &createItemData(const QString &itemData);
+    const QSharedPointer<ItemData> &itemData(const QString &itemData) const;
+
+    void setKeywordsSensitive(const QString &sensitivity);
+    Qt::CaseSensitivity keywordsSensitive() const;
+
+    void addDelimiters(const QString &characters);
+    void removeDelimiters(const QString &characters);
+    //Todo: wordWrapDelimiters?
+    bool isDelimiter(const QChar &character) const;    
+
+    void setSingleLineComment(const QString &start);
+    const QString &singleLineComment() const;
+
+    void setSingleLineCommentPosition(const QString &position);
+    int singleLineCommentPosition() const;
+    bool isSingleLineCommentAfterWhiteSpaces() const;
+
+    void setMultiLineCommentStart(const QString &start);
+    const QString &multiLineCommentStart() const;
+
+    void setMultiLineCommentEnd(const QString &end);
+    const QString &multiLineCommentEnd() const;
+
+    void setMultiLineCommentRegion(const QString &region);
+    const QString &multiLineCommentRegion() const;
+
+    void setLanguageName(const QString &name);
+    const QString &languageName() const;
+
+    //Todo: Will use?
+    void setFileExtensions(const QString &extensions);    
+
+private:
+
+    HighlightDefinition(const HighlightDefinition &);
+    HighlightDefinition &operator=(const HighlightDefinition &);
+
+    struct GenericHelper
+    {
+        template <class Element, class Container>
+        const QSharedPointer<Element> &create(const QString &name, Container &container);
+
+        template <class Element, class Container>
+        const QSharedPointer<Element> &find(const QString &name, const Container &container) const;
+    };
+    GenericHelper m_helper;
+
+    QHash<QString, QSharedPointer<KeywordList> > m_lists;
+    QHash<QString, QSharedPointer<Context> > m_contexts;
+    QHash<QString, QSharedPointer<ItemData> > m_itemsData;
+
+    QString m_initialContext;
+
+    QString m_delimiters;
+
+    QString m_singleLineComment;
+    int m_singleLineCommentPosition;
+    bool m_singleLineCommentAfterWhiteSpaces;
+
+    QString m_multiLineCommentStart;
+    QString m_multiLineCommentEnd;
+    QString m_multiLineCommentRegion;
+
+    Qt::CaseSensitivity m_keywordCaseSensitivity;
+
+    QString m_languageName;
+    QString m_fileExtensions;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // HIGHLIGHTDEFINITION_H
diff --git a/src/plugins/genericeditor/highlightdefinitionhandler.cpp b/src/plugins/genericeditor/highlightdefinitionhandler.cpp
new file mode 100644
index 00000000000..f562b39b9a4
--- /dev/null
+++ b/src/plugins/genericeditor/highlightdefinitionhandler.cpp
@@ -0,0 +1,470 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "highlightdefinitionhandler.h"
+#include "highlightdefinition.h"
+#include "specificrules.h"
+#include "itemdata.h"
+#include "keywordlist.h"
+#include "context.h"
+#include "reuse.h"
+#include "genericeditorplugin.h"
+#include "highlighterexception.h"
+
+#include <QLatin1String>
+
+using namespace Highlight;
+using namespace Internal;
+
+namespace {
+    static const QLatin1String kName("name");
+    static const QLatin1String kList("list");
+    static const QLatin1String kItem("item");
+    static const QLatin1String kContext("context");
+    static const QLatin1String kAttribute("attribute");
+    static const QLatin1String kDynamic("dynamic");
+    static const QLatin1String kFallthrough("fallthrough");
+    static const QLatin1String kLineEndContext("lineEndContext");
+    static const QLatin1String kLineBeginContext("lineBeginContext");
+    static const QLatin1String kFallthroughContext("fallthroughContext");
+    static const QLatin1String kBeginRegion("beginRegion");
+    static const QLatin1String kEndRegion("endRegion");
+    static const QLatin1String kLookAhead("lookAhead");
+    static const QLatin1String kFirstNonSpace("firstNonSpace");
+    static const QLatin1String kColumn("column");
+    static const QLatin1String kItemData("itemData");
+    static const QLatin1String kDefStyleNum("defStyleNum");
+    static const QLatin1String kColor("color");
+    static const QLatin1String kSelColor("selColor");
+    static const QLatin1String kItalic("italic");
+    static const QLatin1String kBold("bold");
+    static const QLatin1String kUnderline("underline");
+    static const QLatin1String kStrikeout("strikeout");
+    static const QLatin1String kChar("char");
+    static const QLatin1String kChar1("char1");
+    static const QLatin1String kString("String");
+    static const QLatin1String kInsensitive("insensitive");
+    static const QLatin1String kMinimal("minimal");
+    static const QLatin1String kKeywords("keywords");
+    static const QLatin1String kCaseSensitive("casesensitive");
+    static const QLatin1String kWeakDeliminator("weakDeliminator");
+    static const QLatin1String kAdditionalDeliminator("additionalDeliminator");
+    static const QLatin1String kWordWrapDeliminator("wordWrapDeliminator");
+    static const QLatin1String kComment("comment");
+    static const QLatin1String kPosition("position");
+    static const QLatin1String kSingleLine("singleline");
+    static const QLatin1String kMultiLine("multiline");
+    static const QLatin1String kStart("start");
+    static const QLatin1String kEnd("end");
+    static const QLatin1String kRegion("region");
+    static const QLatin1String kDetectChar("DetectChar");
+    static const QLatin1String kDetect2Chars("Detect2Chars");
+    static const QLatin1String kAnyChar("AnyChar");
+    static const QLatin1String kStringDetect("StringDetect");
+    static const QLatin1String kRegExpr("RegExpr");
+    static const QLatin1String kKeyword("keyword");
+    static const QLatin1String kInt("Int");
+    static const QLatin1String kFloat("Float");
+    static const QLatin1String kHlCOct("HlCOct");
+    static const QLatin1String kHlCHex("HlCHex");
+    static const QLatin1String kHlCStringChar("HlCStringChar");
+    static const QLatin1String kHlCChar("HlCChar");
+    static const QLatin1String kRangeDetect("RangeDetect");
+    static const QLatin1String kLineContinue("LineContinue");
+    static const QLatin1String kIncludeRules("IncludeRules");
+    static const QLatin1String kDetectSpaces("DetectSpaces");
+    static const QLatin1String kDetectIdentifier("DetectIdentifier");
+    static const QLatin1String kLanguage("language");
+    static const QLatin1String kExtensions("extensions");
+    static const QLatin1String kIncludeAttrib("includeAttrib");
+    static const QLatin1String kHash("#");
+    static const QLatin1String kDoubleHash("##");
+}
+
+HighlightDefinitionHandler::
+HighlightDefinitionHandler(const QSharedPointer<HighlightDefinition> &definition) :
+    m_definition(definition),
+    m_processingKeyword(false),
+    m_initialContext(true)
+{}
+
+HighlightDefinitionHandler::~HighlightDefinitionHandler()
+{}
+
+bool HighlightDefinitionHandler::startDocument()
+{
+    return true;
+}
+
+bool HighlightDefinitionHandler::endDocument()
+{
+    processIncludeRules();
+    return true;
+}
+
+bool HighlightDefinitionHandler::startElement(const QString &,
+                                              const QString &,
+                                              const QString &qName,
+                                              const QXmlAttributes &atts)
+{
+    if (qName == kList) {
+        listElementStarted(atts);
+    } else if (qName == kItem) {
+        itemElementStarted();
+    } else if (qName == kContext) {
+        contextElementStarted(atts);
+    } else if (qName == kItemData) {
+        itemDataElementStarted(atts);
+    } else if (qName == kComment) {
+        commentElementStarted(atts);
+    } else if (qName == kKeywords) {
+        keywordsElementStarted(atts);
+    } else if (qName == kDetectChar) {
+        detectCharStarted(atts);
+    } else if (qName == kDetect2Chars) {
+        detect2CharsStarted(atts);
+    } else if (qName == kAnyChar) {
+        anyCharStarted(atts);
+    } else if (qName == kStringDetect) {
+        stringDetectedStarted(atts);
+    } else if (qName == kRegExpr) {
+        regExprStarted(atts);
+    } else if (qName == kKeyword) {
+        keywordStarted(atts);
+    } else if (qName == kInt) {
+        intStarted(atts);
+    } else if (qName == kFloat) {
+        floatStarted(atts);
+    } else if (qName == kHlCOct) {
+        hlCOctStarted(atts);
+    } else if (qName == kHlCHex) {
+        hlCHexStarted(atts);
+    } else if (qName == kHlCStringChar) {
+        hlCStringCharStarted(atts);
+    } else if (qName == kHlCChar) {
+        hlCCharStarted(atts);
+    } else if (qName == kRangeDetect) {
+        rangeDetectStarted(atts);
+    } else if (qName == kLineContinue) {
+        lineContinue(atts);
+    } else if (qName == kIncludeRules) {
+        includeRulesStarted(atts);
+    } else if (qName == kDetectSpaces) {
+        detectSpacesStarted(atts);
+    } else if (qName == kDetectIdentifier) {
+        detectIdentifier(atts);
+    } else if (qName == kLanguage) {
+        languageElementStarted(atts);
+    }
+
+    return true;
+}
+
+bool HighlightDefinitionHandler::endElement(const QString &, const QString &, const QString &qName)
+{
+    if (qName == kItem) {
+        m_currentList->addKeyword(m_currentKeyword.trimmed());
+        m_processingKeyword = false;
+    } else if (qName == kDetectChar || qName == kDetect2Chars || qName == kAnyChar ||
+               qName == kStringDetect || qName == kRegExpr || qName == kKeyword || qName == kInt ||
+               qName == kFloat || qName == kHlCOct || qName == kHlCHex || qName == kHlCStringChar ||
+               qName == kHlCChar || qName == kRangeDetect || qName == kLineContinue ||
+               qName == kDetectSpaces || qName == kDetectIdentifier) {
+        m_currentRule.pop();
+    }
+
+    return true;
+}
+
+bool HighlightDefinitionHandler::characters(const QString& ch)
+{
+    // Character data of an element may be reported in more than one chunk.
+    if (m_processingKeyword)
+        m_currentKeyword.append(ch);
+
+    return true;
+}
+
+void HighlightDefinitionHandler::languageElementStarted(const QXmlAttributes &atts) const
+{
+    m_definition->setLanguageName(atts.value(kName));
+    m_definition->setFileExtensions(atts.value(kExtensions));
+}
+
+void HighlightDefinitionHandler::listElementStarted(const QXmlAttributes &atts)
+{
+    m_currentList = m_definition->createKeywordList(atts.value(kName));
+}
+
+void HighlightDefinitionHandler::itemElementStarted()
+{
+    m_currentKeyword.clear();
+    m_processingKeyword = true;
+}
+
+void HighlightDefinitionHandler::contextElementStarted(const QXmlAttributes &atts)
+{
+    m_currentContext = m_definition->createContext(atts.value(kName), m_initialContext);
+    m_currentContext->setDefinition(m_definition);
+    m_currentContext->setName(atts.value(kName));
+    m_currentContext->setItemData(atts.value(kAttribute));
+    m_currentContext->setDynamic(atts.value(kDynamic));
+    m_currentContext->setFallthrough(atts.value(kFallthrough));
+    m_currentContext->setFallthroughContext(atts.value(kFallthroughContext));
+    m_currentContext->setLineBeginContext(atts.value(kLineBeginContext));
+    m_currentContext->setLineEndContext(atts.value(kLineEndContext));
+
+    m_initialContext = false;
+}
+
+void HighlightDefinitionHandler::ruleElementStarted(const QXmlAttributes &atts,
+                                                    const QSharedPointer<Rule> &rule)
+{
+    // The definition of a rule is not necessarily the same of its enclosing context because of
+    // externally included rules.
+    rule->setDefinition(m_definition);
+    rule->setItemData(atts.value(kAttribute));
+    rule->setContext(atts.value(kContext));
+    rule->setBeginRegion(atts.value(kBeginRegion));
+    rule->setEndRegion(atts.value(kEndRegion));
+    rule->setLookAhead(atts.value(kLookAhead));
+    rule->setFirstNonSpace(atts.value(kFirstNonSpace));
+    rule->setColumn(atts.value(kColumn));
+
+    if (m_currentRule.isEmpty())
+        m_currentContext->addRule(rule);
+    else
+        m_currentRule.top()->addChild(rule);
+
+    m_currentRule.push(rule);
+}
+
+void HighlightDefinitionHandler::itemDataElementStarted(const QXmlAttributes &atts) const
+{
+    QSharedPointer<ItemData> itemData = m_definition->createItemData(atts.value(kName));
+    itemData->setStyle(atts.value(kDefStyleNum));
+    itemData->setColor(atts.value(kColor));
+    itemData->setSelectionColor(atts.value(kSelColor));
+    itemData->setItalic(atts.value(kItalic));
+    itemData->setBold(atts.value(kBold));
+    itemData->setUnderlined(atts.value(kUnderline));
+    itemData->setStrikedOut(atts.value(kStrikeout));
+    itemData->configureFormat();
+}
+
+void HighlightDefinitionHandler::commentElementStarted(const QXmlAttributes &atts) const
+{
+    const QString &commentType = atts.value(kName);
+    if (commentType == kSingleLine) {
+        m_definition->setSingleLineComment(atts.value(kStart));
+        m_definition->setSingleLineCommentPosition(atts.value(kPosition));
+    } else if (commentType == kMultiLine) {
+        m_definition->setMultiLineCommentStart(atts.value(kStart));
+        m_definition->setMultiLineCommentEnd(atts.value(kEnd));
+        m_definition->setMultiLineCommentRegion(atts.value(kRegion));
+    }
+}
+
+void HighlightDefinitionHandler::keywordsElementStarted(const QXmlAttributes &atts) const
+{
+    // Global case sensitivity appears last in the document (required by dtd) and is set here.
+    m_definition->setKeywordsSensitive(atts.value(kCaseSensitive));
+    m_definition->removeDelimiters(atts.value(kWeakDeliminator));
+    m_definition->addDelimiters(atts.value(kAdditionalDeliminator));
+    //Todo: wordWrapDelimiters?
+}
+
+void HighlightDefinitionHandler::detectCharStarted(const QXmlAttributes &atts)
+{
+    DetectCharRule *rule = new DetectCharRule;
+    rule->setChar(atts.value(kChar));
+    rule->setActive(atts.value(kDynamic));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::detect2CharsStarted(const QXmlAttributes &atts)
+{
+    Detect2CharsRule *rule = new Detect2CharsRule;
+    rule->setChar(atts.value(kChar));
+    rule->setChar1(atts.value(kChar1));
+    rule->setActive(atts.value(kDynamic));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::anyCharStarted(const QXmlAttributes &atts)
+{
+    AnyCharRule *rule = new AnyCharRule;
+    rule->setCharacterSet(atts.value(kString));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::stringDetectedStarted(const QXmlAttributes &atts)
+{
+    StringDetectRule *rule = new StringDetectRule;
+    rule->setString(atts.value(kString));
+    rule->setInsensitive(atts.value(kInsensitive));
+    rule->setActive(atts.value(kDynamic));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::regExprStarted(const QXmlAttributes &atts)
+{
+    RegExprRule *rule = new RegExprRule;
+    rule->setPattern(atts.value(kString));
+    rule->setMinimal(atts.value(kMinimal));
+    rule->setInsensitive(atts.value(kInsensitive));
+    rule->setActive(atts.value(kDynamic));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::keywordStarted(const QXmlAttributes &atts)
+{
+    KeywordRule *rule = new KeywordRule(m_definition);
+    rule->setList(atts.value(kString));
+    rule->setInsensitive(atts.value(kInsensitive));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::intStarted(const QXmlAttributes &atts)
+{    
+    ruleElementStarted(atts, QSharedPointer<Rule>(new IntRule));
+}
+
+void HighlightDefinitionHandler::floatStarted(const QXmlAttributes &atts)
+{
+    ruleElementStarted(atts, QSharedPointer<Rule>(new FloatRule));
+}
+
+void HighlightDefinitionHandler::hlCOctStarted(const QXmlAttributes &atts)
+{    
+    ruleElementStarted(atts, QSharedPointer<Rule>(new HlCOctRule));
+}
+
+void HighlightDefinitionHandler::hlCHexStarted(const QXmlAttributes &atts)
+{    
+    ruleElementStarted(atts, QSharedPointer<Rule>(new HlCHexRule));
+}
+
+void HighlightDefinitionHandler::hlCStringCharStarted(const QXmlAttributes &atts)
+{    
+    ruleElementStarted(atts, QSharedPointer<Rule>(new HlCStringCharRule));
+}
+
+void HighlightDefinitionHandler::hlCCharStarted(const QXmlAttributes &atts)
+{
+    ruleElementStarted(atts, QSharedPointer<Rule>(new HlCCharRule));
+}
+
+void HighlightDefinitionHandler::rangeDetectStarted(const QXmlAttributes &atts)
+{
+    RangeDetectRule *rule = new RangeDetectRule;
+    rule->setChar(atts.value(kChar));
+    rule->setChar1(atts.value(kChar1));
+    ruleElementStarted(atts, QSharedPointer<Rule>(rule));
+}
+
+void HighlightDefinitionHandler::lineContinue(const QXmlAttributes &atts)
+{    
+    ruleElementStarted(atts, QSharedPointer<Rule>(new LineContinueRule));
+}
+
+void HighlightDefinitionHandler::includeRulesStarted(const QXmlAttributes &atts)
+{
+    // Include rules are treated as instructions for latter processing.
+    IncludeRulesInstruction instruction(atts.value(kContext), m_currentContext->rules().size(),
+                                        atts.value(kIncludeAttrib));
+
+    // Include rules (as many others) are not allowed as a child.
+    m_currentContext->addIncludeRulesInstruction(instruction);
+}
+
+void HighlightDefinitionHandler::detectSpacesStarted(const QXmlAttributes &atts)
+{
+    ruleElementStarted(atts, QSharedPointer<Rule>(new DetectSpacesRule));
+}
+
+void HighlightDefinitionHandler::detectIdentifier(const QXmlAttributes &atts)
+{
+    ruleElementStarted(atts, QSharedPointer<Rule>(new DetectIdentifierRule));
+}
+
+void HighlightDefinitionHandler::processIncludeRules() const
+{
+    const QHash<QString, QSharedPointer<Context> > &allContexts = m_definition->contexts();
+    foreach (const QSharedPointer<Context> &context, allContexts)
+        processIncludeRules(context);
+}
+
+void HighlightDefinitionHandler::processIncludeRules(const QSharedPointer<Context> &context) const
+{
+    if (context->includeRulesInstructions().isEmpty())
+        return;
+
+    int rulesIncluded = 0;
+    const QList<IncludeRulesInstruction> &instructions = context->includeRulesInstructions();
+    foreach (const IncludeRulesInstruction &instruction, instructions) {
+
+        QSharedPointer<Context> sourceContext;
+        const QString &sourceName = instruction.sourceContext();
+        if (sourceName.startsWith(kDoubleHash)) {
+            // This refers to an external definition. The rules included are the ones from its
+            // initial context. Others contexts and rules from the external definition will
+            // transparently to the highlighter. This because contexts and rules know the
+            // definition they are from.
+            QString externalName = QString::fromRawData(sourceName.unicode() + 2,
+                                                        sourceName.length() - 2);
+            const QString id = GenericEditorPlugin::instance()->definitionIdByName(externalName);
+
+            // If there is an incorrect circular dependency among definitions this is skipped.
+            if (GenericEditorPlugin::instance()->isBuildingDefinition(id))
+                continue;
+
+            QSharedPointer<HighlightDefinition> externalDefinition =
+                GenericEditorPlugin::instance()->definition(id);
+            sourceContext = externalDefinition->initialContext();
+        } else if (!sourceName.startsWith(kHash)) {
+            sourceContext = m_definition->context(sourceName);
+
+            // Recursion is done only for context direct rules. Child rules are not processed
+            // because they cannot be include rules.
+            processIncludeRules(sourceContext);
+        }
+
+        if (instruction.replaceItemData()) {
+            context->setItemData(sourceContext->itemData());
+            context->setDefinition(sourceContext->definition());
+        }
+
+        foreach (QSharedPointer<Rule> rule, sourceContext->rules()) {
+            context->addRule(rule, instruction.indexHint() + rulesIncluded);
+            ++rulesIncluded;
+        }
+    }
+    context->clearIncludeRulesInstructions();
+}
diff --git a/src/plugins/genericeditor/highlightdefinitionhandler.h b/src/plugins/genericeditor/highlightdefinitionhandler.h
new file mode 100644
index 00000000000..7f9b32a3130
--- /dev/null
+++ b/src/plugins/genericeditor/highlightdefinitionhandler.h
@@ -0,0 +1,107 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef HIGHLIGHTDEFINITIONHANDLER_H
+#define HIGHLIGHTDEFINITIONHANDLER_H
+
+#include <QtCore/QString>
+#include <QtCore/QList>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QStack>
+
+#include <QtXml/QXmlDefaultHandler>
+
+namespace Highlight {
+namespace Internal {
+
+class KeywordList;
+class Context;
+class Rule;
+class HighlightDefinition;
+
+class HighlightDefinitionHandler : public QXmlDefaultHandler
+{
+public:
+    HighlightDefinitionHandler(const QSharedPointer<HighlightDefinition> &definition);
+    ~HighlightDefinitionHandler();
+
+    bool startDocument();
+    bool endDocument();
+    bool startElement(const QString &namespaceURI, const QString &localName,
+                      const QString &qName, const QXmlAttributes &atts);
+    bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName);
+    bool characters(const QString &ch);
+
+private:
+    void languageElementStarted(const QXmlAttributes &atts) const;
+    void listElementStarted(const QXmlAttributes &atts);
+    void itemElementStarted();
+    void contextElementStarted(const QXmlAttributes &atts);
+    void itemDataElementStarted(const QXmlAttributes &atts) const;
+    void commentElementStarted(const QXmlAttributes &atts) const;
+    void keywordsElementStarted(const QXmlAttributes &atts) const;
+    void ruleElementStarted(const QXmlAttributes &atts, const QSharedPointer<Rule> &rule);
+
+    // Specific rules.
+    void detectCharStarted(const QXmlAttributes &atts);
+    void detect2CharsStarted(const QXmlAttributes &atts);
+    void anyCharStarted(const QXmlAttributes &atts);
+    void stringDetectedStarted(const QXmlAttributes &atts);
+    void regExprStarted(const QXmlAttributes &atts);
+    void keywordStarted(const QXmlAttributes &atts);
+    void intStarted(const QXmlAttributes &atts);
+    void floatStarted(const QXmlAttributes &atts);
+    void hlCOctStarted(const QXmlAttributes &atts);
+    void hlCHexStarted(const QXmlAttributes &atts);
+    void hlCStringCharStarted(const QXmlAttributes &atts);
+    void hlCCharStarted(const QXmlAttributes &atts);
+    void rangeDetectStarted(const QXmlAttributes &atts);
+    void lineContinue(const QXmlAttributes &atts);
+    void includeRulesStarted(const QXmlAttributes &atts);
+    void detectSpacesStarted(const QXmlAttributes &atts);
+    void detectIdentifier(const QXmlAttributes &atts);
+
+    void processIncludeRules() const;
+    void processIncludeRules(const QSharedPointer<Context> &context) const;
+
+    QSharedPointer<HighlightDefinition> m_definition;
+
+    bool m_processingKeyword;
+    QString m_currentKeyword;
+    QSharedPointer<KeywordList> m_currentList;
+    QSharedPointer<Context> m_currentContext;
+    QStack<QSharedPointer<Rule> > m_currentRule;
+
+    bool m_initialContext;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // HIGHLIGHTDEFINITIONHANDLER_H
diff --git a/src/plugins/genericeditor/highlighter.cpp b/src/plugins/genericeditor/highlighter.cpp
new file mode 100644
index 00000000000..6c715d2cca5
--- /dev/null
+++ b/src/plugins/genericeditor/highlighter.cpp
@@ -0,0 +1,386 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "highlighter.h"
+#include "highlightdefinition.h"
+#include "context.h"
+#include "rule.h"
+#include "itemdata.h"
+#include "highlighterexception.h"
+#include "progressdata.h"
+
+#include <QtCore/QStringList>
+
+using namespace Highlight;
+using namespace Internal;
+
+namespace {
+    static const QLatin1String kStay("#stay");
+    static const QLatin1String kPop("#pop");
+    static const QLatin1Char kBackSlash('\\');
+    static const QLatin1Char kHash('#');
+}
+
+Highlighter::Highlighter(const QSharedPointer<Context> &defaultContext,QTextDocument *parent) :
+    QSyntaxHighlighter(parent),
+    m_persistentStatesCounter(PersistentsStart),
+    m_dynamicContextsCounter(0),
+    m_isBroken(false),
+    m_defaultContext(defaultContext)
+{
+    m_persistentStates.insert(m_defaultContext->name(), Default);
+}
+
+Highlighter::~Highlighter()
+{}
+
+Highlighter::BlockData::BlockData()
+{}
+
+Highlighter::BlockData::~BlockData()
+{}
+
+void Highlighter::highlightBlock(const QString &text)
+{
+    if (m_isBroken)
+        return;
+
+    try {
+        setupDataForBlock(text);
+
+        handleContextChange(m_currentContext->lineBeginContext(), m_currentContext->definition());
+
+        ProgressData progress;
+        const int length = text.length();
+        while (progress.offset() < length) {
+
+            if (progress.offset() > 0 &&
+                progress.onlySpacesSoFar() &&
+                !text.at(progress.offset()).isSpace()) {
+                progress.setOnlySpacesSoFar(false);
+            }
+
+            iterateThroughRules(text, length, &progress, false, m_currentContext->rules());
+        }
+
+        handleContextChange(m_currentContext->lineEndContext(), m_currentContext->definition(),
+                            false);
+
+        m_contexts.clear();
+    } catch (const HighlighterException &) {
+        m_isBroken = true;
+    }
+}
+
+void Highlighter::setupDataForBlock(const QString &text)
+{
+    if (currentBlockState() == WillContinue)
+        analyseConsistencyOfWillContinueBlock(text);
+
+    if (previousBlockState() == Default || previousBlockState() == -1)
+        setupDefault();
+    else if (previousBlockState() == WillContinue)
+        setupFromWillContinue();
+    else if (previousBlockState() == Continued)
+        setupFromContinued();
+    else
+        setupFromPersistent();
+
+    setCurrentContext();
+}
+
+void Highlighter::setupDefault()
+{
+    m_contexts.push_back(m_defaultContext);
+
+    setCurrentBlockState(Default);
+}
+
+void Highlighter::setupFromWillContinue()
+{
+    BlockData *previousData = static_cast<BlockData *>(currentBlock().previous().userData());
+    m_contexts.push_back(previousData->m_contextToContinue);
+
+    if (!currentBlockUserData()) {
+        BlockData *data = initializeBlockData();
+        data->m_originalState = previousData->m_originalState;
+    }
+
+    if (currentBlockState() == Default || currentBlockState() == -1)
+        setCurrentBlockState(Continued);
+}
+
+void Highlighter::setupFromContinued()
+{
+    BlockData *previousData = static_cast<BlockData *>(currentBlock().previous().userData());
+
+    Q_ASSERT(previousData->m_originalState != WillContinue &&
+             previousData->m_originalState != Continued);
+
+    if (previousData->m_originalState == Default || previousData->m_originalState == -1)
+        m_contexts.push_back(m_defaultContext);
+    else
+        pushContextSequence(previousData->m_originalState);
+
+    setCurrentBlockState(previousData->m_originalState);
+}
+
+void Highlighter::setupFromPersistent()
+{
+    pushContextSequence(previousBlockState());
+
+    setCurrentBlockState(previousBlockState());
+}
+
+void Highlighter::iterateThroughRules(const QString &text,
+                                      const int length,
+                                      ProgressData *progress,
+                                      const bool childRule,
+                                      const QList<QSharedPointer<Rule> > &rules)
+{
+    typedef QList<QSharedPointer<Rule> >::const_iterator RuleIterator;
+
+    bool contextChanged = false;
+    bool atLeastOneMatch = false;
+
+    RuleIterator it = rules.begin();
+    RuleIterator endIt = rules.end();
+    while (it != endIt && progress->offset() < length) {
+        int startOffset = progress->offset();
+
+        const QSharedPointer<Rule> &rule = *it;
+        if (rule->matchSucceed(text, length, progress)) {
+            atLeastOneMatch = true;
+
+            if (progress->willContinueLine()) {
+                createWillContinueBlock();
+                progress->setWillContinueLine(false);
+                progress->setOffset(length);
+            } else {
+                if (rule->hasChild())
+                    iterateThroughRules(text, length, progress, true, rule->childs());
+
+                if (!rule->context().isEmpty() && contextChangeRequired(rule->context())) {
+                    m_currentCaptures = progress->captures();
+                    changeContext(rule->context(), rule->definition());
+                    contextChanged = true;
+                }
+            }
+
+            // Format is not applied to child rules directly (but relative to the offset of their
+            // parent) nor to look ahead rules.
+            if (!childRule && !rule->isLookAhead()) {
+                if (rule->itemData().isEmpty())
+                    applyFormat(startOffset, progress->offset() - startOffset,
+                                m_currentContext->itemData(), m_currentContext->definition());
+                else
+                    applyFormat(startOffset, progress->offset() - startOffset, rule->itemData(),
+                                rule->definition());
+            }
+
+            // When there is a match of one child rule the others should be skipped. Otherwise
+            // the highlighting would be incorret in a case like 9ULLLULLLUULLULLUL, for example.
+            if (contextChanged || childRule) {
+                break;
+            } else {
+                it = rules.begin();
+                continue;
+            }
+        }
+        ++it;
+    }
+
+    if (!childRule && !atLeastOneMatch) {
+        if (m_currentContext->isFallthrough()) {
+            handleContextChange(m_currentContext->fallthroughContext(),
+                                m_currentContext->definition());
+            iterateThroughRules(text, length, progress, false, m_currentContext->rules());
+        } else {
+            applyFormat(progress->offset(), 1, m_currentContext->itemData(),
+                        m_currentContext->definition());
+            progress->incrementOffset();
+        }
+    }
+}
+
+bool Highlighter::contextChangeRequired(const QString &contextName) const
+{
+    if (contextName == kStay)
+        return false;
+    return true;
+}
+
+void Highlighter::changeContext(const QString &contextName,
+                                const QSharedPointer<HighlightDefinition> &definition,
+                                const bool setCurrent)
+{
+    if (contextName.startsWith(kPop)) {
+        QStringList list = contextName.split(kHash, QString::SkipEmptyParts);
+        for (int i = 0; i < list.size(); ++i)
+            m_contexts.pop_back();
+
+        if (currentBlockState() >= PersistentsStart) {
+            // One or more persistent contexts were popped.
+            const QString &currentSequence = currentContextSequence();
+            if (m_persistentStates.contains(currentSequence))
+                setCurrentBlockState(m_persistentStates.value(currentContextSequence()));
+            else
+                setCurrentBlockState(m_leadingStates.value(currentContextSequence()));
+        }
+    } else {
+        const QSharedPointer<Context> &context = definition->context(contextName);
+
+        if (context->isDynamic())
+            pushDynamicContext(context);
+        else
+            m_contexts.push_back(context);
+
+        if (m_contexts.back()->lineEndContext() == kStay) {
+            // A persistent context was pushed.
+            const QString &currentSequence = currentContextSequence();
+            mapContextSequence(currentSequence);
+            setCurrentBlockState(m_persistentStates.value(currentSequence));
+        }
+    }
+
+    if (setCurrent)
+        setCurrentContext();
+}
+
+void Highlighter::handleContextChange(const QString &contextName,
+                                      const QSharedPointer<HighlightDefinition> &definition,
+                                      const bool setCurrent)
+{
+    if (!contextName.isEmpty() && contextChangeRequired(contextName))
+        changeContext(contextName, definition, setCurrent);
+}
+
+void Highlighter::applyFormat(int offset,
+                              int count,
+                              const QString &itemData,
+                              const QSharedPointer<HighlightDefinition> &definition)
+{
+    if (count == 0)
+        return;
+
+    try {
+        setFormat(offset, count, definition->itemData(itemData)->format());
+    } catch (const HighlighterException &) {
+        // This case does not break the highlighter. In fact, currently there are broken xml
+        // definition files which Kate can cope with. For instance, the Printf context in java.xml
+        // points to an inexistent Printf item data.
+    }
+}
+
+void Highlighter::createWillContinueBlock()
+{
+    if (!currentBlockUserData())
+        initializeBlockData();
+
+    BlockData *data = static_cast<BlockData *>(currentBlockUserData());
+    if (currentBlockState() == Continued) {
+        BlockData *previousData = static_cast<BlockData *>(currentBlock().previous().userData());
+        data->m_originalState = previousData->m_originalState;
+    } else if (currentBlockState() != WillContinue) {
+        data->m_originalState = currentBlockState();
+    }
+    data->m_contextToContinue = m_currentContext;
+
+    setCurrentBlockState(WillContinue);
+}
+
+void Highlighter::analyseConsistencyOfWillContinueBlock(const QString &text)
+{
+    if (currentBlock().next().isValid() && (
+        text.length() == 0 || text.at(text.length() - 1) != kBackSlash) &&
+        currentBlock().next().userState() != Continued) {
+        currentBlock().next().setUserState(Continued);
+    }
+
+    if (text.length() == 0 || text.at(text.length() - 1) != kBackSlash) {
+        BlockData *data = static_cast<BlockData *>(currentBlockUserData());
+        data->m_contextToContinue.clear();
+        setCurrentBlockState(data->m_originalState);
+    }
+}
+
+void Highlighter::mapContextSequence(const QString &contextSequence)
+{
+    if (currentBlockState() < PersistentsStart && !m_leadingStates.contains(contextSequence))
+        m_leadingStates.insert(contextSequence, currentBlockState());
+
+    if (!m_persistentStates.contains(contextSequence)) {
+        int newState = m_persistentStatesCounter;
+        m_persistentStates.insert(contextSequence, newState);
+        m_persistentContexts.insert(newState, m_contexts);
+        ++m_persistentStatesCounter;
+    }
+}
+
+void Highlighter::pushContextSequence(int state)
+{
+    const QVector<QSharedPointer<Context> > &contexts = m_persistentContexts.value(state);
+    for (int i = 0; i < contexts.size(); ++i)
+        m_contexts.push_back(contexts.at(i));
+}
+
+QString Highlighter::currentContextSequence() const
+{
+    QString sequence;
+    for (int i = 0; i < m_contexts.size(); ++i)
+        sequence.append(m_contexts.at(i)->id());
+
+    return sequence;
+}
+
+Highlighter::BlockData *Highlighter::initializeBlockData()
+{
+    BlockData *data = new BlockData;
+    setCurrentBlockUserData(data);
+    return data;
+}
+
+void Highlighter::pushDynamicContext(const QSharedPointer<Context> &baseContext)
+{
+    // A dynamic context is created from another context which serves as its basis. Then,
+    // its rules are updated according to the captures from the calling regular expression which
+    // triggered the push of the dynamic context.
+    QSharedPointer<Context> context(new Context(*baseContext));
+    context->configureId(m_dynamicContextsCounter);
+    context->updateDynamicRules(m_currentCaptures);
+    m_contexts.push_back(context);
+    ++m_dynamicContextsCounter;
+}
+
+void Highlighter::setCurrentContext()
+{
+    if (m_contexts.isEmpty())
+        throw HighlighterException();
+    m_currentContext = m_contexts.back();
+}
diff --git a/src/plugins/genericeditor/highlighter.h b/src/plugins/genericeditor/highlighter.h
new file mode 100644
index 00000000000..de736538d15
--- /dev/null
+++ b/src/plugins/genericeditor/highlighter.h
@@ -0,0 +1,144 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef HIGHLIGHTER_H
+#define HIGHLIGHTER_H
+
+#include <QtCore/QVector>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QStringList>
+
+#include <QtGui/QSyntaxHighlighter>
+#include <QtGui/QTextBlockUserData>
+
+#include <texteditor/basetexteditor.h>
+
+namespace Highlight {
+namespace Internal {
+
+class Rule;
+class Context;
+class HighlightDefinition;
+class ProgressData;
+
+class Highlighter : public QSyntaxHighlighter
+{
+public:
+    Highlighter(const QSharedPointer<Context> &defaultContext, QTextDocument *parent = 0);
+    virtual ~Highlighter();
+
+protected:
+    virtual void highlightBlock(const QString &text);
+
+private:
+
+    void setupDataForBlock(const QString &text);
+    void setupDefault();
+    void setupFromWillContinue();
+    void setupFromContinued();
+    void setupFromPersistent();
+
+    void iterateThroughRules(const QString &text,
+                             const int length,
+                             ProgressData *progress,
+                             const bool childRule,
+                             const QList<QSharedPointer<Rule> > &rules);
+
+    bool contextChangeRequired(const QString &contextName) const;
+    void handleContextChange(const QString &contextName,
+                             const QSharedPointer<HighlightDefinition> &definition,
+                             const bool setCurrent = true);
+    void changeContext(const QString &contextName,
+                       const QSharedPointer<HighlightDefinition> &definition,
+                       const bool setCurrent = true);
+
+    void applyFormat(int offset,
+                     int count,
+                     const QString &itemData,
+                     const QSharedPointer<HighlightDefinition> &definition);
+
+    QString currentContextSequence() const;
+    void mapContextSequence(const QString &contextSequence);
+    void pushContextSequence(int state);
+    void pushDynamicContext(const QSharedPointer<Context> &baseContext);
+
+    void setCurrentContext();
+
+    void createWillContinueBlock();
+    void analyseConsistencyOfWillContinueBlock(const QString &text);
+
+    struct BlockData : TextEditor::TextBlockUserData
+    {
+        BlockData();
+        virtual ~BlockData();
+
+        int m_originalState;
+        QSharedPointer<Context> m_contextToContinue;
+    };
+    BlockData *initializeBlockData();
+
+    // Block states
+    // - Default [0]: Nothing special.
+    // - WillContinue [1]: When there is match of the LineContinue rule (backslash as the last
+    //   character).
+    // - Continued [2]: Blocks that happen after a WillContinue block and continued from their
+    //   context until the next line end.
+    // - Persistent(s) [Anything >= 3]: Correspond to persistent contexts which last until a pop
+    //   occurs due to a matching rule. Every sequence of persistent contexts seen so far is
+    //   associated with a number (incremented by a unit each time).
+    enum BlockState {
+        Default = 0,
+        WillContinue,
+        Continued,
+        PersistentsStart
+    };
+    int m_persistentStatesCounter;
+    int m_dynamicContextsCounter;
+
+    bool m_isBroken;
+
+    QSharedPointer<Context> m_defaultContext;
+    QSharedPointer<Context> m_currentContext;
+    QVector<QSharedPointer<Context> > m_contexts;
+
+    // Mapping from context sequences to the persistent state they represent.
+    QHash<QString, int> m_persistentStates;
+    // Mapping from context sequences to the non-persistent state that led to them.
+    QHash<QString, int> m_leadingStates;
+    // Mapping from persistent states to context sequences (the actual "stack").
+    QHash<int, QVector<QSharedPointer<Context> > > m_persistentContexts;
+
+    // Captures used in dynamic rules.
+    QStringList m_currentCaptures;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // HIGHLIGHTER_H
diff --git a/src/plugins/genericeditor/highlighterexception.h b/src/plugins/genericeditor/highlighterexception.h
new file mode 100644
index 00000000000..6e45c96e06a
--- /dev/null
+++ b/src/plugins/genericeditor/highlighterexception.h
@@ -0,0 +1,41 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef HIGHLIGHTEREXCEPTION_H
+#define HIGHLIGHTEREXCEPTION_H
+
+namespace Highlight {
+namespace Internal {
+
+class HighlighterException {};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // HIGHLIGHTEREXCEPTION_H
diff --git a/src/plugins/genericeditor/includerulesinstruction.cpp b/src/plugins/genericeditor/includerulesinstruction.cpp
new file mode 100644
index 00000000000..7db35c06d26
--- /dev/null
+++ b/src/plugins/genericeditor/includerulesinstruction.cpp
@@ -0,0 +1,50 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "includerulesinstruction.h"
+#include "reuse.h"
+
+using namespace Highlight;
+using namespace Internal;
+
+IncludeRulesInstruction::IncludeRulesInstruction(const QString &context,
+                                                 int hint,
+                                                 const QString &replaceItemData) :
+    m_sourceContext(context), m_indexHint(hint), m_replaceItemData(toBool(replaceItemData))
+{
+}
+
+const QString &IncludeRulesInstruction::sourceContext() const
+{ return m_sourceContext; }
+
+int IncludeRulesInstruction::indexHint() const
+{ return m_indexHint; }
+
+bool IncludeRulesInstruction::replaceItemData() const
+{ return m_replaceItemData; }
diff --git a/src/plugins/genericeditor/includerulesinstruction.h b/src/plugins/genericeditor/includerulesinstruction.h
new file mode 100644
index 00000000000..00472a13784
--- /dev/null
+++ b/src/plugins/genericeditor/includerulesinstruction.h
@@ -0,0 +1,56 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef INCLUDERULESINSTRUCTION_H
+#define INCLUDERULESINSTRUCTION_H
+
+#include <QtCore/QString>
+
+namespace Highlight {
+namespace Internal {
+
+class IncludeRulesInstruction
+{
+public:
+    IncludeRulesInstruction(const QString &context, int hint, const QString &replaceItemData);
+
+    const QString &sourceContext() const;
+    int indexHint() const;
+    bool replaceItemData() const;
+
+private:
+    QString m_sourceContext;
+    int m_indexHint;
+    bool m_replaceItemData;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // INCLUDERULESINSTRUCTION_H
diff --git a/src/plugins/genericeditor/itemdata.cpp b/src/plugins/genericeditor/itemdata.cpp
new file mode 100644
index 00000000000..74e5ca7dbc6
--- /dev/null
+++ b/src/plugins/genericeditor/itemdata.cpp
@@ -0,0 +1,127 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "itemdata.h"
+#include "reuse.h"
+
+using namespace Highlight;
+using namespace Internal;
+
+namespace {
+    static const QLatin1String kDsNormal("dsNormal");
+    static const QLatin1String kDsKeyword("dsKeyword");
+    static const QLatin1String kDsDataType("dsDataType");
+    static const QLatin1String kDsDecVal("dsDecVal");
+    static const QLatin1String kDsBaseN("dsBaseN");
+    static const QLatin1String kDsFloat("dsFloat");
+    static const QLatin1String kDsChar("dsChar");
+    static const QLatin1String kDsString("dsString");
+    static const QLatin1String kDsComment("dsComment");
+    static const QLatin1String kDsOthers("dsOthers");
+    static const QLatin1String kDsAlert("dsAlert");
+    static const QLatin1String kDsFunction("dsFunction");
+    static const QLatin1String kDsRegionMarker("dsRegionMarker");
+    static const QLatin1String kDsError("dsError");
+}
+
+ItemData::ItemData()
+{}
+
+void ItemData::setStyle(const QString &style)
+{ m_style = style; }
+
+void ItemData::setColor(const QString &color)
+{ m_color.setNamedColor(color); }
+
+void ItemData::setSelectionColor(const QString &color)
+{ m_selectionColor.setNamedColor(color); }
+
+void ItemData::setItalic(const QString &italic)
+{ m_font.setItalic(toBool(italic)); }
+
+void ItemData::setBold(const QString &bold)
+{ m_font.setBold(toBool(bold)); }
+
+void ItemData::setUnderlined(const QString &underlined)
+{ m_font.setUnderline(toBool(underlined)); }
+
+void ItemData::setStrikedOut(const QString &striked)
+{ m_font.setStrikeOut(toBool(striked)); }
+
+void ItemData::configureFormat()
+{
+    //Todo: Overwrite defaults when true?
+    m_format.setFont(m_font);
+
+    if (m_style == kDsNormal) {
+        m_format.setForeground(Qt::black);
+    } else if (m_style == kDsKeyword) {
+        m_format.setForeground(Qt::black);
+        m_format.setFontWeight(QFont::Bold);
+    } else if (m_style == kDsDataType) {
+        m_format.setForeground(Qt::blue);
+    } else if (m_style == kDsDecVal) {
+        m_format.setForeground(Qt::darkYellow);
+    } else if (m_style == kDsBaseN) {
+        m_format.setForeground(Qt::darkYellow);
+        m_format.setFontWeight(QFont::Bold);
+    } else if (m_style == kDsFloat) {
+        m_format.setForeground(Qt::darkYellow);
+        m_format.setFontUnderline(true);
+    } else if (m_style == kDsChar) {
+        m_format.setForeground(Qt::magenta);
+    } else if (m_style == kDsString) {
+        m_format.setForeground(Qt::red);
+    } else if (m_style == kDsComment) {
+        m_format.setForeground(Qt::darkGray);
+        m_format.setFontItalic(true);
+        m_format.setFontWeight(QFont::Bold);
+    } else if (m_style == kDsOthers) {
+        m_format.setForeground(Qt::darkGreen);
+    } else if (m_style == kDsAlert) {
+        m_format.setForeground(Qt::darkRed);
+        m_format.setFontWeight(QFont::Bold);
+    } else if (m_style == kDsFunction) {
+        m_format.setForeground(Qt::darkBlue);
+        m_format.setFontWeight(QFont::Bold);
+    } else if (m_style == kDsRegionMarker) {
+        m_format.setForeground(Qt::yellow);
+    } else if (m_style == kDsError) {
+        m_format.setForeground(Qt::darkRed);
+        m_format.setFontUnderline(true);
+    }
+
+    if (m_color.isValid())
+        m_format.setForeground(QColor(m_color));
+    //if (m_selectionColor.isValid())
+        //m_format.setBackground(QColor(m_selectionColor));
+}
+
+const QTextCharFormat &ItemData::format() const
+{ return m_format; }
diff --git a/src/plugins/genericeditor/itemdata.h b/src/plugins/genericeditor/itemdata.h
new file mode 100644
index 00000000000..ffb1b0353e0
--- /dev/null
+++ b/src/plugins/genericeditor/itemdata.h
@@ -0,0 +1,69 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef ITEMDATA_H
+#define ITEMDATA_H
+
+#include <QtCore/QString>
+
+#include <QtGui/QColor>
+#include <QtGui/QFont>
+#include <QtGui/QTextCharFormat>
+
+namespace Highlight {
+namespace Internal {
+
+class ItemData
+{
+public:
+    ItemData();
+
+    void setStyle(const QString &style);
+    void setColor(const QString &color);
+    void setSelectionColor(const QString &color);
+    void setItalic(const QString &italic);
+    void setBold(const QString &bold);
+    void setUnderlined(const QString &underlined);
+    void setStrikedOut(const QString &striked);    
+    void configureFormat();
+
+    const QTextCharFormat &format() const;
+
+private:
+    QString m_style;
+    QColor m_color;
+    QColor m_selectionColor;
+    QFont m_font;
+    QTextCharFormat m_format;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // ITEMDATA_H
diff --git a/src/plugins/genericeditor/keywordlist.cpp b/src/plugins/genericeditor/keywordlist.cpp
new file mode 100644
index 00000000000..41de091323f
--- /dev/null
+++ b/src/plugins/genericeditor/keywordlist.cpp
@@ -0,0 +1,61 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "keywordlist.h"
+
+using namespace Highlight;
+using namespace Internal;
+
+void KeywordList::addKeyword(const QString &keyword)
+{
+    if (keyword.isEmpty())
+        return; 
+
+    m_keywords.insert(keyword);
+}
+
+bool KeywordList::isKeyword(const QString &keyword, Qt::CaseSensitivity sensitivity) const
+{
+    if (keyword.isEmpty())
+        return false;
+
+    // Case sensitivity could be implemented, for example, by converting all keywords to lower
+    // if the global sensitivity attribute is insensitive, then always checking for containment
+    // (with a conversion to lower in the necessary cases). But the code below is one alternative
+    // to support the existence of local sensitivity attributes (which override the global one -
+    // currently not documented).
+    if (sensitivity == Qt::CaseSensitive) {
+        return m_keywords.contains(keyword);
+    } else {
+        foreach (const QString &s, m_keywords)
+            if (keyword.compare(s, Qt::CaseInsensitive) == 0)
+                return true;
+        return false;
+    }
+}
diff --git a/src/plugins/genericeditor/keywordlist.h b/src/plugins/genericeditor/keywordlist.h
new file mode 100644
index 00000000000..1c072e0e609
--- /dev/null
+++ b/src/plugins/genericeditor/keywordlist.h
@@ -0,0 +1,53 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef KEYWORDLIST_H
+#define KEYWORDLIST_H
+
+#include <QtCore/QString>
+#include <QtCore/QSet>
+
+namespace Highlight {
+namespace Internal {
+
+class KeywordList
+{
+public:
+
+    void addKeyword(const QString &keyword);
+    bool isKeyword(const QString &keyword, Qt::CaseSensitivity sensitivity) const;
+
+private:
+    QSet<QString> m_keywords;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // KEYWORDLIST_H
diff --git a/src/plugins/genericeditor/languagespecificfactories.cpp b/src/plugins/genericeditor/languagespecificfactories.cpp
new file mode 100644
index 00000000000..6710afe95ca
--- /dev/null
+++ b/src/plugins/genericeditor/languagespecificfactories.cpp
@@ -0,0 +1,143 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "languagespecificfactories.h"
+#include "genericeditorconstants.h"
+#include "genericeditor.h"
+#include "genericeditorplugin.h"
+
+#include <coreplugin/icore.h>
+#include <coreplugin/mimedatabase.h>
+
+using namespace Highlight;
+using namespace Internal;
+
+// C
+CFactory::CFactory(QObject *parent) : GenericEditorFactory(parent)
+{
+    addMimeType(QLatin1String(Highlight::Constants::C_HEADER_MIMETYPE));
+    addMimeType(QLatin1String(Highlight::Constants::C_SOURCE_MIMETYPE));
+}
+
+GenericEditor *CFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kCDefinitionId, parent); }
+
+// C++
+CppFactory::CppFactory(QObject *parent) : GenericEditorFactory(parent)
+{
+    addMimeType(QLatin1String(Highlight::Constants::CPP_HEADER_MIMETYPE));
+    addMimeType(QLatin1String(Highlight::Constants::CPP_SOURCE_MIMETYPE));
+}
+
+GenericEditor *CppFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kCppDefinitionId, parent); }
+
+// Css
+CssFactory::CssFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::CSS_MIMETYPE)); }
+
+GenericEditor *CssFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kCssDefinitionId, parent); }
+
+// Fortran
+FortranFactory::FortranFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::FORTRAN_MIMETYPE)); }
+
+GenericEditor *FortranFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kFortranDefinitionId, parent); }
+
+// Html
+HtmlFactory::HtmlFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::HTML_MIMETYPE)); }
+
+GenericEditor *HtmlFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kHtmlDefinitionId, parent); }
+
+// Java
+JavaFactory::JavaFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::JAVA_MIMETYPE)); }
+
+GenericEditor *JavaFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kJavaDefinitionId, parent); }
+
+// Javascript
+JavascriptFactory::JavascriptFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::JAVASCRIPT_MIMETYPE)); }
+
+GenericEditor *JavascriptFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kJavascriptDefinitionId, parent); }
+
+// ObjectiveC
+ObjectiveCFactory::ObjectiveCFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::OBJECTIVEC_MIMETYPE)); }
+
+GenericEditor *ObjectiveCFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kObjectiveCDefinitionId, parent); }
+
+// Perl
+PerlFactory::PerlFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::PERL_MIMETYPE)); }
+
+GenericEditor *PerlFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kPerlDefinitionId, parent); }
+
+// Php
+PhpFactory::PhpFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::PHP_MIMETYPE)); }
+
+GenericEditor *PhpFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kPhpDefinitionId, parent); }
+
+// Python
+PythonFactory::PythonFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::PYTHON_MIMETYPE)); }
+
+GenericEditor *PythonFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kPythonDefinitionId, parent); }
+
+// Ruby
+RubyFactory::RubyFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::RUBY_MIMETYPE)); }
+
+GenericEditor *RubyFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kRubyDefinitionId, parent); }
+
+// SQL
+SqlFactory::SqlFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::SQL_MIMETYPE)); }
+
+GenericEditor *SqlFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kSqlDefinitionId, parent); }
+
+// Tcl
+TclFactory::TclFactory(QObject *parent) : GenericEditorFactory(parent)
+{ addMimeType(QLatin1String(Highlight::Constants::TCL_MIMETYPE)); }
+
+GenericEditor *TclFactory::createGenericEditor(QWidget *parent)
+{ return new GenericEditor(GenericEditorPlugin::kTclDefinitionId, parent); }
diff --git a/src/plugins/genericeditor/languagespecificfactories.h b/src/plugins/genericeditor/languagespecificfactories.h
new file mode 100644
index 00000000000..ed27458d13f
--- /dev/null
+++ b/src/plugins/genericeditor/languagespecificfactories.h
@@ -0,0 +1,195 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef LANGUAGESPECIFICFACTORIES_H
+#define LANGUAGESPECIFICFACTORIES_H
+
+#include "genericeditorfactory.h"
+
+namespace Highlight {
+namespace Internal {
+
+class CFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    CFactory(QObject *parent = 0);
+    virtual ~CFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class CppFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    CppFactory(QObject *parent = 0);
+    virtual ~CppFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class CssFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    CssFactory(QObject *parent = 0);
+    virtual ~CssFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class FortranFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    FortranFactory(QObject *parent = 0);
+    virtual ~FortranFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class HtmlFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    HtmlFactory(QObject *parent = 0);
+    virtual ~HtmlFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class JavaFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    JavaFactory(QObject *parent = 0);
+    virtual ~JavaFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class JavascriptFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    JavascriptFactory(QObject *parent = 0);
+    virtual ~JavascriptFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class ObjectiveCFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    ObjectiveCFactory(QObject *parent = 0);
+    virtual ~ObjectiveCFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class PerlFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    PerlFactory(QObject *parent = 0);
+    virtual ~PerlFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class PhpFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    PhpFactory(QObject *parent = 0);
+    virtual ~PhpFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class PythonFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    PythonFactory(QObject *parent = 0);
+    virtual ~PythonFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class RubyFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    RubyFactory(QObject *parent = 0);
+    virtual ~RubyFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class SqlFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    SqlFactory(QObject *parent = 0);
+    virtual ~SqlFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+class TclFactory : public GenericEditorFactory
+{
+    Q_OBJECT
+public:
+    TclFactory(QObject *parent = 0);
+    virtual ~TclFactory() {}
+
+private:
+    virtual GenericEditor *createGenericEditor(QWidget *parent);
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // LANGUAGESPECIFICFACTORIES_H
diff --git a/src/plugins/genericeditor/progressdata.cpp b/src/plugins/genericeditor/progressdata.cpp
new file mode 100644
index 00000000000..47696b04382
--- /dev/null
+++ b/src/plugins/genericeditor/progressdata.cpp
@@ -0,0 +1,82 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "progressdata.h"
+
+#include <QtCore/QtGlobal>
+
+using namespace Highlight;
+using namespace Internal;
+
+ProgressData::ProgressData() :
+    m_offset(0),
+    m_savedOffset(-1),
+    m_onlySpacesSoFar(true),
+    m_willContinueLine(false)
+{}
+
+void ProgressData::setOffset(const int offset)
+{ m_offset = offset; }
+
+int ProgressData::offset() const
+{ return m_offset; }
+
+void ProgressData::incrementOffset()
+{ ++m_offset; }
+
+void ProgressData::incrementOffset(const int increment)
+{ m_offset += increment; }
+
+void ProgressData::saveOffset()
+{ m_savedOffset = m_offset; }
+
+void ProgressData::restoreOffset()
+{
+    Q_ASSERT(m_savedOffset != -1);
+    m_offset = m_savedOffset;
+    m_savedOffset = -1;
+}
+
+void ProgressData::setOnlySpacesSoFar(const bool onlySpaces)
+{ m_onlySpacesSoFar = onlySpaces; }
+
+bool ProgressData::onlySpacesSoFar() const
+{ return m_onlySpacesSoFar; }
+
+void ProgressData::setWillContinueLine(const bool willContinue)
+{ m_willContinueLine = willContinue; }
+
+bool ProgressData::willContinueLine() const
+{ return m_willContinueLine; }
+
+void ProgressData::setCaptures(const QStringList &captures)
+{ m_captures = captures; }
+
+const QStringList &ProgressData::captures() const
+{ return m_captures; }
diff --git a/src/plugins/genericeditor/progressdata.h b/src/plugins/genericeditor/progressdata.h
new file mode 100644
index 00000000000..d3df90acce1
--- /dev/null
+++ b/src/plugins/genericeditor/progressdata.h
@@ -0,0 +1,72 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef PROGRESSDATA_H
+#define PROGRESSDATA_H
+
+#include <QtCore/QStringList>
+
+namespace Highlight {
+namespace Internal {
+
+class ProgressData
+{
+public:
+    ProgressData();
+
+    void setOffset(const int offset);
+    int offset() const;
+
+    void incrementOffset();
+    void incrementOffset(const int increment);
+
+    void saveOffset();
+    void restoreOffset();
+
+    void setOnlySpacesSoFar(const bool onlySpaces);
+    bool onlySpacesSoFar() const;
+
+    void setWillContinueLine(const bool willContinue);
+    bool willContinueLine() const;
+
+    void setCaptures(const QStringList &captures);
+    const QStringList &captures() const;
+
+private:
+    int m_offset;
+    int m_savedOffset;
+    bool m_onlySpacesSoFar;
+    bool m_willContinueLine;
+    QStringList m_captures;
+};
+
+} // namespace Internal
+} // namespace Highgliht
+
+#endif // PROGRESSDATA_H
diff --git a/src/plugins/genericeditor/reuse.h b/src/plugins/genericeditor/reuse.h
new file mode 100644
index 00000000000..3bcf39af352
--- /dev/null
+++ b/src/plugins/genericeditor/reuse.h
@@ -0,0 +1,91 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef REUSE_H
+#define REUSE_H
+
+#include <Qt>
+#include <QtCore/QString>
+#include <QtCore/QLatin1String>
+#include <QtCore/QChar>
+
+namespace Highlight {
+namespace Internal {
+
+inline bool toBool(const QString &s)
+{
+    static const QLatin1String kTrue("true");
+    static const QLatin1String k1("1");
+
+    if (s.toLower() == kTrue || s == k1)
+        return true;
+    return false;
+}
+
+
+inline Qt::CaseSensitivity toCaseSensitivity(const bool sensitive)
+{
+    if (sensitive)
+        return Qt::CaseSensitive;
+    return Qt::CaseInsensitive;
+}
+
+inline bool isOctalDigit(const QChar &c)
+{
+    static const QLatin1Char k0('0');
+    static const QLatin1Char k7('7');
+
+    return c >= k0 && c <= k7;
+}
+
+inline bool isHexDigit(const QChar &c)
+{
+    static const QLatin1Char k0('0');
+    static const QLatin1Char k9('9');
+    static const QLatin1Char kA('A');
+    static const QLatin1Char kF('F');
+    static const QLatin1Char ka('a');
+    static const QLatin1Char kf('f');
+
+    if ((c >= k0 && c <= k9) || (c >= kA && c <= kF) || (c >= ka && c <= kf))
+        return true;
+
+    return false;
+}
+
+inline void setStartCharacter(QChar &c, const QString &character)
+{
+    if (!character.isEmpty())
+        c = character.at(0);
+}
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // REUSE_H
diff --git a/src/plugins/genericeditor/rule.cpp b/src/plugins/genericeditor/rule.cpp
new file mode 100644
index 00000000000..31100a1547b
--- /dev/null
+++ b/src/plugins/genericeditor/rule.cpp
@@ -0,0 +1,292 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "rule.h"
+#include "highlighterexception.h"
+#include "progressdata.h"
+#include "highlightdefinition.h"
+#include "reuse.h"
+
+#include <QtCore/QStringList>
+
+#include <functional>
+
+using namespace Highlight;
+using namespace Internal;
+
+const QLatin1Char Rule::kBackSlash('\\');
+const QLatin1Char Rule::kUnderscore('_');
+const QLatin1Char Rule::kDot('.');
+const QLatin1Char Rule::kPlus('+');
+const QLatin1Char Rule::kMinus('-');
+const QLatin1Char Rule::kZero('0');
+const QLatin1Char Rule::kQuote('\"');
+const QLatin1Char Rule::kSingleQuote('\'');
+const QLatin1Char Rule::kQuestion('?');
+const QLatin1Char Rule::kX('x');
+const QLatin1Char Rule::kA('a');
+const QLatin1Char Rule::kB('b');
+const QLatin1Char Rule::kE('e');
+const QLatin1Char Rule::kF('f');
+const QLatin1Char Rule::kN('n');
+const QLatin1Char Rule::kR('r');
+const QLatin1Char Rule::kT('t');
+const QLatin1Char Rule::kV('v');
+
+Rule::Rule(bool consumesNonSpace) :
+    m_lookAhead(false), m_firstNonSpace(false), m_column(-1), m_consumesNonSpace(consumesNonSpace)
+{}
+
+Rule::~Rule()
+{}
+
+void Rule::setContext(const QString &context)
+{ m_context = context; }
+
+const QString &Rule::context() const
+{ return m_context; }
+
+void Rule::setItemData(const QString &itemData)
+{ m_itemData = itemData; }
+
+const QString &Rule::itemData() const
+{ return m_itemData; }
+
+void Rule::setBeginRegion(const QString &begin)
+{ m_beginRegion = begin; }
+
+const QString &Rule::beginRegion() const
+{ return m_beginRegion; }
+
+void Rule::setEndRegion(const QString &end)
+{ m_endRegion = end; }
+
+const QString &Rule::endRegion() const
+{ return m_endRegion; }
+
+void Rule::setLookAhead(const QString &lookAhead)
+{ m_lookAhead = toBool(lookAhead); }
+
+bool Rule::isLookAhead() const
+{ return m_lookAhead; }
+
+void Rule::setFirstNonSpace(const QString &firstNonSpace)
+{ m_firstNonSpace = toBool(firstNonSpace); }
+
+bool Rule::isFirstNonSpace() const
+{ return m_firstNonSpace; }
+
+void Rule::setColumn(const QString &column)
+{
+    bool ok;
+    m_column = column.toInt(&ok);
+    if (!ok)
+        m_column = -1;
+}
+
+int Rule::column() const
+{ return m_column; }
+
+void Rule::addChild(const QSharedPointer<Rule> &rule)
+{ m_childRules.append(rule); }
+
+bool Rule::hasChild() const
+{ return !m_childRules.isEmpty(); }
+
+const QList<QSharedPointer<Rule> > &Rule::childs() const
+{ return m_childRules; }
+
+void Rule::setDefinition(const QSharedPointer<HighlightDefinition> &definition)
+{ m_definition = definition; }
+
+const QSharedPointer<HighlightDefinition> &Rule::definition() const
+{ return m_definition; }
+
+template <class predicate_t>
+bool Rule::predicateMatchSucceed(const QString &text,
+                                 const int length,
+                                 ProgressData *progress,
+                                 const predicate_t &p) const
+{
+    int original = progress->offset();
+    while (progress->offset() < length && p(text.at(progress->offset())))
+        progress->incrementOffset();
+
+    if (original != progress->offset())
+        return true;
+
+    return false;
+}
+
+bool Rule::charPredicateMatchSucceed(const QString &text,
+                                     const int length,
+                                     ProgressData *progress,
+                                     bool (QChar::* predicate)() const) const
+{
+    return predicateMatchSucceed(text, length, progress, std::mem_fun_ref(predicate));
+}
+
+bool Rule::charPredicateMatchSucceed(const QString &text,
+                                     const int length,
+                                     ProgressData *progress,
+                                     bool (*predicate)(const QChar &)) const
+{
+    return predicateMatchSucceed(text, length, progress, std::ptr_fun(predicate));
+}
+
+bool Rule::matchSucceed(const QString &text, const int length, ProgressData *progress) const
+{ 
+    if (m_firstNonSpace && !progress->onlySpacesSoFar())
+        return false;
+
+    if (m_column != -1 && m_column != progress->offset())
+        return false;
+
+    int original = progress->offset();
+    if (doMatchSucceed(text, length, progress)) {
+        if (progress->onlySpacesSoFar() && !m_lookAhead && m_consumesNonSpace)
+            progress->setOnlySpacesSoFar(false);
+
+        if (m_lookAhead)
+            progress->setOffset(original);
+
+        return true;
+    }
+
+    return false;
+}
+
+Rule *Rule::clone() const
+{ return doClone(); }
+
+bool Rule::matchCharacter(const QString &text,
+                          const int length,
+                          ProgressData *progress,
+                          const QChar &c,
+                          bool saveRestoreOffset) const
+{
+    Q_UNUSED(length)
+    Q_ASSERT(progress->offset() < length);
+
+    if (text.at(progress->offset()) == c) {
+        if (saveRestoreOffset)
+            progress->saveOffset();
+        progress->incrementOffset();
+        return true;
+    }
+
+    return false;
+}
+
+bool Rule::matchEscapeSequence(const QString &text,
+                               const int length,
+                               ProgressData *progress,
+                               bool saveRestoreOffset) const
+{
+    if (matchCharacter(text, length, progress, kBackSlash, saveRestoreOffset)) {
+
+        if (progress->offset() < length) {
+            const QChar &c = text.at(progress->offset());
+            if (c == kA || c == kB || c == kE || c == kF || c == kN || c == kR || c == kT ||
+                c == kV || c == kV || c == kQuestion || c == kSingleQuote || c == kQuote ||
+                c == kBackSlash) {
+                progress->incrementOffset();
+                return true;
+            } else if (saveRestoreOffset) {
+                    progress->restoreOffset();
+            }
+        } else if (saveRestoreOffset) {
+            progress->restoreOffset();
+        }
+    }
+
+    return false;
+}
+
+bool Rule::matchOctalSequence(const QString &text,
+                              const int length,
+                              ProgressData *progress,
+                              bool saveRestoreOffset) const
+{
+    // An octal sequence is identified as in the C++ Standard.
+    // octal-escape-sequence:
+    //   \ octal-digit
+    //   \ octal-digit octal-digit
+    //   \ octal-digit octal-digit octal-digit
+
+    if (matchCharacter(text, length, progress, kBackSlash, saveRestoreOffset)) {
+
+        int count = 0;
+        while (progress->offset() < length &&
+               count < 3 &&
+               isOctalDigit(text.at(progress->offset()))) {
+            ++count;
+            progress->incrementOffset();
+        }
+
+        if (count > 0)
+            return true;
+        else if (saveRestoreOffset)
+            progress->restoreOffset();
+    }
+
+    return false;
+}
+
+bool Rule::matchHexSequence(const QString &text,
+                            const int length,
+                            ProgressData *progress,
+                            bool saveRestoreOffset) const
+{
+    // An hex sequence is identified as in the C++ Standard.
+    // hexadecimal-escape-sequence:
+    //   \x hexadecimal-digit
+    //   hexadecimal-escape-sequence hexadecimal-digit
+
+    if (matchCharacter(text, length, progress, kBackSlash, saveRestoreOffset)) {
+
+        if (progress->offset() < length && matchCharacter(text, length, progress, kX, false)) {
+            bool found = false;
+            while (progress->offset() < length && isHexDigit(text.at(progress->offset()))) {
+                if (!found)
+                    found = true;
+                progress->incrementOffset();
+            }
+
+            if (found)
+                return true;
+            else if (saveRestoreOffset)
+                progress->restoreOffset();
+        } else if (saveRestoreOffset) {
+            progress->restoreOffset();
+        }
+    }
+
+    return false;
+}
diff --git a/src/plugins/genericeditor/rule.h b/src/plugins/genericeditor/rule.h
new file mode 100644
index 00000000000..d5c58b821d1
--- /dev/null
+++ b/src/plugins/genericeditor/rule.h
@@ -0,0 +1,160 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef RULE_H
+#define RULE_H
+
+#include <QtCore/QString>
+#include <QtCore/QList>
+#include <QtCore/QSharedPointer>
+
+namespace Highlight {
+namespace Internal {
+
+class ProgressData;
+class HighlightDefinition;
+
+class Rule
+{
+public:
+    Rule(bool consumesNonSpace = true);
+    virtual ~Rule();
+
+    void setContext(const QString &context);
+    const QString &context() const;
+
+    void setItemData(const QString &itemData);
+    const QString &itemData() const;
+
+    void setBeginRegion(const QString &begin);
+    const QString &beginRegion() const;
+
+    void setEndRegion(const QString &end);
+    const QString &endRegion() const;
+
+    void setLookAhead(const QString &lookAhead);
+    bool isLookAhead() const;
+
+    void setFirstNonSpace(const QString &firstNonSpace);
+    bool isFirstNonSpace() const;
+
+    void setColumn(const QString &column);
+    int column() const;
+
+    void addChild(const QSharedPointer<Rule> &rule);
+    const QList<QSharedPointer<Rule> > &childs() const;
+    bool hasChild() const;
+
+    void setDefinition(const QSharedPointer<HighlightDefinition> &definition);
+    const QSharedPointer<HighlightDefinition> &definition() const;
+
+    bool matchSucceed(const QString &text, const int length, ProgressData *progress) const;
+
+    Rule *clone() const;
+
+protected:
+    bool charPredicateMatchSucceed(const QString &text,
+                                   const int length,
+                                   ProgressData *progress,
+                                   bool (QChar::* predicate)() const) const;
+    bool charPredicateMatchSucceed(const QString &text,
+                                   const int length,
+                                   ProgressData *progress,
+                                   bool (*predicate)(const QChar &)) const;
+
+    bool matchCharacter(const QString &text,
+                        const int length,
+                        ProgressData *progress,
+                        const QChar &c,
+                        bool saveRestoreOffset = true) const;
+    bool matchEscapeSequence(const QString &text,
+                             const int length,
+                             ProgressData *progress,
+                             bool saveRestoreOffset = true) const;
+    bool matchOctalSequence(const QString &text,
+                            const int length,
+                            ProgressData *progress,
+                            bool saveRestoreOffset = true) const;
+    bool matchHexSequence(const QString &text,
+                          const int length,
+                          ProgressData *progress,
+                          bool saveRestoreOffset = true) const;
+
+    static const QLatin1Char kBackSlash;
+    static const QLatin1Char kUnderscore;
+    static const QLatin1Char kDot;
+    static const QLatin1Char kPlus;
+    static const QLatin1Char kMinus;
+    static const QLatin1Char kZero;
+    static const QLatin1Char kQuote;
+    static const QLatin1Char kSingleQuote;
+    static const QLatin1Char kQuestion;
+    static const QLatin1Char kX;
+    static const QLatin1Char kA;
+    static const QLatin1Char kB;
+    static const QLatin1Char kE;
+    static const QLatin1Char kF;
+    static const QLatin1Char kN;
+    static const QLatin1Char kR;
+    static const QLatin1Char kT;
+    static const QLatin1Char kV;    
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const = 0;
+
+    virtual Rule *doClone() const = 0;
+
+    template <class predicate_t>
+    bool predicateMatchSucceed(const QString &text,
+                               const int length,
+                               ProgressData *progress,
+                               const predicate_t &p) const;
+
+    QString m_context;
+    QString m_itemData;
+    QString m_beginRegion;
+    QString m_endRegion;
+    bool m_lookAhead;
+    bool m_firstNonSpace;
+    int m_column;
+    bool m_consumesNonSpace;
+
+    QList<QSharedPointer<Rule> > m_childRules;
+
+    // Rules are represented within contexts. However, they have their own definition because
+    // of externally included rules.
+    QSharedPointer<HighlightDefinition> m_definition;
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // RULE_H
diff --git a/src/plugins/genericeditor/specificrules.cpp b/src/plugins/genericeditor/specificrules.cpp
new file mode 100644
index 00000000000..18678ae3fe3
--- /dev/null
+++ b/src/plugins/genericeditor/specificrules.cpp
@@ -0,0 +1,467 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "specificrules.h"
+#include "highlightdefinition.h"
+#include "keywordlist.h"
+#include "progressdata.h"
+#include "reuse.h"
+
+#include <QLatin1Char>
+
+using namespace Highlight;
+using namespace Internal;
+
+namespace {
+
+void replaceByCaptures(QChar *c, const QStringList &captures)
+{
+    int index = c->digitValue();
+    if (index > 0) {
+        const QString &capture = captures.at(index);
+        *c = capture.at(0);
+    }
+}
+
+void replaceByCaptures(QString *s, const QStringList &captures)
+{
+    static const QLatin1Char kPercent('%');
+
+    int index;
+    int from = 0;
+    while ((index = s->indexOf(kPercent, from)) != -1) {
+        from = index + 1;
+
+        QString accumulator;
+        while (from < s->length() && s->at(from).isDigit()) {
+            accumulator.append(s->at(from));
+            ++from;
+        }
+
+        bool ok;
+        int number = accumulator.toInt(&ok);
+        Q_ASSERT(ok);
+
+        s->replace(index, accumulator.length() + 1, captures.at(number));
+        index = from;
+    }
+}
+}
+
+// DetectChar
+void DetectCharRule::setChar(const QString &character)
+{ setStartCharacter(m_char, character); }
+
+void DetectCharRule::doReplaceExpressions(const QStringList &captures)
+{ replaceByCaptures(&m_char, captures); }
+
+bool DetectCharRule::doMatchSucceed(const QString &text,
+                                    const int length,
+                                    ProgressData *progress) const
+{
+    return matchCharacter(text, length, progress, m_char);
+}
+
+// Detect2Chars
+void Detect2CharsRule::setChar(const QString &character)
+{ setStartCharacter(m_char, character); }
+
+void Detect2CharsRule::setChar1(const QString &character)
+{ setStartCharacter(m_char1, character); }
+
+void Detect2CharsRule::doReplaceExpressions(const QStringList &captures)
+{
+    replaceByCaptures(&m_char, captures);
+    replaceByCaptures(&m_char1, captures);
+}
+
+bool Detect2CharsRule::doMatchSucceed(const QString &text,
+                                      const int length,
+                                      ProgressData *progress) const
+{
+    if (matchCharacter(text, length, progress, m_char)) {
+        if (progress->offset() < length && matchCharacter(text, length, progress, m_char1, false))
+            return true;
+        else
+            progress->restoreOffset();
+    }
+
+    return false;
+}
+
+// AnyChar
+void AnyCharRule::setCharacterSet(const QString &s)
+{ m_characterSet = s; }
+
+bool AnyCharRule::doMatchSucceed(const QString &text,
+                                 const int length,
+                                 ProgressData *progress) const
+{
+    Q_UNUSED(length)
+
+    if (m_characterSet.contains(text.at(progress->offset()))) {
+        progress->incrementOffset();
+        return true;
+    }
+
+    return false;
+}
+
+// StringDetect
+void StringDetectRule::setString(const QString &s)
+{
+    m_string = s;
+    m_length = m_string.length();
+}
+
+void StringDetectRule::setInsensitive(const QString &insensitive)
+{ m_caseSensitivity = toCaseSensitivity(!toBool(insensitive)); }
+
+void StringDetectRule::doReplaceExpressions(const QStringList &captures)
+{ replaceByCaptures(&m_string, captures); }
+
+bool StringDetectRule::doMatchSucceed(const QString &text,
+                                      const int length,
+                                      ProgressData *progress) const
+{
+    if (length - progress->offset() >= m_length) {
+        QString candidate = text.fromRawData(text.unicode() + progress->offset(), m_length);
+        if (candidate.compare(m_string, m_caseSensitivity) == 0) {
+            progress->incrementOffset(m_length);
+            return true;
+        }
+    }
+
+    return false;
+}
+
+// RegExpr
+void RegExprRule::setPattern(const QString &pattern)
+{ m_expression.setPattern(pattern); }
+
+void RegExprRule::setInsensitive(const QString &insensitive)
+{ m_expression.setCaseSensitivity(toCaseSensitivity(!toBool(insensitive))); }
+
+void RegExprRule::setMinimal(const QString &minimal)
+{ m_expression.setMinimal(toBool(minimal)); }
+
+void RegExprRule::doReplaceExpressions(const QStringList &captures)
+{
+    QString s = m_expression.pattern();
+    replaceByCaptures(&s, captures);
+    m_expression.setPattern(s);
+}
+
+bool RegExprRule::doMatchSucceed(const QString &text,
+                                 const int length,
+                                 ProgressData *progress) const
+{
+    Q_UNUSED(length)
+
+    // This is not documented but a regular expression match is considered valid if it starts
+    // at the current position and if the match length is not zero. Checked in Kate's source code
+    // after some unexpected problems.
+    const int offset = progress->offset();
+    if (m_expression.indexIn(text, offset, QRegExp::CaretAtZero) == offset) {
+        if (m_expression.matchedLength() == 0)
+            return false;
+        progress->incrementOffset(m_expression.matchedLength());
+        progress->setCaptures(m_expression.capturedTexts());
+        return true;
+    }
+
+    return false;
+}
+
+// Keyword
+KeywordRule::KeywordRule(const QSharedPointer<HighlightDefinition> &definition) :
+    m_overrideGlobal(false)
+{
+    setDefinition(definition);
+}
+
+KeywordRule::~KeywordRule()
+{}
+
+void KeywordRule::setInsensitive(const QString &insensitive)
+{
+    if (!insensitive.isEmpty()) {
+        m_overrideGlobal = true;
+        m_localCaseSensitivity = toCaseSensitivity(!toBool(insensitive));
+    }
+}
+
+void KeywordRule::setList(const QString &listName)
+{ m_list = definition()->keywordList(listName); }
+
+bool KeywordRule::doMatchSucceed(const QString &text,
+                                 const int length,
+                                 ProgressData *progress) const
+{
+    int current = progress->offset();
+
+    if (current > 0 && !definition()->isDelimiter(text.at(current - 1)))
+        return false;
+    if (definition()->isDelimiter(text.at(current)))
+        return false;
+
+    while (current < length && !definition()->isDelimiter(text.at(current)))
+        ++current;
+
+    QString candidate =
+        QString::fromRawData(text.unicode() + progress->offset(), current - progress->offset());
+    if ((m_overrideGlobal && m_list->isKeyword(candidate, m_localCaseSensitivity)) ||
+        (!m_overrideGlobal && m_list->isKeyword(candidate, definition()->keywordsSensitive()))) {
+        progress->setOffset(current);
+        return true;
+    }
+
+    return false;
+}
+
+// Int
+bool IntRule::doMatchSucceed(const QString &text,
+                             const int length,
+                             ProgressData *progress) const
+{
+    const int offset = progress->offset();
+
+    // This is necessary to correctly highlight an invalid octal like 09, for example.
+    if (offset > 0 && text.at(offset - 1).isDigit())
+        return false;
+
+    if (text.at(offset).isDigit() && text.at(offset) != kZero) {
+        progress->incrementOffset();
+        charPredicateMatchSucceed(text, length, progress, &QChar::isDigit);
+        return true;
+    }
+
+    return false;
+}
+
+// Float
+bool FloatRule::doMatchSucceed(const QString &text, const int length, ProgressData *progress) const
+{
+    progress->saveOffset();
+
+    bool integralPart = charPredicateMatchSucceed(text, length, progress, &QChar::isDigit);
+
+    bool decimalPoint = false;
+    if (progress->offset() < length && text.at(progress->offset()) == kDot) {
+        progress->incrementOffset();
+        decimalPoint = true;
+    }
+
+    bool fractionalPart = charPredicateMatchSucceed(text, length, progress, &QChar::isDigit);
+
+    bool exponentialPart = false;
+    int offset = progress->offset();
+    if (offset < length && (text.at(offset) == kE || text.at(offset).toLower() == kE)) {
+        progress->incrementOffset();
+
+        offset = progress->offset();
+        if (offset < length && (text.at(offset) == kPlus || text.at(offset) == kMinus))
+            progress->incrementOffset();
+
+        if (charPredicateMatchSucceed(text, length, progress, &QChar::isDigit)) {
+            exponentialPart = true;
+        } else {
+            progress->restoreOffset();
+            return false;
+        }
+    }
+
+    if ((integralPart || fractionalPart) && (decimalPoint || exponentialPart))
+        return true;
+
+    progress->restoreOffset();
+    return false;
+}
+
+// COctal
+bool HlCOctRule::doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const
+{
+    if (matchCharacter(text, length, progress, kZero)) {
+        // In the definition files the number matching rules which are more restrictive should
+        // appear before the rules which are least resctritive. Although this happens in general
+        // there is at least one case where this is not strictly followed for existent definition
+        // files (specifically, HlCHex comes before HlCOct). So the condition below.
+        const int offset = progress->offset();
+        if (offset < length && (text.at(offset) == kX || text.at(offset).toLower() == kX)) {
+            progress->restoreOffset();
+            return false;
+        }
+
+        charPredicateMatchSucceed(text, length, progress, &isOctalDigit);
+        return true;
+    }
+
+    return false;
+}
+
+// CHex
+bool HlCHexRule::doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const
+{
+    if (matchCharacter(text, length, progress, kZero)) {
+        const int offset = progress->offset();
+        if (offset < length && text.at(offset) != kX && text.at(offset).toLower() != kX) {
+            progress->restoreOffset();
+            return false;
+        }
+
+        progress->incrementOffset();
+        if (charPredicateMatchSucceed(text, length, progress, &isHexDigit))
+            return true;
+        else
+            progress->restoreOffset();
+    }
+
+    return false;
+}
+
+// CString
+bool HlCStringCharRule::doMatchSucceed(const QString &text,
+                                       const int length,
+                                       ProgressData *progress) const
+{
+    if (matchEscapeSequence(text, length, progress))
+        return true;
+
+    if (matchOctalSequence(text, length, progress))
+        return true;
+
+    if (matchHexSequence(text, length, progress))
+        return true;
+
+    return false;
+}
+
+// CChar
+bool HlCCharRule::doMatchSucceed(const QString &text,
+                                 const int length,
+                                 ProgressData *progress) const
+{
+    if (matchCharacter(text, length, progress, kSingleQuote)) {
+        if (progress->offset() < length) {
+            if (text.at(progress->offset()) != kBackSlash &&
+                text.at(progress->offset()) != kSingleQuote) {
+                progress->incrementOffset();
+            } else if (!matchEscapeSequence(text, length, progress, false)) {
+                progress->restoreOffset();
+                return false;
+            }
+
+            if (progress->offset() < length &&
+                matchCharacter(text, length, progress, kSingleQuote, false)) {
+                return true;
+            } else {
+                progress->restoreOffset();
+            }
+        } else {
+            progress->restoreOffset();
+        }
+    }
+
+    return false;
+}
+
+// RangeDetect
+void RangeDetectRule::setChar(const QString &character)
+{ setStartCharacter(m_char, character); }
+
+void RangeDetectRule::setChar1(const QString &character)
+{ setStartCharacter(m_char1, character); }
+
+bool RangeDetectRule::doMatchSucceed(const QString &text,
+                                     const int length,
+                                     ProgressData *progress) const
+{
+    if (matchCharacter(text, length, progress, m_char)) {
+        while (progress->offset() < length) {
+            if (matchCharacter(text, length, progress, m_char1, false))
+                return true;
+            progress->incrementOffset();
+        }
+        progress->restoreOffset();
+    }
+
+    return false;
+}
+
+// LineContinue
+bool LineContinueRule::doMatchSucceed(const QString &text,
+                                      const int length,
+                                      ProgressData *progress) const
+{
+    if (progress->offset() != length - 1)
+        return false;
+
+    if (text.at(progress->offset()) == kBackSlash) {
+        progress->setWillContinueLine(true);
+        return true;
+    }
+
+    return false;
+}
+
+// DetectSpaces
+DetectSpacesRule::DetectSpacesRule() : Rule(false)
+{}
+
+bool DetectSpacesRule::doMatchSucceed(const QString &text,
+                                      const int length,
+                                      ProgressData *progress) const
+{
+    return charPredicateMatchSucceed(text, length, progress, &QChar::isSpace);
+}
+
+// DetectIdentifier
+bool DetectIdentifierRule::doMatchSucceed(const QString &text,
+                                          const int length,
+                                          ProgressData *progress) const
+{
+    // Identifiers are characterized by a letter or underscore as the first character and then
+    // zero or more word characters (\w*).
+    if (text.at(progress->offset()).isLetter() || text.at(progress->offset()) == kUnderscore) {
+        progress->incrementOffset();
+        while (progress->offset() < length) {
+            const QChar &current = text.at(progress->offset());
+            if (current.isLetterOrNumber() || current.isMark() || current == kUnderscore)
+                progress->incrementOffset();
+            else
+                break;
+        }
+        return true;
+    }
+    return false;
+}
diff --git a/src/plugins/genericeditor/specificrules.h b/src/plugins/genericeditor/specificrules.h
new file mode 100644
index 00000000000..eb27a78c77a
--- /dev/null
+++ b/src/plugins/genericeditor/specificrules.h
@@ -0,0 +1,288 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef SPECIFICRULES_H
+#define SPECIFICRULES_H
+
+#include "rule.h"
+#include "dynamicrule.h"
+
+#include <QtCore/QChar>
+#include <QtCore/QString>
+#include <QtCore/QRegExp>
+#include <QtCore/QSharedPointer>
+
+namespace Highlight {
+namespace Internal {
+
+class KeywordList;
+class HighlightDefinition;
+
+class DetectCharRule : public DynamicRule
+{
+public:
+    virtual ~DetectCharRule() {}
+
+    void setChar(const QString &character);
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual DetectCharRule *doClone() const { return new DetectCharRule(*this); }
+    virtual void doReplaceExpressions(const QStringList &captures);
+
+    QChar m_char;
+};
+
+class Detect2CharsRule : public DynamicRule
+{
+public:
+    virtual ~Detect2CharsRule() {}
+
+    void setChar(const QString &character);
+    void setChar1(const QString &character);    
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual Detect2CharsRule *doClone() const { return new Detect2CharsRule(*this); }
+    virtual void doReplaceExpressions(const QStringList &captures);
+
+    QChar m_char;
+    QChar m_char1;
+};
+
+class AnyCharRule : public Rule
+{
+public:
+    virtual ~AnyCharRule() {}
+
+    void setCharacterSet(const QString &s);
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual AnyCharRule *doClone() const { return new AnyCharRule(*this); }
+
+    QString m_characterSet;
+};
+
+class StringDetectRule : public DynamicRule
+{
+public:
+    virtual ~StringDetectRule() {}
+
+    void setString(const QString &s);
+    void setInsensitive(const QString &insensitive);
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual StringDetectRule *doClone() const { return new StringDetectRule(*this); }
+    virtual void doReplaceExpressions(const QStringList &captures);
+
+    QString m_string;
+    int m_length;
+    Qt::CaseSensitivity m_caseSensitivity;
+};
+
+class RegExprRule : public DynamicRule
+{
+public:
+    virtual ~RegExprRule() {}
+
+    void setPattern(const QString &pattern);
+    void setInsensitive(const QString &insensitive);
+    void setMinimal(const QString &minimal);    
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual RegExprRule *doClone() const { return new RegExprRule(*this); }
+    virtual void doReplaceExpressions(const QStringList &captures);
+
+    QRegExp m_expression;
+};
+
+class KeywordRule : public Rule
+{
+public:
+    KeywordRule(const QSharedPointer<HighlightDefinition> &definition);
+    virtual ~KeywordRule();
+
+    void setInsensitive(const QString &insensitive);
+    void setList(const QString &listName);
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual KeywordRule *doClone() const { return new KeywordRule(*this); }
+
+    bool m_overrideGlobal;
+    Qt::CaseSensitivity m_localCaseSensitivity;
+    QSharedPointer<KeywordList> m_list;
+};
+
+class IntRule : public Rule
+{
+public:
+    virtual ~IntRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual IntRule *doClone() const { return new IntRule(*this); }
+};
+
+class FloatRule : public Rule
+{
+public:
+    virtual ~FloatRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual FloatRule *doClone() const { return new FloatRule(*this); }
+};
+
+class HlCOctRule : public Rule
+{
+public:
+    virtual ~HlCOctRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual HlCOctRule *doClone() const { return new HlCOctRule(*this); }
+};
+
+class HlCHexRule : public Rule
+{
+public:
+    virtual ~HlCHexRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual HlCHexRule *doClone() const { return new HlCHexRule(*this); }
+};
+
+class HlCStringCharRule : public Rule
+{
+public:
+    virtual ~HlCStringCharRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual HlCStringCharRule *doClone() const { return new HlCStringCharRule(*this); }
+};
+
+class HlCCharRule : public Rule
+{
+public:
+    virtual ~HlCCharRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual HlCCharRule *doClone() const { return new HlCCharRule(*this); }
+};
+
+class RangeDetectRule : public Rule
+{
+public:
+    virtual ~RangeDetectRule() {}
+
+    void setChar(const QString &character);
+    void setChar1(const QString &character);
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual RangeDetectRule *doClone() const { return new RangeDetectRule(*this); }
+
+    QChar m_char;
+    QChar m_char1;
+};
+
+class LineContinueRule : public Rule
+{
+public:
+    virtual ~LineContinueRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual LineContinueRule *doClone() const { return new LineContinueRule(*this); }
+};
+
+class DetectSpacesRule : public Rule
+{
+public:
+    DetectSpacesRule();
+    virtual ~DetectSpacesRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual DetectSpacesRule *doClone() const { return new DetectSpacesRule(*this); }
+};
+
+class DetectIdentifierRule : public Rule
+{
+public:
+    virtual ~DetectIdentifierRule() {}
+
+private:
+    virtual bool doMatchSucceed(const QString &text,
+                                const int length,
+                                ProgressData *progress) const;
+    virtual DetectIdentifierRule *doClone() const { return new DetectIdentifierRule(*this); }
+};
+
+} // namespace Internal
+} // namespace Highlight
+
+#endif // SPECIFICRULES_H
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 156d5ce9f8f..9928857b823 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -33,6 +33,7 @@ SUBDIRS   = plugin_coreplugin \
             plugin_genericprojectmanager \
             plugin_qmljseditor \
             plugin_mercurial \
+            plugin_genericeditor \
             debugger/dumper.pro
 
 contains(QT_CONFIG, declarative) {
@@ -208,3 +209,7 @@ plugin_mercurial.subdir = mercurial
 plugin_mercurial.depends = plugin_vcsbase
 plugin_mercurial.depends += plugin_projectexplorer
 plugin_mercurial.depends += plugin_coreplugin
+
+plugin_genericeditor.subdir = genericeditor
+plugin_genericeditor.depends = plugin_coreplugin
+plugin_genericeditor.depends += plugin_texteditor
-- 
GitLab