[101556] JSP w/ XML editor dirty when opened
diff --git a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex
new file mode 100644
index 0000000..89f8ee6
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex
@@ -0,0 +1,289 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+/*nlsXXX*/
+package org.eclipse.jst.jsp.core.internal.contenttype;
+import java.io.IOException;
+import java.io.Reader;
+
+import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
+
+
+
+
+
+%%
+
+%{
+
+
+
+
+        private boolean hasMore = true;
+        private final static int MAX_TO_SCAN = 8000;
+        StringBuffer string = new StringBuffer();
+        // state stack for easier state handling
+        private IntStack fStateStack = new IntStack();
+        private String valueText = null;
+
+
+        public JSPHeadTokenizer() {
+                super();
+        }
+
+          public void reset (Reader in) {
+                /* the input device */
+                zzReader = in;
+
+                /* the current state of the DFA */
+                zzState = 0;
+
+                /* the current lexical state */
+                zzLexicalState = YYINITIAL;
+
+                /* this buffer contains the current text to be matched and is
+                 the source of the yytext() string */
+                java.util.Arrays.fill(zzBuffer, (char)0);
+
+                /* the textposition at the last accepting state */
+                zzMarkedPos = 0;
+
+                /* the textposition at the last state to be included in yytext */
+                zzPushbackPos = 0;
+
+                /* the current text position in the buffer */
+                zzCurrentPos = 0;
+
+                /* startRead marks the beginning of the yytext() string in the buffer */
+                zzStartRead = 0;
+
+                /**
+                 * endRead marks the last character in the buffer, that has been read
+                 * from input
+                 */
+                zzEndRead = 0;
+
+                /* number of newlines encountered up to the start of the matched text */
+                yyline = 0;
+
+                /* the number of characters up to the start of the matched text */
+                yychar = 0;
+
+                /**
+                 * the number of characters from the last newline up to the start
+                 * of the matched text
+                 */
+                yycolumn = 0;
+
+                /**
+                 * yy_atBOL == true <=> the scanner is currently at the beginning
+                 * of a line
+                 */
+                zzAtBOL = true;
+
+                /* yy_atEOF == true <=> the scanner has returned a value for EOF */
+                zzAtEOF = false;
+
+                /* denotes if the user-EOF-code has already been executed */
+                zzEOFDone = false;
+
+
+                fStateStack.clear();
+
+                hasMore = true;
+
+
+        }
+
+
+        public final HeadParserToken getNextToken() throws IOException {
+                String context = null;
+                context = primGetNextToken();
+                HeadParserToken result = null;
+                if (valueText != null) {
+                        result = createToken(context, yychar, valueText);
+                        valueText = null;
+                } else {
+                        result = createToken(context, yychar, yytext());
+                }
+                return result;
+        }
+
+        public final boolean hasMoreTokens() {
+                return hasMore && yychar < MAX_TO_SCAN;
+        }
+        private void pushCurrentState() {
+                fStateStack.push(yystate());
+
+        }
+ 
+        private void popState() {
+                yybegin(fStateStack.pop());
+        }
+        private HeadParserToken createToken(String context, int start, String text) {
+                return new HeadParserToken(context, start, text);
+        }
+
+
+%}
+
+%eof{
+        hasMore=false;
+%eof}
+
+%public
+%class JSPHeadTokenizer
+%function primGetNextToken
+%type String
+%char
+%unicode
+%ignorecase
+//%debug
+%switch
+%buffer 8192
+
+
+UTF16BE = \xFE\xFF
+UTF16LE = \xFF\xFE
+UTF83ByteBOM = \xEF\xBB\xBF
+
+// SpaceChar = [\x20\x09]
+
+
+// [3] S ::= (0x20 | 0x9 | 0xD | 0xA)+
+S = [\x20\x09\x0D\x0A]
+
+BeginAttribeValue = {S}* \= {S}*
+
+LineTerminator = \r|\n
+
+
+%state ST_XMLDecl
+%state ST_PAGE_DIRECTIVE
+%state QuotedAttributeValue
+%state DQ_STRING
+%state SQ_STRING
+%state UnDelimitedString
+
+%%
+
+
+<YYINITIAL>
+{
+	 	// force to start at beginning of line (^) and at beginning of file (yychar == 0)
+		^ {UTF16BE}   		{if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16BE;}}
+		^ {UTF16LE}   		{if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16LE;}}
+		^ {UTF83ByteBOM}   	{if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}}
+		
+		// force to be started on first line, but we do allow preceeding spaces
+		^ {S}* "<\?xml" {S}+ {if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}}
+
+        "<%" {S}* "@" {S}* "page" {S}+   {yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;}
+        "<jsp:directive.page" {S}+           {yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;}
+
+
+}
+
+<ST_XMLDecl>
+{
+        "version" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;}
+        "encoding" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;}
+        // note the "forced end" (via 'hasMore=false') once the end of XML Declaration found
+        // This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is
+        // read with incorrect encoding (such as if platform encoding is in effect until true encoding detected).
+        // BUT, the hasMore=false was removed for this JSP case (probably still ok for pure XML) because
+        // in a JSP, we must parse past xmlDecl to get at JSP page directive.
+        // We'll assume all chars in this area are "readable" as is.
+        {S}* "\?>"    {yybegin(YYINITIAL); return XMLHeadTokenizerConstants.XMLDeclEnd;}
+}
+
+<ST_PAGE_DIRECTIVE>
+{
+//  removed 'language' since it really can be handled seperately from encoding, but may add it back later for simple re-use.
+        "language"     {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage;}
+        "contentType" {BeginAttribeValue}  {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType;}
+        "pageEncoding" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding;}
+        // note the "forced end" (via 'hasMore=false') once the end of XML Declaration found
+        // This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is
+        // read in correct encoding.
+
+        // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=4205 demonstrates how we need to keep parsing,
+        // even if come to end of one page directive, so hasMore=false was removed from these rules.
+        "%>"    { yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd;}
+        "\/>"    { yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd;}
+}
+
+
+<QuotedAttributeValue>
+{
+        \"                      { yybegin(DQ_STRING); string.setLength(0); }
+        \'                      { yybegin(SQ_STRING); string.setLength(0); }
+        // in this state, anything other than a space character can start an undelimited string
+        {S}*.           { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);}
+
+}
+
+
+<DQ_STRING>
+{
+
+        \"                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
+        {LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        "\?>"                   { yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        '<'                     { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        .                       { string.append( yytext() ); }
+
+        "%>"                    { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+
+
+}
+
+<SQ_STRING>
+{
+
+        \'                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;}
+        {LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        "%>"                    { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        '<'                     { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        .                       { string.append( yytext() ); }
+        "%>"                    { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+
+
+}
+
+<UnDelimitedString>
+{
+
+
+        {S}                     { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue; }
+        {LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        "\?>"                   { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        '<'                     { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+        // these are a bit special, since we started an undelimit string, but found a quote ... probably indicates a missing beginning quote
+        \'                      { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}
+        \"                      { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}
+
+        .                       { string.append( yytext() ); }
+        "%>"                    { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+
+}
+
+// The "match anything" rule should always be in effect except for when looking for end of string
+// (That is, remember to update state list if/when new states added)
+<YYINITIAL, ST_XMLDecl, QuotedAttributeValue, ST_PAGE_DIRECTIVE>
+{
+// this is the fallback (match "anything") rule  (for this scanner, input is ignored, and position advanced, if not recognized)
+.|\n              {if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}}
+}
+
+// this rule always in effect
+<<EOF>>         {hasMore = false; return EncodingParserConstants.EOF;}
+
diff --git a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/buildParser.xml b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/buildParser.xml
new file mode 100644
index 0000000..2ebe182
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/buildParser.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="tokenizer" default="HeadTokenizer">
+	
+	<!-- Note: for Eclipse env., the JFlex 1.4 jar should be added 
+	to the ant global entries  -->
+	<taskdef classname="JFlex.anttask.JFlexTask" name="jflex" />
+		
+	<target name="init">
+		<property name="src.file" value="JSPHeadTokenizer.jFlex"/>			
+		<property name="src.dir" value="HeadParsers"/>
+		<property name="dest.dir" value="../src"/>
+		<!-- touch causes to always build, remove for real 'make' behavior -->
+		<touch file="${src.dir}/${src.file}"/>
+					
+	</target>
+
+	<target name="HeadTokenizer" depends="init">
+		<antcall target="run-jflex"/>
+	</target>
+
+	<target name="run-jflex" depends="init">
+		<jflex
+	    	file="${src.dir}/${src.file}"
+	    	destdir="${dest.dir}"
+			verbose="true"
+			nobak="true"
+			time="on"
+	    />
+	</target>
+	
+
+</project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/build.properties b/bundles/org.eclipse.jst.jsp.core/build.properties
index c3f0a69..62c5a26 100644
--- a/bundles/org.eclipse.jst.jsp.core/build.properties
+++ b/bundles/org.eclipse.jst.jsp.core/build.properties
@@ -16,5 +16,6 @@
 bin.excludes = @dot/**,\
                temp.folder/**
 src.includes = component.xml,\
-               build.properties
+               build.properties,\
+               DevTimeSupport/
 source.. = src/
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java
index 3706254..d2e2023 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java
@@ -33,13 +33,27 @@
 	 *      org.eclipse.core.runtime.content.IContentDescription)
 	 */
 	public int describe(InputStream contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INDETERMINATE;
+		int result = IContentDescriber.INVALID;
 
-		calculateSupportedOptions(contents, description);
+		// if discription is null, we are just being asked to
+		// assess contents validity
+		if (description != null) {
+			result = calculateSupportedOptions(contents, description);
+		}
+		else {
+			result = determineValidity(contents);
+		}
 
 		return result;
 	}
 
+	private int determineValidity(InputStream contents) {
+		// There's little to prove, via contents, that
+		// a file is JSP, so always return interminant, and
+		// let filetypes decide.
+		return IContentDescriber.INDETERMINATE;
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -47,23 +61,40 @@
 	 *      org.eclipse.core.runtime.content.IContentDescription)
 	 */
 	public int describe(Reader contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INDETERMINATE;
+		int result = IContentDescriber.INVALID;
 
-		calculateSupportedOptions(contents, description);
+		// if discription is null, we are just being asked to
+		// assess contents validity
+		if (description != null) {
+			result = calculateSupportedOptions(contents, description);
+		}
+		else {
+			result = determineValidity(contents);
+		}
 
 		return result;
 	}
 
+	private int determineValidity(Reader contents) {
+		// There's little to prove, via contents, that
+		// a file is JSP, so always return interminant, and
+		// let filetypes decide.
+		return IContentDescriber.INDETERMINATE;
+	}
+
 	public QualifiedName[] getSupportedOptions() {
 		return SUPPORTED_OPTIONS;
 	}
 
-	private void calculateSupportedOptions(InputStream contents, IContentDescription description) throws IOException {
+	private int calculateSupportedOptions(InputStream contents, IContentDescription description) throws IOException {
+		int result = IContentDescriber.INDETERMINATE;
 		if (isRelevent(description)) {
 			IResourceCharsetDetector detector = getDetector();
 			detector.set(contents);
 			handleCalculations(description, detector);
+			result = IContentDescriber.VALID;
 		}
+		return result;
 	}
 
 	/**
@@ -71,12 +102,15 @@
 	 * @param description
 	 * @throws IOException
 	 */
-	private void calculateSupportedOptions(Reader contents, IContentDescription description) throws IOException {
+	private int calculateSupportedOptions(Reader contents, IContentDescription description) throws IOException {
+		int result = IContentDescriber.INDETERMINATE;
 		if (isRelevent(description)) {
 			IResourceCharsetDetector detector = getDetector();
 			detector.set(contents);
 			handleCalculations(description, detector);
+			result = IContentDescriber.VALID;
 		}
+		return result;
 	}
 
 	private IResourceCharsetDetector getDetector() {
@@ -103,17 +137,7 @@
 	}
 
 	private void handleDetectedSpecialCase(IContentDescription description, Object detectedCharset, Object javaCharset) {
-		// since equal, we don't need to add, but if our detected version is
-		// different than
-		// javaCharset, then we should add it. This will happen, for example,
-		// if there's
-		// differences in case, or differences due to override properties
 		if (detectedCharset != null) {
-			// if (!detectedCharset.equals(javaCharset)) {
-			// description.setProperty(IContentDescriptionExtended.DETECTED_CHARSET,
-			// detectedCharset);
-			// }
-
 			// Once we detected a charset, we should set the property even
 			// though it's the same as javaCharset
 			// because there are clients that rely on this property to
@@ -133,7 +157,7 @@
 		// mulitiple times (one for each, say) that we don't waste time
 		// processing same
 		// content again.
-		EncodingMemento encodingMemento = detector.getEncodingMemento();
+		EncodingMemento encodingMemento = ((JSPResourceEncodingDetector) detector).getEncodingMemento();
 		// TODO: I need to verify to see if this BOM work is always done
 		// by text type.
 		Object detectedByteOrderMark = encodingMemento.getUnicodeBOM();
@@ -170,8 +194,8 @@
 			}
 			else {
 				// we may need to add what we found, but only need to add
-				// if different from default.the
-				Object defaultCharset = getDetector().getSpecDefaultEncoding();
+				// if different from the default.
+				Object defaultCharset = detector.getSpecDefaultEncoding();
 				if (defaultCharset != null) {
 					if (!defaultCharset.equals(javaCharset)) {
 						description.setProperty(IContentDescription.CHARSET, javaCharset);
@@ -185,10 +209,6 @@
 			}
 		}
 
-		// avoid adding anything if not absolutly needed, since always
-		// "cached" per session
-		// description.setProperty(IContentDescriptionExtended.ENCODING_MEMENTO,
-		// encodingMemento);
 	}
 
 	/**
@@ -209,6 +229,10 @@
 			result = true;
 		else if (description.isRequested(IContentDescriptionExtended.UNSUPPORTED_CHARSET))
 			result = true;
+		else if (description.isRequested(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE))
+			result = true;
+		else if (description.isRequested(IContentDescriptionForJSP.LANGUAGE_ATTRIBUTE))
+			result = true;
 		return result;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java
index c0b35c8..604e9d3 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java
@@ -1,15 +1,15 @@
+/* The following code was generated by JFlex 1.4 on 7/5/05 12:27 AM */
+
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2005 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-/* The following code was generated by JFlex 1.2.2 on 9/7/04 8:12 AM */
-
 /*nlsXXX*/
 package org.eclipse.jst.jsp.core.internal.contenttype;
 import java.io.IOException;
@@ -25,45 +25,48 @@
 
 /**
  * This class is a scanner generated by 
- * <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 9/7/04 8:12 AM from the specification file
- * <tt>file:/D:/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.jflex</tt>
+ * <a href="http://www.jflex.de/">JFlex</a> 1.4
+ * on 7/5/05 12:27 AM from the specification file
+ * <tt>D:/builds/Workspaces/PureHeadWTP_M7/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex</tt>
  */
 public class JSPHeadTokenizer {
 
-  /** this character denotes the end of file */
-  final public static int YYEOF = -1;
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
+
+  /** initial size of the lookahead buffer */
+  private static final int ZZ_BUFFERSIZE = 8192;
 
   /** lexical states */
-  final public static int YYINITIAL = 0;
-  final public static int UnDelimitedString = 12;
-  final public static int DQ_STRING = 8;
-  final public static int SQ_STRING = 10;
-  final public static int ST_XMLDecl = 2;
-  final public static int ST_PAGE_DIRECTIVE = 4;
-  final public static int QuotedAttributeValue = 6;
+  public static final int YYINITIAL = 0;
+  public static final int UnDelimitedString = 12;
+  public static final int DQ_STRING = 8;
+  public static final int SQ_STRING = 10;
+  public static final int ST_XMLDecl = 2;
+  public static final int ST_PAGE_DIRECTIVE = 4;
+  public static final int QuotedAttributeValue = 6;
 
   /**
-   * YY_LEXSTATE[l] is the state in the DFA for the lexical state l
-   * YY_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
    *                  at the beginning of a line
    * l is of the form l = 2*k, k a non negative integer
    */
-  private final static int YY_LEXSTATE[] = { 
+  private static final int ZZ_LEXSTATE[] = { 
      0,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7, 7
   };
 
   /** 
    * Translates characters to character classes
    */
-  final private static String yycmap_packed = 
-    "\11\0\1\6\1\7\2\0\1\11\22\0\1\6\1\0\1\45\2\0"+
+  private static final String ZZ_CMAP_PACKED = 
+    "\11\0\1\6\1\11\2\0\1\10\22\0\1\6\1\0\1\45\2\0"+
     "\1\17\1\0\1\46\6\0\1\36\1\44\12\0\1\27\1\0\1\12"+
-    "\1\10\1\41\1\13\1\20\1\22\1\0\1\33\1\30\1\24\1\0"+
-    "\1\23\1\0\1\31\1\25\1\0\1\16\1\15\1\37\1\40\1\21"+
+    "\1\7\1\41\1\13\1\20\1\22\1\0\1\33\1\30\1\24\1\0"+
+    "\1\23\1\0\1\31\1\25\1\0\1\16\1\15\1\40\1\37\1\21"+
     "\1\0\1\32\1\26\1\34\1\42\1\35\1\0\1\14\1\43\7\0"+
     "\1\22\1\0\1\33\1\30\1\24\1\0\1\23\1\0\1\31\1\25"+
-    "\1\0\1\16\1\15\1\37\1\40\1\21\1\0\1\32\1\26\1\34"+
+    "\1\0\1\16\1\15\1\40\1\37\1\21\1\0\1\32\1\26\1\34"+
     "\1\42\1\35\1\0\1\14\1\43\101\0\1\4\3\0\1\5\17\0"+
     "\1\3\16\0\1\1\20\0\1\3\16\0\1\1\1\2\170\0\1\2"+
     "\ufe87\0";
@@ -71,54 +74,84 @@
   /** 
    * Translates characters to character classes
    */
-  final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);
+  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+
+  /** 
+   * Translates DFA states to action switch labels.
+   */
+  private static final int [] ZZ_ACTION = zzUnpackAction();
+
+  private static final String ZZ_ACTION_PACKED_0 =
+    "\10\0\20\1\2\2\1\1\1\3\1\4\1\5\1\6"+
+    "\2\5\1\7\1\5\1\7\1\10\2\11\2\0\1\12"+
+    "\1\13\6\0\1\14\3\0\1\15\2\0\1\16\1\0"+
+    "\1\17\1\20\3\0\1\21\30\0\1\22\14\0\1\23"+
+    "\2\0\1\24\4\0\1\25\1\26\12\0\1\27\1\0"+
+    "\1\30\2\0";
+
+  private static int [] zzUnpackAction() {
+    int [] result = new int[126];
+    int offset = 0;
+    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+    return result;
+  }
+
+  private static int zzUnpackAction(String packed, int offset, int [] result) {
+    int i = 0;       /* index in packed string  */
+    int j = offset;  /* index in unpacked array */
+    int l = packed.length();
+    while (i < l) {
+      int count = packed.charAt(i++);
+      int value = packed.charAt(i++);
+      do result[j++] = value; while (--count > 0);
+    }
+    return j;
+  }
 
 
   /* error codes */
-  final private static int YY_UNKNOWN_ERROR = 0;
-  final private static int YY_ILLEGAL_STATE = 1;
-  final private static int YY_NO_MATCH = 2;
-  final private static int YY_PUSHBACK_2BIG = 3;
+  private static final int ZZ_UNKNOWN_ERROR = 0;
+  private static final int ZZ_NO_MATCH = 1;
+  private static final int ZZ_PUSHBACK_2BIG = 2;
 
   /* error messages for the codes above */
-  final private static String YY_ERROR_MSG[] = {
+  private static final String ZZ_ERROR_MSG[] = {
     "Unkown internal scanner error",
-    "Internal error: unknown state",
     "Error: could not match input",
     "Error: pushback value was too large"
   };
 
   /** the input device */
-  private java.io.Reader yy_reader;
+  private java.io.Reader zzReader;
 
   /** the current state of the DFA */
-  private int yy_state;
+  private int zzState;
 
   /** the current lexical state */
-  private int yy_lexical_state = YYINITIAL;
+  private int zzLexicalState = YYINITIAL;
 
   /** this buffer contains the current text to be matched and is
       the source of the yytext() string */
-  private char yy_buffer[] = new char[16384];
+  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
 
   /** the textposition at the last accepting state */
-  private int yy_markedPos;
+  private int zzMarkedPos;
 
   /** the textposition at the last state to be included in yytext */
-  private int yy_pushbackPos;
+  private int zzPushbackPos;
 
   /** the current text position in the buffer */
-  private int yy_currentPos;
+  private int zzCurrentPos;
 
   /** startRead marks the beginning of the yytext() string in the buffer */
-  private int yy_startRead;
+  private int zzStartRead;
 
   /** endRead marks the last character in the buffer, that has been read
       from input */
-  private int yy_endRead;
+  private int zzEndRead;
 
   /** number of newlines encountered up to the start of the matched text */
-// trivial hand edit to remove unused variable  private int yyline;
+  private int yyline;
 
   /** the number of characters up to the start of the matched text */
   private int yychar;
@@ -127,134 +160,128 @@
    * the number of characters from the last newline up to the start of the 
    * matched text
    */
-//trivial hand edit to remove unused variable  private int yycolumn; 
+  private int yycolumn;
 
   /** 
-   * yy_atBOL == true <=> the scanner is currently at the beginning of a line
+   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
    */
-  private boolean yy_atBOL;
+  private boolean zzAtBOL = true;
 
-  /** yy_atEOF == true <=> the scanner has returned a value for EOF */
-  private boolean yy_atEOF;
+  /** zzAtEOF == true <=> the scanner is at the EOF */
+  private boolean zzAtEOF;
 
   /** denotes if the user-EOF-code has already been executed */
-  private boolean yy_eof_done;
+  private boolean zzEOFDone;
 
   /* user code: */
 
 
 
-	private boolean hasMore = true;
-	private final static int MAX_TO_SCAN = 8000;
-	StringBuffer string = new StringBuffer();
-	// state stack for easier state handling
-	private IntStack fStateStack = new IntStack();
-	private String valueText = null;
+
+        private boolean hasMore = true;
+        private final static int MAX_TO_SCAN = 8000;
+        StringBuffer string = new StringBuffer();
+        // state stack for easier state handling
+        private IntStack fStateStack = new IntStack();
+        private String valueText = null;
 
 
-	public JSPHeadTokenizer() {
-		super();
-	}
+        public JSPHeadTokenizer() {
+                super();
+        }
 
-	  public void reset (Reader in) {
-	  	/* the input device */
-	  	yy_reader = in;
+          public void reset (Reader in) {
+                /* the input device */
+                zzReader = in;
 
-  		/* the current state of the DFA */
-  		yy_state = 0;
+                /* the current state of the DFA */
+                zzState = 0;
 
-  		/* the current lexical state */
-  		yy_lexical_state = YYINITIAL;
+                /* the current lexical state */
+                zzLexicalState = YYINITIAL;
 
-  		/* this buffer contains the current text to be matched and is
-  		 the source of the yytext() string */
-  		java.util.Arrays.fill(yy_buffer, (char)0);
+                /* this buffer contains the current text to be matched and is
+                 the source of the yytext() string */
+                java.util.Arrays.fill(zzBuffer, (char)0);
 
-  		/* the textposition at the last accepting state */
-  		yy_markedPos = 0;
+                /* the textposition at the last accepting state */
+                zzMarkedPos = 0;
 
-  		/* the textposition at the last state to be included in yytext */
-  		yy_pushbackPos = 0;
+                /* the textposition at the last state to be included in yytext */
+                zzPushbackPos = 0;
 
-  		/* the current text position in the buffer */
-  		yy_currentPos = 0;
+                /* the current text position in the buffer */
+                zzCurrentPos = 0;
 
-  		/* startRead marks the beginning of the yytext() string in the buffer */
-  		yy_startRead = 0;
+                /* startRead marks the beginning of the yytext() string in the buffer */
+                zzStartRead = 0;
 
-  		/**
-  		 * endRead marks the last character in the buffer, that has been read
-  		 * from input
-  		 */
-  		yy_endRead = 0;
+                /**
+                 * endRead marks the last character in the buffer, that has been read
+                 * from input
+                 */
+                zzEndRead = 0;
 
-  		/* number of newlines encountered up to the start of the matched text */
-//  	 trivial hand edit to remove unused variable  yyline = 0;
+                /* number of newlines encountered up to the start of the matched text */
+                yyline = 0;
 
-  		/* the number of characters up to the start of the matched text */
-  		yychar = 0;
+                /* the number of characters up to the start of the matched text */
+                yychar = 0;
 
-  		/**
-  		 * the number of characters from the last newline up to the start
-  		 * of the matched text
-  		 */
-//  	 trivial hand edit to remove unused variable    		yycolumn = 0;
+                /**
+                 * the number of characters from the last newline up to the start
+                 * of the matched text
+                 */
+                yycolumn = 0;
 
-  		/**
-  		 * yy_atBOL == true <=> the scanner is currently at the beginning
-  		 * of a line
-  		 */
-  		yy_atBOL = false;
+                /**
+                 * yy_atBOL == true <=> the scanner is currently at the beginning
+                 * of a line
+                 */
+                zzAtBOL = true;
 
-  		/* yy_atEOF == true <=> the scanner has returned a value for EOF */
-  		yy_atEOF = false;
+                /* yy_atEOF == true <=> the scanner has returned a value for EOF */
+                zzAtEOF = false;
 
-  		/* denotes if the user-EOF-code has already been executed */
-  		yy_eof_done = false;
+                /* denotes if the user-EOF-code has already been executed */
+                zzEOFDone = false;
 
 
-  		fStateStack.clear();
+                fStateStack.clear();
 
-  		hasMore = true;
-
-		// its a little wasteful to "throw away" first char array generated
-		// by class init (via auto generated code), but we really do want
-		// a small buffer for our head parsers.
-		if (yy_buffer.length != MAX_TO_SCAN) {
-			yy_buffer = new char[MAX_TO_SCAN];
-		}
+                hasMore = true;
 
 
-  	}
+        }
 
 
-	public final HeadParserToken getNextToken() throws IOException {
-		String context = null;
-		context = primGetNextToken();
-		HeadParserToken result = null;
-		if (valueText != null) {
-			result = createToken(context, yychar, valueText);
-			valueText = null;
-		} else {
-			result = createToken(context, yychar, yytext());
-		}
-		return result;
-	}
+        public final HeadParserToken getNextToken() throws IOException {
+                String context = null;
+                context = primGetNextToken();
+                HeadParserToken result = null;
+                if (valueText != null) {
+                        result = createToken(context, yychar, valueText);
+                        valueText = null;
+                } else {
+                        result = createToken(context, yychar, yytext());
+                }
+                return result;
+        }
 
-	public final boolean hasMoreTokens() {
-		return hasMore && yychar < MAX_TO_SCAN;
-	}
-	private void pushCurrentState() {
-		fStateStack.push(yystate());
+        public final boolean hasMoreTokens() {
+                return hasMore && yychar < MAX_TO_SCAN;
+        }
+        private void pushCurrentState() {
+                fStateStack.push(yystate());
 
-	}
-
-	private void popState() {
-		yybegin(fStateStack.pop());
-	}
-	private HeadParserToken createToken(String context, int start, String text) {
-		return new HeadParserToken(context, start, text);
-	}
+        }
+ 
+        private void popState() {
+                yybegin(fStateStack.pop());
+        }
+        private HeadParserToken createToken(String context, int start, String text) {
+                return new HeadParserToken(context, start, text);
+        }
 
 
 
@@ -266,7 +293,7 @@
    * @param   in  the java.io.Reader to read input from.
    */
   public JSPHeadTokenizer(java.io.Reader in) {
-    this.yy_reader = in;
+    this.zzReader = in;
   }
 
   /**
@@ -285,7 +312,7 @@
    * @param packed   the packed character translation table
    * @return         the unpacked character translation table
    */
-  private static char [] yy_unpack_cmap(String packed) {
+  private static char [] zzUnpackCMap(String packed) {
     char [] map = new char[0x10000];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
@@ -299,112 +326,157 @@
 
 
   /**
-   * Gets the next input character.
+   * Refills the input buffer.
    *
-   * @return      the next character of the input stream, EOF if the
-   *              end of the stream is reached.
-   * @exception   IOException  if any I/O-Error occurs
+   * @return      <code>false</code>, iff there was new input.
+   * 
+   * @exception   java.io.IOException  if any I/O-Error occurs
    */
-  private int yy_advance() throws java.io.IOException {
-
-    /* standard case */
-    if (yy_currentPos < yy_endRead) return yy_buffer[yy_currentPos++];
-
-    /* if the eof is reached, we don't need to work hard */ 
-    if (yy_atEOF) return YYEOF;
-
-    /* otherwise: need to refill the buffer */
+  private boolean zzRefill() throws java.io.IOException {
 
     /* first: make room (if you can) */
-    if (yy_startRead > 0) {
-      System.arraycopy(yy_buffer, yy_startRead, 
-                       yy_buffer, 0, 
-                       yy_endRead-yy_startRead);
+    if (zzStartRead > 0) {
+      System.arraycopy(zzBuffer, zzStartRead,
+                       zzBuffer, 0,
+                       zzEndRead-zzStartRead);
 
       /* translate stored positions */
-      yy_endRead-= yy_startRead;
-      yy_currentPos-= yy_startRead;
-      yy_markedPos-= yy_startRead;
-      yy_pushbackPos-= yy_startRead;
-      yy_startRead = 0;
+      zzEndRead-= zzStartRead;
+      zzCurrentPos-= zzStartRead;
+      zzMarkedPos-= zzStartRead;
+      zzPushbackPos-= zzStartRead;
+      zzStartRead = 0;
     }
 
     /* is the buffer big enough? */
-    if (yy_currentPos >= yy_buffer.length) {
+    if (zzCurrentPos >= zzBuffer.length) {
       /* if not: blow it up */
-      char newBuffer[] = new char[yy_currentPos*2];
-      System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
-      yy_buffer = newBuffer;
+      char newBuffer[] = new char[zzCurrentPos*2];
+      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+      zzBuffer = newBuffer;
     }
 
     /* finally: fill the buffer with new input */
-    int numRead = yy_reader.read(yy_buffer, yy_endRead, 
-                                            yy_buffer.length-yy_endRead);
+    int numRead = zzReader.read(zzBuffer, zzEndRead,
+                                            zzBuffer.length-zzEndRead);
 
-    if ( numRead == -1 ) return YYEOF;
+    if (numRead < 0) {
+      return true;
+    }
+    else {
+      zzEndRead+= numRead;
+      return false;
+    }
+  }
 
-    yy_endRead+= numRead;
+    
+  /**
+   * Closes the input stream.
+   */
+  public final void yyclose() throws java.io.IOException {
+    zzAtEOF = true;            /* indicate end of file */
+    zzEndRead = zzStartRead;  /* invalidate buffer    */
 
-    return yy_buffer[yy_currentPos++];
+    if (zzReader != null)
+      zzReader.close();
   }
 
 
   /**
-   * Closes the input stream.
+   * Resets the scanner to read from a new input stream.
+   * Does not close the old reader.
+   *
+   * All internal variables are reset, the old input stream 
+   * <b>cannot</b> be reused (internal buffer is discarded and lost).
+   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+   *
+   * @param reader   the new input stream 
    */
-  final public void yyclose() throws java.io.IOException {
-    yy_atEOF = true;            /* indicate end of file */
-    yy_endRead = yy_startRead;  /* invalidate buffer    */
-    yy_reader.close();
+  public final void yyreset(java.io.Reader reader) {
+    zzReader = reader;
+    zzAtBOL  = true;
+    zzAtEOF  = false;
+    zzEndRead = zzStartRead = 0;
+    zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
+    yyline = yychar = yycolumn = 0;
+    zzLexicalState = YYINITIAL;
   }
 
 
   /**
    * Returns the current lexical state.
    */
-  final public int yystate() {
-    return yy_lexical_state;
+  public final int yystate() {
+    return zzLexicalState;
   }
 
+
   /**
    * Enters a new lexical state
    *
    * @param newState the new lexical state
    */
-  final public void yybegin(int newState) {
-    yy_lexical_state = newState;
+  public final void yybegin(int newState) {
+    zzLexicalState = newState;
   }
 
 
   /**
    * Returns the text matched by the current regular expression.
    */
-  final public String yytext() {
-    return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
+  public final String yytext() {
+    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
   }
 
+
+  /**
+   * Returns the character at position <tt>pos</tt> from the 
+   * matched text. 
+   * 
+   * It is equivalent to yytext().charAt(pos), but faster
+   *
+   * @param pos the position of the character to fetch. 
+   *            A value from 0 to yylength()-1.
+   *
+   * @return the character at position pos
+   */
+  public final char yycharat(int pos) {
+    return zzBuffer[zzStartRead+pos];
+  }
+
+
   /**
    * Returns the length of the matched text region.
    */
-  final public int yylength() {
-    return yy_markedPos-yy_startRead;
+  public final int yylength() {
+    return zzMarkedPos-zzStartRead;
   }
 
 
   /**
    * Reports an error that occured while scanning.
    *
+   * In a wellformed scanner (no or only correct usage of 
+   * yypushback(int) and a match-all fallback rule) this method 
+   * will only be called with things that "Can't Possibly Happen".
+   * If this method is called, something is seriously wrong
+   * (e.g. a JFlex bug producing a faulty scanner etc.).
+   *
+   * Usual syntax/scanner level error handling should be done
+   * in error fallback rules.
+   *
    * @param   errorCode  the code of the errormessage to display
    */
-  private void yy_ScanError(int errorCode) {
+  private void zzScanError(int errorCode) {
+    String message;
     try {
-      System.out.println(YY_ERROR_MSG[errorCode]);
+      message = ZZ_ERROR_MSG[errorCode];
     }
     catch (ArrayIndexOutOfBoundsException e) {
-      System.out.println(YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
+      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
     }
 
-    System.exit(1);
+    throw new Error(message);
   } 
 
 
@@ -416,11 +488,11 @@
    * @param number  the number of characters to be read again.
    *                This number must not be greater than yylength()!
    */
-  private void yypushback(int number) {
+  public void yypushback(int number)  {
     if ( number > yylength() )
-      yy_ScanError(YY_PUSHBACK_2BIG);
+      zzScanError(ZZ_PUSHBACK_2BIG);
 
-    yy_markedPos -= number;
+    zzMarkedPos -= number;
   }
 
 
@@ -428,10 +500,10 @@
    * Contains user EOF-code, which will be executed exactly once,
    * when the end of file is reached
    */
-  private void yy_do_eof() {
-    if (!yy_eof_done) {
-      yy_eof_done = true;
-    	hasMore=false;
+  private void zzDoEOF() {
+    if (!zzEOFDone) {
+      zzEOFDone = true;
+            hasMore=false;
 
     }
   }
@@ -442,881 +514,970 @@
    * the end of input is encountered or an I/O-Error occurs.
    *
    * @return      the next token
-   * @exception   IOException  if any I/O-Error occurs
+   * @exception   java.io.IOException  if any I/O-Error occurs
    */
   public String primGetNextToken() throws java.io.IOException {
-    int yy_input;
-    int yy_action;
+    int zzInput;
+    int zzAction;
+
+    // cached fields:
+    int zzCurrentPosL;
+    int zzMarkedPosL;
+    int zzEndReadL = zzEndRead;
+    char [] zzBufferL = zzBuffer;
+    char [] zzCMapL = ZZ_CMAP;
 
 
     while (true) {
+      zzMarkedPosL = zzMarkedPos;
 
-      yychar+= yylength();
+      yychar+= zzMarkedPosL-zzStartRead;
 
-      yy_atBOL = yy_markedPos <= 0 || yy_buffer[yy_markedPos-1] == '\n';
-      if (!yy_atBOL && yy_buffer[yy_markedPos-1] == '\r') {
-        yy_atBOL = yy_advance() != '\n';
-        if (!yy_atEOF) yy_currentPos--;
+      if (zzMarkedPosL > zzStartRead) {
+        switch (zzBufferL[zzMarkedPosL-1]) {
+        case '\n':
+        case '\u000B':
+        case '\u000C':
+        case '\u0085':
+        case '\u2028':
+        case '\u2029':
+          zzAtBOL = true;
+          break;
+        case '\r': 
+          if (zzMarkedPosL < zzEndReadL)
+            zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
+          else if (zzAtEOF)
+            zzAtBOL = false;
+          else {
+            boolean eof = zzRefill();
+            zzMarkedPosL = zzMarkedPos;
+            zzBufferL = zzBuffer;
+            if (eof) 
+              zzAtBOL = false;
+            else 
+              zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
+          }
+          break;
+        default:
+          zzAtBOL = false;
+        }
       }
+      zzAction = -1;
 
-      yy_action = -1;
-
-      yy_currentPos = yy_startRead = yy_markedPos;
-
-      if (yy_atBOL)
-        yy_state = YY_LEXSTATE[yy_lexical_state+1];
+      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+  
+      if (zzAtBOL)
+        zzState = ZZ_LEXSTATE[zzLexicalState+1];
       else
-        yy_state = YY_LEXSTATE[yy_lexical_state];
+        zzState = ZZ_LEXSTATE[zzLexicalState];
 
 
-      yy_forAction: {
+      zzForAction: {
         while (true) {
+    
+          if (zzCurrentPosL < zzEndReadL)
+            zzInput = zzBufferL[zzCurrentPosL++];
+          else if (zzAtEOF) {
+            zzInput = YYEOF;
+            break zzForAction;
+          }
+          else {
+            // store back cached positions
+            zzCurrentPos  = zzCurrentPosL;
+            zzMarkedPos   = zzMarkedPosL;
+            boolean eof = zzRefill();
+            // get translated positions and possibly new buffer
+            zzCurrentPosL  = zzCurrentPos;
+            zzMarkedPosL   = zzMarkedPos;
+            zzBufferL      = zzBuffer;
+            zzEndReadL     = zzEndRead;
+            if (eof) {
+              zzInput = YYEOF;
+              break zzForAction;
+            }
+            else {
+              zzInput = zzBufferL[zzCurrentPosL++];
+            }
+          }
+          zzInput = zzCMapL[zzInput];
 
-          yy_input = yy_advance();
+          boolean zzIsFinal = false;
+          boolean zzNoLookAhead = false;
 
-          if ( yy_input == YYEOF ) break yy_forAction;
-
-          yy_input = yycmap[yy_input];
-
-          boolean yy_isFinal = false;
-          boolean yy_noLookAhead = false;
-
-          yy_forNext: { switch (yy_state) {
+          zzForNext: { switch (zzState) {
             case 0:
-              switch (yy_input) {
-                case 1: yy_isFinal = true; yy_state = 9; break yy_forNext;
-                case 2: yy_isFinal = true; yy_state = 10; break yy_forNext;
-                case 3: yy_isFinal = true; yy_state = 11; break yy_forNext;
-                case 10: yy_isFinal = true; yy_state = 12; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
+              switch (zzInput) {
+                case 10: zzIsFinal = true; zzState = 9; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
               }
 
             case 1:
-              switch (yy_input) {
-                case 1: yy_isFinal = true; yy_state = 9; break yy_forNext;
-                case 2: yy_isFinal = true; yy_state = 10; break yy_forNext;
-                case 3: yy_isFinal = true; yy_state = 11; break yy_forNext;
+              switch (zzInput) {
+                case 1: zzIsFinal = true; zzState = 10; break zzForNext;
+                case 2: zzIsFinal = true; zzState = 11; break zzForNext;
+                case 3: zzIsFinal = true; zzState = 12; break zzForNext;
                 case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 13; break yy_forNext;
-                case 10: yy_isFinal = true; yy_state = 14; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 13; break zzForNext;
+                case 10: zzIsFinal = true; zzState = 14; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
               }
 
             case 2:
-              switch (yy_input) {
-                case 11: yy_isFinal = true; yy_state = 15; break yy_forNext;
-                case 20: yy_isFinal = true; yy_state = 16; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 15; break zzForNext;
+                case 11: zzIsFinal = true; zzState = 16; break zzForNext;
+                case 20: zzIsFinal = true; zzState = 17; break zzForNext;
+                case 29: zzIsFinal = true; zzState = 18; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
               }
 
             case 3:
-              switch (yy_input) {
-                case 14: yy_isFinal = true; yy_state = 17; break yy_forNext;
-                case 15: yy_isFinal = true; yy_state = 18; break yy_forNext;
-                case 17: yy_isFinal = true; yy_state = 19; break yy_forNext;
-                case 27: yy_isFinal = true; yy_state = 20; break yy_forNext;
-                case 36: yy_isFinal = true; yy_state = 21; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
+              switch (zzInput) {
+                case 14: zzIsFinal = true; zzState = 19; break zzForNext;
+                case 15: zzIsFinal = true; zzState = 20; break zzForNext;
+                case 17: zzIsFinal = true; zzState = 21; break zzForNext;
+                case 27: zzIsFinal = true; zzState = 22; break zzForNext;
+                case 36: zzIsFinal = true; zzState = 23; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
               }
 
             case 4:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_isFinal = true; yy_state = 24; break yy_forNext;
-                case 37: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
-                case 38: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
+                case 8: zzIsFinal = true; zzState = 25; break zzForNext;
+                case 9: zzIsFinal = true; zzState = 26; break zzForNext;
+                case 37: zzIsFinal = true; zzNoLookAhead = true; zzState = 27; break zzForNext;
+                case 38: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 24; break zzForNext;
               }
 
             case 5:
-              switch (yy_input) {
-                case 7: 
-                case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 28; break yy_forNext;
-                case 11: yy_isFinal = true; yy_state = 29; break yy_forNext;
-                case 15: yy_isFinal = true; yy_state = 30; break yy_forNext;
-                case 37: yy_isFinal = true; yy_noLookAhead = true; yy_state = 31; break yy_forNext;
-                case 38: yy_isFinal = true; yy_state = 32; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 27; break yy_forNext;
+              switch (zzInput) {
+                case 8: 
+                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 30; break zzForNext;
+                case 11: zzIsFinal = true; zzState = 31; break zzForNext;
+                case 15: zzIsFinal = true; zzState = 32; break zzForNext;
+                case 37: zzIsFinal = true; zzNoLookAhead = true; zzState = 33; break zzForNext;
+                case 38: zzIsFinal = true; zzState = 34; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 29; break zzForNext;
               }
 
             case 6:
-              switch (yy_input) {
-                case 7: 
-                case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 28; break yy_forNext;
-                case 15: yy_isFinal = true; yy_state = 30; break yy_forNext;
-                case 38: yy_isFinal = true; yy_state = 33; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 27; break yy_forNext;
+              switch (zzInput) {
+                case 8: 
+                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 30; break zzForNext;
+                case 15: zzIsFinal = true; zzState = 32; break zzForNext;
+                case 38: zzIsFinal = true; zzState = 35; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 29; break zzForNext;
               }
 
             case 7:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 11: 
-                case 15: yy_isFinal = true; yy_state = 30; break yy_forNext;
+                case 15: zzIsFinal = true; zzState = 32; break zzForNext;
                 case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 34; break yy_forNext;
-                case 37: yy_isFinal = true; yy_noLookAhead = true; yy_state = 35; break yy_forNext;
-                case 38: yy_isFinal = true; yy_state = 36; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 27; break yy_forNext;
+                case 8: 
+                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 36; break zzForNext;
+                case 37: zzIsFinal = true; zzNoLookAhead = true; zzState = 37; break zzForNext;
+                case 38: zzIsFinal = true; zzState = 38; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 29; break zzForNext;
               }
 
             case 9:
-              switch (yy_input) {
-                case 2: yy_isFinal = true; yy_noLookAhead = true; yy_state = 37; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 15: zzState = 39; break zzForNext;
+                case 21: zzState = 40; break zzForNext;
+                default: break zzForAction;
               }
 
             case 10:
-              switch (yy_input) {
-                case 1: yy_isFinal = true; yy_noLookAhead = true; yy_state = 38; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 2: zzIsFinal = true; zzNoLookAhead = true; zzState = 41; break zzForNext;
+                default: break zzForAction;
               }
 
             case 11:
-              switch (yy_input) {
-                case 4: yy_state = 39; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 1: zzIsFinal = true; zzNoLookAhead = true; zzState = 42; break zzForNext;
+                default: break zzForAction;
               }
 
             case 12:
-              switch (yy_input) {
-                case 15: yy_state = 40; break yy_forNext;
-                case 21: yy_state = 41; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 4: zzState = 43; break zzForNext;
+                default: break zzForAction;
               }
 
             case 13:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 7: 
-                case 9: yy_state = 42; break yy_forNext;
-                case 10: yy_state = 43; break yy_forNext;
-                default: break yy_forAction;
+                case 8: 
+                case 9: zzState = 44; break zzForNext;
+                case 10: zzState = 45; break zzForNext;
+                default: break zzForAction;
               }
 
             case 14:
-              switch (yy_input) {
-                case 15: yy_state = 40; break yy_forNext;
-                case 21: yy_state = 41; break yy_forNext;
-                case 11: yy_state = 44; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 15: zzState = 39; break zzForNext;
+                case 21: zzState = 40; break zzForNext;
+                case 11: zzState = 46; break zzForNext;
+                default: break zzForAction;
               }
 
             case 15:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 45; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 47; break zzForNext;
+                case 11: zzState = 48; break zzForNext;
+                default: break zzForAction;
               }
 
             case 16:
-              switch (yy_input) {
-                case 31: yy_state = 46; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 33: zzIsFinal = true; zzNoLookAhead = true; zzState = 49; break zzForNext;
+                default: break zzForAction;
               }
 
             case 17:
-              switch (yy_input) {
-                case 18: yy_state = 47; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 50; break zzForNext;
+                default: break zzForAction;
               }
 
             case 18:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 48; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 51; break zzForNext;
+                default: break zzForAction;
               }
 
             case 19:
-              switch (yy_input) {
-                case 18: yy_state = 49; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 18: zzState = 52; break zzForNext;
+                default: break zzForAction;
               }
 
             case 20:
-              switch (yy_input) {
-                case 32: yy_state = 50; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 33: zzIsFinal = true; zzNoLookAhead = true; zzState = 53; break zzForNext;
+                default: break zzForAction;
               }
 
             case 21:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 51; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 18: zzState = 54; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 22:
+              switch (zzInput) {
+                case 31: zzState = 55; break zzForNext;
+                default: break zzForAction;
               }
 
             case 23:
-              switch (yy_input) {
+              switch (zzInput) {
+                case 33: zzIsFinal = true; zzNoLookAhead = true; zzState = 56; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 25:
+              switch (zzInput) {
                 case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_state = 52; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
+                case 8: zzIsFinal = true; zzState = 25; break zzForNext;
+                case 9: zzState = 57; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 24; break zzForNext;
               }
 
-            case 24:
-              switch (yy_input) {
+            case 26:
+              switch (zzInput) {
                 case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_state = 52; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
+                case 8: zzIsFinal = true; zzState = 25; break zzForNext;
+                case 9: zzState = 57; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 24; break zzForNext;
               }
 
-            case 29:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 53; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 30:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 54; break yy_forNext;
-                default: break yy_forAction;
+            case 31:
+              switch (zzInput) {
+                case 33: zzIsFinal = true; zzNoLookAhead = true; zzState = 58; break zzForNext;
+                default: break zzForAction;
               }
 
             case 32:
-              switch (yy_input) {
-                case 10: yy_state = 55; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 33: zzIsFinal = true; zzNoLookAhead = true; zzState = 59; break zzForNext;
+                default: break zzForAction;
               }
 
-            case 33:
-              switch (yy_input) {
-                case 10: yy_state = 55; break yy_forNext;
-                default: break yy_forAction;
+            case 34:
+              switch (zzInput) {
+                case 10: zzState = 60; break zzForNext;
+                default: break zzForAction;
               }
 
-            case 36:
-              switch (yy_input) {
-                case 10: yy_state = 55; break yy_forNext;
-                default: break yy_forAction;
+            case 35:
+              switch (zzInput) {
+                case 10: zzState = 60; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 38:
+              switch (zzInput) {
+                case 10: zzState = 60; break zzForNext;
+                default: break zzForAction;
               }
 
             case 39:
-              switch (yy_input) {
-                case 5: yy_isFinal = true; yy_noLookAhead = true; yy_state = 56; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 39; break zzForNext;
+                case 16: zzState = 61; break zzForNext;
+                default: break zzForAction;
               }
 
             case 40:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 40; break yy_forNext;
-                case 16: yy_state = 57; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 41:
-              switch (yy_input) {
-                case 22: yy_state = 58; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 42:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 42; break yy_forNext;
-                case 10: yy_state = 43; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 22: zzState = 62; break zzForNext;
+                default: break zzForAction;
               }
 
             case 43:
-              switch (yy_input) {
-                case 11: yy_state = 44; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 5: zzIsFinal = true; zzNoLookAhead = true; zzState = 63; break zzForNext;
+                default: break zzForAction;
               }
 
             case 44:
-              switch (yy_input) {
-                case 12: yy_state = 59; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 44; break zzForNext;
+                case 10: zzState = 45; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 45:
+              switch (zzInput) {
+                case 11: zzState = 46; break zzForNext;
+                default: break zzForAction;
               }
 
             case 46:
-              switch (yy_input) {
-                case 27: yy_state = 60; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 12: zzState = 64; break zzForNext;
+                default: break zzForAction;
               }
 
             case 47:
-              switch (yy_input) {
-                case 31: yy_state = 61; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 47; break zzForNext;
+                case 11: zzState = 48; break zzForNext;
+                default: break zzForAction;
               }
 
-            case 49:
-              switch (yy_input) {
-                case 19: yy_state = 62; break yy_forNext;
-                default: break yy_forAction;
+            case 48:
+              switch (zzInput) {
+                case 33: zzIsFinal = true; zzNoLookAhead = true; zzState = 49; break zzForNext;
+                default: break zzForAction;
               }
 
             case 50:
-              switch (yy_input) {
-                case 31: yy_state = 63; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 27: zzState = 65; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 51:
+              switch (zzInput) {
+                case 26: zzState = 66; break zzForNext;
+                default: break zzForAction;
               }
 
             case 52:
-              switch (yy_input) {
-                case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_state = 52; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
+              switch (zzInput) {
+                case 32: zzState = 67; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 54:
+              switch (zzInput) {
+                case 19: zzState = 68; break zzForNext;
+                default: break zzForAction;
               }
 
             case 55:
-              switch (yy_input) {
-                case 38: yy_isFinal = true; yy_noLookAhead = true; yy_state = 28; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 69; break zzForNext;
+                default: break zzForAction;
               }
 
             case 57:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 7: 
-                case 9: yy_state = 57; break yy_forNext;
-                case 17: yy_state = 64; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 58:
-              switch (yy_input) {
-                case 17: yy_state = 65; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 59:
-              switch (yy_input) {
-                case 13: yy_state = 66; break yy_forNext;
-                default: break yy_forAction;
+                case 8: zzIsFinal = true; zzState = 25; break zzForNext;
+                case 9: zzState = 57; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 24; break zzForNext;
               }
 
             case 60:
-              switch (yy_input) {
-                case 32: yy_state = 67; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 38: zzIsFinal = true; zzNoLookAhead = true; zzState = 30; break zzForNext;
+                default: break zzForAction;
               }
 
             case 61:
-              switch (yy_input) {
-                case 19: yy_state = 68; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 61; break zzForNext;
+                case 17: zzState = 70; break zzForNext;
+                default: break zzForAction;
               }
 
             case 62:
-              switch (yy_input) {
-                case 20: yy_state = 69; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 63:
-              switch (yy_input) {
-                case 28: yy_state = 70; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 17: zzState = 71; break zzForNext;
+                default: break zzForAction;
               }
 
             case 64:
-              switch (yy_input) {
-                case 18: yy_state = 71; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 13: zzState = 72; break zzForNext;
+                default: break zzForAction;
               }
 
             case 65:
-              switch (yy_input) {
-                case 23: yy_state = 72; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 31: zzState = 73; break zzForNext;
+                default: break zzForAction;
               }
 
             case 66:
-              switch (yy_input) {
-                case 14: yy_state = 73; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 22: zzState = 74; break zzForNext;
+                default: break zzForAction;
               }
 
             case 67:
-              switch (yy_input) {
-                case 24: yy_state = 74; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 19: zzState = 75; break zzForNext;
+                default: break zzForAction;
               }
 
             case 68:
-              switch (yy_input) {
-                case 34: yy_state = 75; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 76; break zzForNext;
+                default: break zzForAction;
               }
 
             case 69:
-              switch (yy_input) {
-                case 20: yy_state = 76; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 28: zzState = 77; break zzForNext;
+                default: break zzForAction;
               }
 
             case 70:
-              switch (yy_input) {
-                case 20: yy_state = 77; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 18: zzState = 78; break zzForNext;
+                default: break zzForAction;
               }
 
             case 71:
-              switch (yy_input) {
-                case 19: yy_state = 78; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 23: zzState = 79; break zzForNext;
+                default: break zzForAction;
               }
 
             case 72:
-              switch (yy_input) {
-                case 24: yy_state = 79; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 14: zzState = 80; break zzForNext;
+                default: break zzForAction;
               }
 
             case 73:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 80; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 24: zzState = 81; break zzForNext;
+                default: break zzForAction;
               }
 
             case 74:
-              switch (yy_input) {
-                case 25: yy_state = 81; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 25: zzState = 82; break zzForNext;
+                default: break zzForAction;
               }
 
             case 75:
-              switch (yy_input) {
-                case 18: yy_state = 82; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 34: zzState = 83; break zzForNext;
+                default: break zzForAction;
               }
 
             case 76:
-              switch (yy_input) {
-                case 31: yy_state = 83; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 84; break zzForNext;
+                default: break zzForAction;
               }
 
             case 77:
-              switch (yy_input) {
-                case 31: yy_state = 84; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 85; break zzForNext;
+                default: break zzForAction;
               }
 
             case 78:
-              switch (yy_input) {
-                case 20: yy_state = 85; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 19: zzState = 86; break zzForNext;
+                default: break zzForAction;
               }
 
             case 79:
-              switch (yy_input) {
-                case 25: yy_state = 86; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 24: zzState = 87; break zzForNext;
+                default: break zzForAction;
               }
 
             case 80:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 80; break yy_forNext;
-                default: break yy_forAction;
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 88; break zzForNext;
+                default: break zzForAction;
               }
 
             case 81:
-              switch (yy_input) {
-                case 31: yy_state = 87; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 25: zzState = 89; break zzForNext;
+                default: break zzForAction;
               }
 
             case 82:
-              switch (yy_input) {
-                case 19: yy_state = 88; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 31: zzState = 90; break zzForNext;
+                default: break zzForAction;
               }
 
             case 83:
-              switch (yy_input) {
-                case 27: yy_state = 89; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 18: zzState = 91; break zzForNext;
+                default: break zzForAction;
               }
 
             case 84:
-              switch (yy_input) {
-                case 28: yy_state = 90; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 92; break zzForNext;
+                default: break zzForAction;
               }
 
             case 85:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 91; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 93; break zzForNext;
+                default: break zzForAction;
               }
 
             case 86:
-              switch (yy_input) {
-                case 26: yy_state = 92; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 94; break zzForNext;
+                default: break zzForAction;
               }
 
             case 87:
-              switch (yy_input) {
-                case 19: yy_state = 93; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 25: zzState = 95; break zzForNext;
+                default: break zzForAction;
               }
 
             case 88:
-              switch (yy_input) {
-                case 20: yy_state = 94; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 88; break zzForNext;
+                default: break zzForAction;
               }
 
             case 89:
-              switch (yy_input) {
-                case 32: yy_state = 95; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 96; break zzForNext;
+                default: break zzForAction;
               }
 
             case 90:
-              switch (yy_input) {
-                case 28: yy_state = 96; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 97; break zzForNext;
+                default: break zzForAction;
               }
 
             case 91:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 91; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 19: zzState = 98; break zzForNext;
+                default: break zzForAction;
               }
 
             case 92:
-              switch (yy_input) {
-                case 20: yy_state = 97; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 27: zzState = 99; break zzForNext;
+                default: break zzForAction;
               }
 
             case 93:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 93; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 98; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 28: zzState = 100; break zzForNext;
+                default: break zzForAction;
               }
 
             case 94:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 7: 
-                case 9: yy_state = 94; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 99; break yy_forNext;
-                default: break yy_forAction;
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 101; break zzForNext;
+                default: break zzForAction;
               }
 
             case 95:
-              switch (yy_input) {
-                case 24: yy_state = 100; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 26: zzState = 102; break zzForNext;
+                default: break zzForAction;
               }
 
             case 96:
-              switch (yy_input) {
-                case 35: yy_state = 101; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 19: zzState = 103; break zzForNext;
+                default: break zzForAction;
               }
 
             case 97:
-              switch (yy_input) {
-                case 27: yy_state = 102; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 97; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 104; break zzForNext;
+                default: break zzForAction;
               }
 
             case 98:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 98; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 105; break zzForNext;
+                default: break zzForAction;
               }
 
             case 99:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 99; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 31: zzState = 106; break zzForNext;
+                default: break zzForAction;
               }
 
             case 100:
-              switch (yy_input) {
-                case 25: yy_state = 103; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 28: zzState = 107; break zzForNext;
+                default: break zzForAction;
               }
 
             case 101:
-              switch (yy_input) {
-                case 17: yy_state = 104; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 101; break zzForNext;
+                default: break zzForAction;
               }
 
             case 102:
-              switch (yy_input) {
-                case 28: yy_state = 105; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 20: zzState = 108; break zzForNext;
+                default: break zzForAction;
               }
 
             case 103:
-              switch (yy_input) {
-                case 31: yy_state = 106; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 103; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 109; break zzForNext;
+                default: break zzForAction;
               }
 
             case 104:
-              switch (yy_input) {
-                case 20: yy_state = 107; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 104; break zzForNext;
+                default: break zzForAction;
               }
 
             case 105:
-              switch (yy_input) {
-                case 25: yy_state = 108; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 105; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 110; break zzForNext;
+                default: break zzForAction;
               }
 
             case 106:
-              switch (yy_input) {
-                case 19: yy_state = 109; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 24: zzState = 111; break zzForNext;
+                default: break zzForAction;
               }
 
             case 107:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 107; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 110; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 35: zzState = 112; break zzForNext;
+                default: break zzForAction;
               }
 
             case 108:
-              switch (yy_input) {
-                case 29: yy_state = 111; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 27: zzState = 113; break zzForNext;
+                default: break zzForAction;
               }
 
             case 109:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 7: 
-                case 9: yy_state = 109; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 112; break yy_forNext;
-                default: break yy_forAction;
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 109; break zzForNext;
+                default: break zzForAction;
               }
 
             case 110:
-              switch (yy_input) {
+              switch (zzInput) {
                 case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 110; break yy_forNext;
-                default: break yy_forAction;
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 110; break zzForNext;
+                default: break zzForAction;
               }
 
             case 111:
-              switch (yy_input) {
-                case 20: yy_state = 113; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 25: zzState = 114; break zzForNext;
+                default: break zzForAction;
               }
 
             case 112:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 112; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 17: zzState = 115; break zzForNext;
+                default: break zzForAction;
               }
 
             case 113:
-              switch (yy_input) {
-                case 30: yy_state = 114; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 28: zzState = 116; break zzForNext;
+                default: break zzForAction;
               }
 
             case 114:
-              switch (yy_input) {
-                case 17: yy_state = 64; break yy_forNext;
-                default: break yy_forAction;
+              switch (zzInput) {
+                case 32: zzState = 117; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 115:
+              switch (zzInput) {
+                case 20: zzState = 118; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 116:
+              switch (zzInput) {
+                case 25: zzState = 119; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 117:
+              switch (zzInput) {
+                case 19: zzState = 120; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 118:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 118; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 121; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 119:
+              switch (zzInput) {
+                case 29: zzState = 122; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 120:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 120; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 123; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 121:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 121; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 122:
+              switch (zzInput) {
+                case 20: zzState = 124; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 123:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 123; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 124:
+              switch (zzInput) {
+                case 30: zzState = 125; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 125:
+              switch (zzInput) {
+                case 17: zzState = 70; break zzForNext;
+                default: break zzForAction;
               }
 
             default:
-              yy_ScanError(YY_ILLEGAL_STATE);
+              // if this is ever reached, there is a serious bug in JFlex
+              zzScanError(ZZ_UNKNOWN_ERROR);
               break;
           } }
 
-          if ( yy_isFinal ) {
-            yy_action = yy_state; 
-            yy_markedPos = yy_currentPos; 
-            if ( yy_noLookAhead ) break yy_forAction;
+          if ( zzIsFinal ) {
+            zzAction = zzState;
+            zzMarkedPosL = zzCurrentPosL;
+            if ( zzNoLookAhead ) break zzForAction;
           }
 
         }
       }
 
+      // store back cached position
+      zzMarkedPos = zzMarkedPosL;
 
-      switch (yy_action) {    
-
-        case 33: 
-          {  popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
-        case 116: break;
-        case 28: 
-          {  yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
-        case 117: break;
-        case 22: 
-        case 23: 
-          {  yypushback(1); yybegin(UnDelimitedString); string.setLength(0); }
-        case 118: break;
-        case 35: 
-        case 36: 
-          {  yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue; }
-        case 119: break;
-        case 48: 
-          {  yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd; }
-        case 120: break;
-        case 51: 
-          {  yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd; }
-        case 121: break;
-        case 53: 
-          {  yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
-        case 122: break;
-        case 54: 
-          {  yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
-        case 123: break;
-        case 80: 
-          { if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;} }
-        case 124: break;
-        case 8: 
-        case 9: 
+      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
         case 10: 
-        case 11: 
-        case 12: 
-        case 13: 
-        case 14: 
-        case 15: 
-        case 16: 
+          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16BE;}
+          }
+        case 25: break;
         case 17: 
-        case 18: 
-        case 19: 
-        case 20: 
-        case 21: 
+          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}
+          }
+        case 26: break;
+        case 4: 
+          { yybegin(SQ_STRING); string.setLength(0);
+          }
+        case 27: break;
+        case 5: 
+          { string.append( yytext() );
+          }
+        case 28: break;
+        case 22: 
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage;
+          }
+        case 29: break;
         case 24: 
-          { if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;} }
-        case 125: break;
-        case 91: 
-          { yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart; }
-        case 126: break;
-        case 45: 
-          { yybegin(YYINITIAL); hasMore = false; return XMLHeadTokenizerConstants.XMLDeclEnd; }
-        case 127: break;
-        case 112: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding; }
-        case 128: break;
-        case 110: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType; }
-        case 129: break;
-        case 99: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage; }
-        case 130: break;
-        case 98: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding; }
-        case 131: break;
-        case 56: 
-          { hasMore = false; return EncodingParserConstants.UTF83ByteBOM; }
-        case 132: break;
-        case 37: 
-          { hasMore = false; return EncodingParserConstants.UTF16BE; }
-        case 133: break;
-        case 38: 
-          { hasMore = false; return EncodingParserConstants.UTF16LE; }
-        case 134: break;
-        case 31: 
-          {  popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;  }
-        case 135: break;
-        case 27: 
-        case 29: 
-        case 30: 
-        case 32: 
-          {  string.append( yytext() );  }
-        case 136: break;
-        case 26: 
-          {  yybegin(SQ_STRING); string.setLength(0);  }
-        case 137: break;
-        case 25: 
-          {  yybegin(DQ_STRING); string.setLength(0);  }
-        case 138: break;
-        case 34: 
-          {  yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue;  }
-        case 139: break;
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding;
+          }
+        case 30: break;
+        case 1: 
+          { if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}
+          }
+        case 31: break;
+        case 11: 
+          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16LE;}
+          }
+        case 32: break;
+        case 6: 
+          { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
+          }
+        case 33: break;
+        case 8: 
+          { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue;
+          }
+        case 34: break;
+        case 9: 
+          { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;
+          }
+        case 35: break;
+        case 7: 
+          { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;
+          }
+        case 36: break;
+        case 13: 
+          { yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd;
+          }
+        case 37: break;
+        case 23: 
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType;
+          }
+        case 38: break;
+        case 18: 
+          { if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}
+          }
+        case 39: break;
+        case 15: 
+          { yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
+          }
+        case 40: break;
+        case 2: 
+          { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);
+          }
+        case 41: break;
+        case 12: 
+          { yybegin(YYINITIAL); return XMLHeadTokenizerConstants.XMLDeclEnd;
+          }
+        case 42: break;
+        case 14: 
+          { yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd;
+          }
+        case 43: break;
+        case 19: 
+          { yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;
+          }
+        case 44: break;
+        case 21: 
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;
+          }
+        case 45: break;
+        case 20: 
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;
+          }
+        case 46: break;
+        case 16: 
+          { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
+          }
+        case 47: break;
+        case 3: 
+          { yybegin(DQ_STRING); string.setLength(0);
+          }
+        case 48: break;
         default: 
-          if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
-            yy_atEOF = true;
-            yy_do_eof();
+          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+            zzAtEOF = true;
+            zzDoEOF();
               { hasMore = false; return EncodingParserConstants.EOF; }
           } 
           else {
-            yy_ScanError(YY_NO_MATCH);
+            zzScanError(ZZ_NO_MATCH);
           }
       }
     }
-  }    
-
-  /**
-   * Runs the scanner on input files.
-   *
-   * This main method is the debugging routine for the scanner.
-   * It prints each returned token to System.out until the end of
-   * file is reached, or an error occured.
-   *
-   * @param argv   the command line, contains the filenames to run
-   *               the scanner on.
-   */
-  public static void main(String argv[]) {
-    for (int i = 0; i < argv.length; i++) {
-      JSPHeadTokenizer scanner = null;
-      try {
-        scanner = new JSPHeadTokenizer( new java.io.FileReader(argv[i]) );
-      }
-      catch (java.io.FileNotFoundException e) {
-        System.out.println("File not found : \""+argv[i]+"\"");
-//        System.exit(1);
-      }
-//      catch (java.io.IOException e) {
-//        System.out.println("Error opening file \""+argv[i]+"\"");
-//        System.exit(1);
-//      }
-      catch (ArrayIndexOutOfBoundsException e) {
-        System.out.println("Usage : java JSPHeadTokenizer <inputfile>");
-       //System.exit(1);
-      }
-
-      try {
-        do {
-          System.out.println(scanner.primGetNextToken());
-        } while (!scanner.yy_atEOF);
-
-      }
-      catch (java.io.IOException e) {
-        System.out.println("An I/O error occured while scanning :");
-        System.out.println(e);
-        //System.exit(1);
-      }
-      catch (Exception e) {
-        e.printStackTrace();
-        //System.exit(1);
-      }
-    }
   }
 
 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java
index 133b892..3beae68 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java
@@ -331,6 +331,12 @@
 		return result;
 	}
 
+
+	/**
+	 * This method should be exactly the same as what is in 
+	 * JSPHeadTokenizerTester
+	 * @param contentType
+	 */
 	private void parseContentTypeValue(String contentType) {
 		Pattern pattern = Pattern.compile(";\\s*charset\\s*=\\s*"); //$NON-NLS-1$
 		String[] parts = pattern.split(contentType);
@@ -340,7 +346,7 @@
 			if (parts.length == 1) {
 				if (parts[0].length() > 6) {
 					String checkForCharset = parts[0].substring(0, 7);
-					if (checkForCharset.equalsIgnoreCase("charset")) { //$NON-NLS-1$
+					if (checkForCharset.equalsIgnoreCase("charset")) {
 						int eqpos = parts[0].indexOf('=');
 						eqpos = eqpos + 1;
 						if (eqpos < parts[0].length()) {
@@ -348,6 +354,9 @@
 							fCharset = fCharset.trim();
 						}
 					}
+					else {
+						fContentType = parts[0];
+					}
 				}
 			}
 			else {
@@ -359,6 +368,7 @@
 		}
 	}
 
+
 	/**
 	 * Looks for what ever encoding properties the tokenizer returns. Its the
 	 * responsibility of the tokenizer to stop when appropriate and not go too
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contenttype/ContentDescriberForCSS.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contenttype/ContentDescriberForCSS.java
index 5eeca5c..cb2f092 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contenttype/ContentDescriberForCSS.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contenttype/ContentDescriberForCSS.java
@@ -83,7 +83,7 @@
 		// mulitiple times (one for each, say) that we don't waste time
 		// processing same
 		// content again.
-		EncodingMemento encodingMemento = detector.getEncodingMemento();
+		EncodingMemento encodingMemento = ((CSSResourceEncodingDetector)detector).getEncodingMemento();
 		// TODO: I need to verify to see if this BOM work is always done
 		// by text type.
 		Object detectedByteOrderMark = encodingMemento.getUnicodeBOM();
diff --git a/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/content/ContentDescriberForDTD.java b/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/content/ContentDescriberForDTD.java
index 0c359b9..c245829 100644
--- a/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/content/ContentDescriberForDTD.java
+++ b/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/content/ContentDescriberForDTD.java
@@ -92,7 +92,7 @@
 		// mulitiple times (one for each, say) that we don't waste time
 		// processing same
 		// content again.
-		EncodingMemento encodingMemento = detector.getEncodingMemento();
+		EncodingMemento encodingMemento = ((XMLResourceEncodingDetector)detector).getEncodingMemento();
 		// TODO: I need to verify to see if this BOM work is always done
 		// by text type.
 		Object detectedByteOrderMark = encodingMemento.getUnicodeBOM();
diff --git a/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentCharsetDetector.java b/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentCharsetDetector.java
index fcf04ab..11ae9f8 100644
--- a/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentCharsetDetector.java
+++ b/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentCharsetDetector.java
@@ -23,6 +23,7 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.wst.sse.core.internal.document.DocumentReader;
 import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLResourceEncodingDetector;
 import org.eclipse.wst.xml.core.internal.encoding.XMLDocumentCharsetDetector;
 
 
@@ -47,7 +48,7 @@
 	protected void parseInput() throws IOException {
 		IDocumentCharsetDetector documentEncodingDetector = new XMLDocumentCharsetDetector();
 		documentEncodingDetector.set(fReader);
-		fEncodingMemento = documentEncodingDetector.getEncodingMemento();
+		fEncodingMemento = ((XMLResourceEncodingDetector)documentEncodingDetector).getEncodingMemento();
 
 	}
 
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/ContentDescriberForHTML.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/ContentDescriberForHTML.java
index b1c5906..8f2ec71 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/ContentDescriberForHTML.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/ContentDescriberForHTML.java
@@ -92,7 +92,7 @@
 		// mulitiple times (one for each, say) that we don't waste time
 		// processing same
 		// content again.
-		EncodingMemento encodingMemento = detector.getEncodingMemento();
+		EncodingMemento encodingMemento = ((HTMLResourceEncodingDetector)detector).getEncodingMemento();
 		// TODO: I need to verify to see if this BOM work is always done
 		// by text type.
 		Object detectedByteOrderMark = encodingMemento.getUnicodeBOM();
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.jFlex b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.jFlex
deleted file mode 100644
index 83e726c..0000000
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.jFlex
+++ /dev/null
@@ -1,294 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*nlsXXX*/
-package org.eclipse.wst.sse.core.jsp.contenttype;
-import java.io.IOException;
-import java.io.Reader;
-
-import org.eclipse.wst.common.encoding.EncodingParserConstants;
-import org.eclipse.wst.common.encoding.HeadParserToken;
-import org.eclipse.wst.common.encoding.IntStack;
-import org.eclipse.wst.sse.core.xml.contenttype.XMLHeadTokenizerConstants;
-
-
-
-
-
-%%
-
-%{
-
-
-
-	private boolean hasMore = true;
-	private final static int MAX_TO_SCAN = 8000;
-	StringBuffer string = new StringBuffer();
-	// state stack for easier state handling
-	private IntStack fStateStack = new IntStack();
-	private String valueText = null;
-
-
-	public JSPHeadTokenizer() {
-		super();
-	}
-
-	  public void reset (Reader in) {
-	  	/* the input device */
-	  	yy_reader = in;
-
-  		/* the current state of the DFA */
-  		yy_state = 0;
-
-  		/* the current lexical state */
-  		yy_lexical_state = YYINITIAL;
-
-  		/* this buffer contains the current text to be matched and is
-  		 the source of the yytext() string */
-  		java.util.Arrays.fill(yy_buffer, (char)0);
-
-  		/* the textposition at the last accepting state */
-  		yy_markedPos = 0;
-
-  		/* the textposition at the last state to be included in yytext */
-  		yy_pushbackPos = 0;
-
-  		/* the current text position in the buffer */
-  		yy_currentPos = 0;
-
-  		/* startRead marks the beginning of the yytext() string in the buffer */
-  		yy_startRead = 0;
-
-  		/**
-  		 * endRead marks the last character in the buffer, that has been read
-  		 * from input
-  		 */
-  		yy_endRead = 0;
-
-  		/* number of newlines encountered up to the start of the matched text */
-  		yyline = 0;
-
-  		/* the number of characters up to the start of the matched text */
-  		yychar = 0;
-
-  		/**
-  		 * the number of characters from the last newline up to the start
-  		 * of the matched text
-  		 */
-  		yycolumn = 0;
-
-  		/**
-  		 * yy_atBOL == true <=> the scanner is currently at the beginning
-  		 * of a line
-  		 */
-  		yy_atBOL = false;
-
-  		/* yy_atEOF == true <=> the scanner has returned a value for EOF */
-  		yy_atEOF = false;
-
-  		/* denotes if the user-EOF-code has already been executed */
-  		yy_eof_done = false;
-
-
-  		fStateStack.clear();
-
-  		hasMore = true;
-
-		// its a little wasteful to "throw away" first char array generated
-		// by class init (via auto generated code), but we really do want
-		// a small buffer for our head parsers.
-		if (yy_buffer.length != MAX_TO_SCAN) {
-			yy_buffer = new char[MAX_TO_SCAN];
-		}
-
-
-  	}
-
-
-	public final HeadParserToken getNextToken() throws IOException {
-		String context = null;
-		context = primGetNextToken();
-		HeadParserToken result = null;
-		if (valueText != null) {
-			result = createToken(context, yychar, valueText);
-			valueText = null;
-		} else {
-			result = createToken(context, yychar, yytext());
-		}
-		return result;
-	}
-
-	public final boolean hasMoreTokens() {
-		return hasMore && yychar < MAX_TO_SCAN;
-	}
-	private void pushCurrentState() {
-		fStateStack.push(yystate());
-
-	}
-
-	private void popState() {
-		yybegin(fStateStack.pop());
-	}
-	private HeadParserToken createToken(String context, int start, String text) {
-		return new HeadParserToken(context, start, text);
-	}
-
-
-%}
-
-%eof{
-	hasMore=false;
-%eof}
-
-%public
-%class JSPHeadTokenizer
-%function primGetNextToken
-%type String
-%char
-%unicode
-%ignorecase
-%debug
-%switch
-
-
-UTF16BE = \xFE\xFF
-UTF16LE = \xFF\xFE
-UTF83ByteBOM = \xEF\xBB\xBF
-
-SpaceChar = [\x20\x09]
-
-
-// [3] S ::= (0x20 | 0x9 | 0xD | 0xA)+
-S = [\x20\x09\x0D\x0A]
-
-BeginAttribeValue = {S}* \= {S}*
-
-LineTerminator = \r|\n
-
-
-%state ST_XMLDecl
-%state ST_PAGE_DIRECTIVE
-%state QuotedAttributeValue
-%state DQ_STRING
-%state SQ_STRING
-%state UnDelimitedString
-
-%%
-
-
-<YYINITIAL>
-{
-	{UTF16BE}   		{hasMore = false; return EncodingParserConstants.UTF16BE;}
-	{UTF16LE}   		{hasMore = false; return EncodingParserConstants.UTF16LE;}
-	{UTF83ByteBOM}   	{hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}
-
-
-	// force to be started on first line, but we do allow preceeding spaces
-	^ {S}* "<\?xml" {S}+ {if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}}
-
-	"<%" {S}* "@" {S}* "page" {S}+   {yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;}
-	"<jsp:directive.page" {S}+           {yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;}
-
-
-}
-
-<ST_XMLDecl>
-{
-//      commented out 'version' since we don't really use, but could add back in here if needed
-//	"version" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;}
-	"encoding" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;}
-	// note the "forced end" (via 'hasMore=false') once the end of XML Declaration found
-	// This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is
-	// read with incorrect encoding (such as if platform encoding is in effect until true encoding detected).
-	"\?>"    {yybegin(YYINITIAL); hasMore = false; return XMLHeadTokenizerConstants.XMLDeclEnd;}
-}
-
-<ST_PAGE_DIRECTIVE>
-{
-//  removed 'language' since it really can be handled seperately from encoding, but may add it back later for simple re-use.
-	"language"     {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage;}
-	"contentType" {BeginAttribeValue}  {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType;}
-	"pageEncoding" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding;}
-	// note the "forced end" (via 'hasMore=false') once the end of XML Declaration found
-	// This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is
-	// read in correct encoding.
-
-	// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=4205 demonstrates how we need to keep parsing,
-	// even if come to end of one page directive, so hasMore=false was removed from these rules.
-	"%>"    { yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd;}
-	"\/>"    { yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd;}
-}
-
-
-<QuotedAttributeValue>
-{
-	\"                      { yybegin(DQ_STRING); string.setLength(0); }
-	\'			{ yybegin(SQ_STRING); string.setLength(0); }
-	// in this state, anything other than a space character can start an undelimited string
-	{S}*.           { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);}
-
-}
-
-
-<DQ_STRING>
-{
-
-	\"                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
-  	{LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	"\?>"			{ yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	'<'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	.			{ string.append( yytext() ); }
-
-	"%>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-
-
-}
-
-<SQ_STRING>
-{
-
-	\'                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;}
-  	{LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	"%>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	'<'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	.			{ string.append( yytext() ); }
-	"%>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-
-
-}
-
-<UnDelimitedString>
-{
-
-
-	{S}                     { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue; }
-  	{LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	"\?>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	'<'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-	// these are a bit special, since we started an undelimit string, but found a quote ... probably indicates a missing beginning quote
-	\'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}
-	\"			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}
-
-	.			{ string.append( yytext() ); }
-	"%>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
-
-}
-
-// The "match anything" rule should always be in effect except for when looking for end of string
-// (That is, remember to update state list if/when new states added)
-<YYINITIAL, ST_XMLDecl, QuotedAttributeValue, ST_PAGE_DIRECTIVE>
-{
-// this is the fallback (match "anything") rule  (for this scanner, input is ignored, and position advanced, if not recognized)
-.|\n              {if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}}
-}
-
-// this rule always in effect
-<<EOF>>         {hasMore = false; return EncodingParserConstants.EOF;}
-
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.java b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.java
deleted file mode 100644
index 5e27b01..0000000
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.java
+++ /dev/null
@@ -1,1327 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-/* The following code was generated by JFlex 1.2.2 on 9/7/04 8:12 AM */
-
-/*nlsXXX*/
-package org.eclipse.wst.sse.core.jsp.contenttype;
-import java.io.IOException;
-import java.io.Reader;
-
-import org.eclipse.wst.common.encoding.EncodingParserConstants;
-import org.eclipse.wst.common.encoding.HeadParserToken;
-import org.eclipse.wst.common.encoding.IntStack;
-import org.eclipse.wst.sse.core.xml.contenttype.XMLHeadTokenizerConstants;
-
-
-
-
-
-
-/**
- * This class is a scanner generated by 
- * <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 9/7/04 8:12 AM from the specification file
- * <tt>file:/D:/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizer.jflex</tt>
- */
-public class JSPHeadTokenizer {
-
-  /** this character denotes the end of file */
-  final public static int YYEOF = -1;
-
-  /** lexical states */
-  final public static int YYINITIAL = 0;
-  final public static int UnDelimitedString = 12;
-  final public static int DQ_STRING = 8;
-  final public static int SQ_STRING = 10;
-  final public static int ST_XMLDecl = 2;
-  final public static int ST_PAGE_DIRECTIVE = 4;
-  final public static int QuotedAttributeValue = 6;
-
-  /**
-   * YY_LEXSTATE[l] is the state in the DFA for the lexical state l
-   * YY_LEXSTATE[l+1] is the state in the DFA for the lexical state l
-   *                  at the beginning of a line
-   * l is of the form l = 2*k, k a non negative integer
-   */
-  private final static int YY_LEXSTATE[] = { 
-     0,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7, 7
-  };
-
-  /** 
-   * Translates characters to character classes
-   */
-  final private static String yycmap_packed = 
-    "\11\0\1\6\1\7\2\0\1\11\22\0\1\6\1\0\1\45\2\0"+
-    "\1\17\1\0\1\46\6\0\1\36\1\44\12\0\1\27\1\0\1\12"+
-    "\1\10\1\41\1\13\1\20\1\22\1\0\1\33\1\30\1\24\1\0"+
-    "\1\23\1\0\1\31\1\25\1\0\1\16\1\15\1\37\1\40\1\21"+
-    "\1\0\1\32\1\26\1\34\1\42\1\35\1\0\1\14\1\43\7\0"+
-    "\1\22\1\0\1\33\1\30\1\24\1\0\1\23\1\0\1\31\1\25"+
-    "\1\0\1\16\1\15\1\37\1\40\1\21\1\0\1\32\1\26\1\34"+
-    "\1\42\1\35\1\0\1\14\1\43\101\0\1\4\3\0\1\5\17\0"+
-    "\1\3\16\0\1\1\20\0\1\3\16\0\1\1\1\2\170\0\1\2"+
-    "\ufe87\0";
-
-  /** 
-   * Translates characters to character classes
-   */
-  final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);
-
-
-  /* error codes */
-  final private static int YY_UNKNOWN_ERROR = 0;
-  final private static int YY_ILLEGAL_STATE = 1;
-  final private static int YY_NO_MATCH = 2;
-  final private static int YY_PUSHBACK_2BIG = 3;
-
-  /* error messages for the codes above */
-  final private static String YY_ERROR_MSG[] = {
-    "Unkown internal scanner error",
-    "Internal error: unknown state",
-    "Error: could not match input",
-    "Error: pushback value was too large"
-  };
-
-  /** the input device */
-  private java.io.Reader yy_reader;
-
-  /** the current state of the DFA */
-  private int yy_state;
-
-  /** the current lexical state */
-  private int yy_lexical_state = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char yy_buffer[] = new char[16384];
-
-  /** the textposition at the last accepting state */
-  private int yy_markedPos;
-
-  /** the textposition at the last state to be included in yytext */
-  private int yy_pushbackPos;
-
-  /** the current text position in the buffer */
-  private int yy_currentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int yy_startRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int yy_endRead;
-
-  /** number of newlines encountered up to the start of the matched text */
-  private int yyline;
-
-  /** the number of characters up to the start of the matched text */
-  private int yychar;
-
-  /**
-   * the number of characters from the last newline up to the start of the 
-   * matched text
-   */
-  private int yycolumn; 
-
-  /** 
-   * yy_atBOL == true <=> the scanner is currently at the beginning of a line
-   */
-  private boolean yy_atBOL;
-
-  /** yy_atEOF == true <=> the scanner has returned a value for EOF */
-  private boolean yy_atEOF;
-
-  /** denotes if the user-EOF-code has already been executed */
-  private boolean yy_eof_done;
-
-  /* user code: */
-
-
-
-	private boolean hasMore = true;
-	private final static int MAX_TO_SCAN = 8000;
-	StringBuffer string = new StringBuffer();
-	// state stack for easier state handling
-	private IntStack fStateStack = new IntStack();
-	private String valueText = null;
-
-
-	public JSPHeadTokenizer() {
-		super();
-	}
-
-	  public void reset (Reader in) {
-	  	/* the input device */
-	  	yy_reader = in;
-
-  		/* the current state of the DFA */
-  		yy_state = 0;
-
-  		/* the current lexical state */
-  		yy_lexical_state = YYINITIAL;
-
-  		/* this buffer contains the current text to be matched and is
-  		 the source of the yytext() string */
-  		java.util.Arrays.fill(yy_buffer, (char)0);
-
-  		/* the textposition at the last accepting state */
-  		yy_markedPos = 0;
-
-  		/* the textposition at the last state to be included in yytext */
-  		yy_pushbackPos = 0;
-
-  		/* the current text position in the buffer */
-  		yy_currentPos = 0;
-
-  		/* startRead marks the beginning of the yytext() string in the buffer */
-  		yy_startRead = 0;
-
-  		/**
-  		 * endRead marks the last character in the buffer, that has been read
-  		 * from input
-  		 */
-  		yy_endRead = 0;
-
-  		/* number of newlines encountered up to the start of the matched text */
-  		yyline = 0;
-
-  		/* the number of characters up to the start of the matched text */
-  		yychar = 0;
-
-  		/**
-  		 * the number of characters from the last newline up to the start
-  		 * of the matched text
-  		 */
-  		yycolumn = 0;
-
-  		/**
-  		 * yy_atBOL == true <=> the scanner is currently at the beginning
-  		 * of a line
-  		 */
-  		yy_atBOL = false;
-
-  		/* yy_atEOF == true <=> the scanner has returned a value for EOF */
-  		yy_atEOF = false;
-
-  		/* denotes if the user-EOF-code has already been executed */
-  		yy_eof_done = false;
-
-
-  		fStateStack.clear();
-
-  		hasMore = true;
-
-		// its a little wasteful to "throw away" first char array generated
-		// by class init (via auto generated code), but we really do want
-		// a small buffer for our head parsers.
-		if (yy_buffer.length != MAX_TO_SCAN) {
-			yy_buffer = new char[MAX_TO_SCAN];
-		}
-
-
-  	}
-
-
-	public final HeadParserToken getNextToken() throws IOException {
-		String context = null;
-		context = primGetNextToken();
-		HeadParserToken result = null;
-		if (valueText != null) {
-			result = createToken(context, yychar, valueText);
-			valueText = null;
-		} else {
-			result = createToken(context, yychar, yytext());
-		}
-		return result;
-	}
-
-	public final boolean hasMoreTokens() {
-		return hasMore && yychar < MAX_TO_SCAN;
-	}
-	private void pushCurrentState() {
-		fStateStack.push(yystate());
-
-	}
-
-	private void popState() {
-		yybegin(fStateStack.pop());
-	}
-	private HeadParserToken createToken(String context, int start, String text) {
-		return new HeadParserToken(context, start, text);
-	}
-
-
-
-
-  /**
-   * Creates a new scanner
-   * There is also a java.io.InputStream version of this constructor.
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  public JSPHeadTokenizer(java.io.Reader in) {
-    this.yy_reader = in;
-  }
-
-  /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
-   *
-   * @param   in  the java.io.Inputstream to read input from.
-   */
-  public JSPHeadTokenizer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
-  }
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] yy_unpack_cmap(String packed) {
-    char [] map = new char[0x10000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 182) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Gets the next input character.
-   *
-   * @return      the next character of the input stream, EOF if the
-   *              end of the stream is reached.
-   * @exception   IOException  if any I/O-Error occurs
-   */
-  private int yy_advance() throws java.io.IOException {
-
-    /* standard case */
-    if (yy_currentPos < yy_endRead) return yy_buffer[yy_currentPos++];
-
-    /* if the eof is reached, we don't need to work hard */ 
-    if (yy_atEOF) return YYEOF;
-
-    /* otherwise: need to refill the buffer */
-
-    /* first: make room (if you can) */
-    if (yy_startRead > 0) {
-      System.arraycopy(yy_buffer, yy_startRead, 
-                       yy_buffer, 0, 
-                       yy_endRead-yy_startRead);
-
-      /* translate stored positions */
-      yy_endRead-= yy_startRead;
-      yy_currentPos-= yy_startRead;
-      yy_markedPos-= yy_startRead;
-      yy_pushbackPos-= yy_startRead;
-      yy_startRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (yy_currentPos >= yy_buffer.length) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[yy_currentPos*2];
-      System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
-      yy_buffer = newBuffer;
-    }
-
-    /* finally: fill the buffer with new input */
-    int numRead = yy_reader.read(yy_buffer, yy_endRead, 
-                                            yy_buffer.length-yy_endRead);
-
-    if ( numRead == -1 ) return YYEOF;
-
-    yy_endRead+= numRead;
-
-    return yy_buffer[yy_currentPos++];
-  }
-
-
-  /**
-   * Closes the input stream.
-   */
-  final public void yyclose() throws java.io.IOException {
-    yy_atEOF = true;            /* indicate end of file */
-    yy_endRead = yy_startRead;  /* invalidate buffer    */
-    yy_reader.close();
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  final public int yystate() {
-    return yy_lexical_state;
-  }
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  final public void yybegin(int newState) {
-    yy_lexical_state = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  final public String yytext() {
-    return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
-  }
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  final public int yylength() {
-    return yy_markedPos-yy_startRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning.
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void yy_ScanError(int errorCode) {
-    try {
-      System.out.println(YY_ERROR_MSG[errorCode]);
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      System.out.println(YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
-    }
-
-    System.exit(1);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  private void yypushback(int number) {
-    if ( number > yylength() )
-      yy_ScanError(YY_PUSHBACK_2BIG);
-
-    yy_markedPos -= number;
-  }
-
-
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void yy_do_eof() {
-    if (!yy_eof_done) {
-      yy_eof_done = true;
-    	hasMore=false;
-
-    }
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   IOException  if any I/O-Error occurs
-   */
-  public String primGetNextToken() throws java.io.IOException {
-    int yy_input;
-    int yy_action;
-
-
-    while (true) {
-
-      yychar+= yylength();
-
-      yy_atBOL = yy_markedPos <= 0 || yy_buffer[yy_markedPos-1] == '\n';
-      if (!yy_atBOL && yy_buffer[yy_markedPos-1] == '\r') {
-        yy_atBOL = yy_advance() != '\n';
-        if (!yy_atEOF) yy_currentPos--;
-      }
-
-      yy_action = -1;
-
-      yy_currentPos = yy_startRead = yy_markedPos;
-
-      if (yy_atBOL)
-        yy_state = YY_LEXSTATE[yy_lexical_state+1];
-      else
-        yy_state = YY_LEXSTATE[yy_lexical_state];
-
-
-      yy_forAction: {
-        while (true) {
-
-          yy_input = yy_advance();
-
-          if ( yy_input == YYEOF ) break yy_forAction;
-
-          yy_input = yycmap[yy_input];
-
-          boolean yy_isFinal = false;
-          boolean yy_noLookAhead = false;
-
-          yy_forNext: { switch (yy_state) {
-            case 0:
-              switch (yy_input) {
-                case 1: yy_isFinal = true; yy_state = 9; break yy_forNext;
-                case 2: yy_isFinal = true; yy_state = 10; break yy_forNext;
-                case 3: yy_isFinal = true; yy_state = 11; break yy_forNext;
-                case 10: yy_isFinal = true; yy_state = 12; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
-              }
-
-            case 1:
-              switch (yy_input) {
-                case 1: yy_isFinal = true; yy_state = 9; break yy_forNext;
-                case 2: yy_isFinal = true; yy_state = 10; break yy_forNext;
-                case 3: yy_isFinal = true; yy_state = 11; break yy_forNext;
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 13; break yy_forNext;
-                case 10: yy_isFinal = true; yy_state = 14; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
-              }
-
-            case 2:
-              switch (yy_input) {
-                case 11: yy_isFinal = true; yy_state = 15; break yy_forNext;
-                case 20: yy_isFinal = true; yy_state = 16; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
-              }
-
-            case 3:
-              switch (yy_input) {
-                case 14: yy_isFinal = true; yy_state = 17; break yy_forNext;
-                case 15: yy_isFinal = true; yy_state = 18; break yy_forNext;
-                case 17: yy_isFinal = true; yy_state = 19; break yy_forNext;
-                case 27: yy_isFinal = true; yy_state = 20; break yy_forNext;
-                case 36: yy_isFinal = true; yy_state = 21; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 8; break yy_forNext;
-              }
-
-            case 4:
-              switch (yy_input) {
-                case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_isFinal = true; yy_state = 24; break yy_forNext;
-                case 37: yy_isFinal = true; yy_noLookAhead = true; yy_state = 25; break yy_forNext;
-                case 38: yy_isFinal = true; yy_noLookAhead = true; yy_state = 26; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
-              }
-
-            case 5:
-              switch (yy_input) {
-                case 7: 
-                case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 28; break yy_forNext;
-                case 11: yy_isFinal = true; yy_state = 29; break yy_forNext;
-                case 15: yy_isFinal = true; yy_state = 30; break yy_forNext;
-                case 37: yy_isFinal = true; yy_noLookAhead = true; yy_state = 31; break yy_forNext;
-                case 38: yy_isFinal = true; yy_state = 32; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 27; break yy_forNext;
-              }
-
-            case 6:
-              switch (yy_input) {
-                case 7: 
-                case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 28; break yy_forNext;
-                case 15: yy_isFinal = true; yy_state = 30; break yy_forNext;
-                case 38: yy_isFinal = true; yy_state = 33; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 27; break yy_forNext;
-              }
-
-            case 7:
-              switch (yy_input) {
-                case 11: 
-                case 15: yy_isFinal = true; yy_state = 30; break yy_forNext;
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_noLookAhead = true; yy_state = 34; break yy_forNext;
-                case 37: yy_isFinal = true; yy_noLookAhead = true; yy_state = 35; break yy_forNext;
-                case 38: yy_isFinal = true; yy_state = 36; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 27; break yy_forNext;
-              }
-
-            case 9:
-              switch (yy_input) {
-                case 2: yy_isFinal = true; yy_noLookAhead = true; yy_state = 37; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 10:
-              switch (yy_input) {
-                case 1: yy_isFinal = true; yy_noLookAhead = true; yy_state = 38; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 11:
-              switch (yy_input) {
-                case 4: yy_state = 39; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 12:
-              switch (yy_input) {
-                case 15: yy_state = 40; break yy_forNext;
-                case 21: yy_state = 41; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 13:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 42; break yy_forNext;
-                case 10: yy_state = 43; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 14:
-              switch (yy_input) {
-                case 15: yy_state = 40; break yy_forNext;
-                case 21: yy_state = 41; break yy_forNext;
-                case 11: yy_state = 44; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 15:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 45; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 16:
-              switch (yy_input) {
-                case 31: yy_state = 46; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 17:
-              switch (yy_input) {
-                case 18: yy_state = 47; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 18:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 48; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 19:
-              switch (yy_input) {
-                case 18: yy_state = 49; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 20:
-              switch (yy_input) {
-                case 32: yy_state = 50; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 21:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 51; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 23:
-              switch (yy_input) {
-                case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_state = 52; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
-              }
-
-            case 24:
-              switch (yy_input) {
-                case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_state = 52; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
-              }
-
-            case 29:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 53; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 30:
-              switch (yy_input) {
-                case 33: yy_isFinal = true; yy_noLookAhead = true; yy_state = 54; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 32:
-              switch (yy_input) {
-                case 10: yy_state = 55; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 33:
-              switch (yy_input) {
-                case 10: yy_state = 55; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 36:
-              switch (yy_input) {
-                case 10: yy_state = 55; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 39:
-              switch (yy_input) {
-                case 5: yy_isFinal = true; yy_noLookAhead = true; yy_state = 56; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 40:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 40; break yy_forNext;
-                case 16: yy_state = 57; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 41:
-              switch (yy_input) {
-                case 22: yy_state = 58; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 42:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 42; break yy_forNext;
-                case 10: yy_state = 43; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 43:
-              switch (yy_input) {
-                case 11: yy_state = 44; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 44:
-              switch (yy_input) {
-                case 12: yy_state = 59; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 46:
-              switch (yy_input) {
-                case 27: yy_state = 60; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 47:
-              switch (yy_input) {
-                case 31: yy_state = 61; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 49:
-              switch (yy_input) {
-                case 19: yy_state = 62; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 50:
-              switch (yy_input) {
-                case 31: yy_state = 63; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 52:
-              switch (yy_input) {
-                case 6: 
-                case 9: yy_isFinal = true; yy_state = 23; break yy_forNext;
-                case 7: yy_state = 52; break yy_forNext;
-                default: yy_isFinal = true; yy_noLookAhead = true; yy_state = 22; break yy_forNext;
-              }
-
-            case 55:
-              switch (yy_input) {
-                case 38: yy_isFinal = true; yy_noLookAhead = true; yy_state = 28; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 57:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 57; break yy_forNext;
-                case 17: yy_state = 64; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 58:
-              switch (yy_input) {
-                case 17: yy_state = 65; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 59:
-              switch (yy_input) {
-                case 13: yy_state = 66; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 60:
-              switch (yy_input) {
-                case 32: yy_state = 67; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 61:
-              switch (yy_input) {
-                case 19: yy_state = 68; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 62:
-              switch (yy_input) {
-                case 20: yy_state = 69; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 63:
-              switch (yy_input) {
-                case 28: yy_state = 70; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 64:
-              switch (yy_input) {
-                case 18: yy_state = 71; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 65:
-              switch (yy_input) {
-                case 23: yy_state = 72; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 66:
-              switch (yy_input) {
-                case 14: yy_state = 73; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 67:
-              switch (yy_input) {
-                case 24: yy_state = 74; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 68:
-              switch (yy_input) {
-                case 34: yy_state = 75; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 69:
-              switch (yy_input) {
-                case 20: yy_state = 76; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 70:
-              switch (yy_input) {
-                case 20: yy_state = 77; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 71:
-              switch (yy_input) {
-                case 19: yy_state = 78; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 72:
-              switch (yy_input) {
-                case 24: yy_state = 79; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 73:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 80; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 74:
-              switch (yy_input) {
-                case 25: yy_state = 81; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 75:
-              switch (yy_input) {
-                case 18: yy_state = 82; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 76:
-              switch (yy_input) {
-                case 31: yy_state = 83; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 77:
-              switch (yy_input) {
-                case 31: yy_state = 84; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 78:
-              switch (yy_input) {
-                case 20: yy_state = 85; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 79:
-              switch (yy_input) {
-                case 25: yy_state = 86; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 80:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 80; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 81:
-              switch (yy_input) {
-                case 31: yy_state = 87; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 82:
-              switch (yy_input) {
-                case 19: yy_state = 88; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 83:
-              switch (yy_input) {
-                case 27: yy_state = 89; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 84:
-              switch (yy_input) {
-                case 28: yy_state = 90; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 85:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 91; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 86:
-              switch (yy_input) {
-                case 26: yy_state = 92; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 87:
-              switch (yy_input) {
-                case 19: yy_state = 93; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 88:
-              switch (yy_input) {
-                case 20: yy_state = 94; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 89:
-              switch (yy_input) {
-                case 32: yy_state = 95; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 90:
-              switch (yy_input) {
-                case 28: yy_state = 96; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 91:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 91; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 92:
-              switch (yy_input) {
-                case 20: yy_state = 97; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 93:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 93; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 98; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 94:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 94; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 99; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 95:
-              switch (yy_input) {
-                case 24: yy_state = 100; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 96:
-              switch (yy_input) {
-                case 35: yy_state = 101; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 97:
-              switch (yy_input) {
-                case 27: yy_state = 102; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 98:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 98; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 99:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 99; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 100:
-              switch (yy_input) {
-                case 25: yy_state = 103; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 101:
-              switch (yy_input) {
-                case 17: yy_state = 104; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 102:
-              switch (yy_input) {
-                case 28: yy_state = 105; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 103:
-              switch (yy_input) {
-                case 31: yy_state = 106; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 104:
-              switch (yy_input) {
-                case 20: yy_state = 107; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 105:
-              switch (yy_input) {
-                case 25: yy_state = 108; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 106:
-              switch (yy_input) {
-                case 19: yy_state = 109; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 107:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 107; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 110; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 108:
-              switch (yy_input) {
-                case 29: yy_state = 111; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 109:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_state = 109; break yy_forNext;
-                case 8: yy_isFinal = true; yy_state = 112; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 110:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 110; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 111:
-              switch (yy_input) {
-                case 20: yy_state = 113; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 112:
-              switch (yy_input) {
-                case 6: 
-                case 7: 
-                case 9: yy_isFinal = true; yy_state = 112; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 113:
-              switch (yy_input) {
-                case 30: yy_state = 114; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            case 114:
-              switch (yy_input) {
-                case 17: yy_state = 64; break yy_forNext;
-                default: break yy_forAction;
-              }
-
-            default:
-              yy_ScanError(YY_ILLEGAL_STATE);
-              break;
-          } }
-
-          if ( yy_isFinal ) {
-            yy_action = yy_state; 
-            yy_markedPos = yy_currentPos; 
-            if ( yy_noLookAhead ) break yy_forAction;
-          }
-
-        }
-      }
-
-
-      switch (yy_action) {    
-
-        case 33: 
-          {  popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
-        case 116: break;
-        case 28: 
-          {  yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
-        case 117: break;
-        case 22: 
-        case 23: 
-          {  yypushback(1); yybegin(UnDelimitedString); string.setLength(0); }
-        case 118: break;
-        case 35: 
-        case 36: 
-          {  yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue; }
-        case 119: break;
-        case 48: 
-          {  yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd; }
-        case 120: break;
-        case 51: 
-          {  yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd; }
-        case 121: break;
-        case 53: 
-          {  yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
-        case 122: break;
-        case 54: 
-          {  yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue; }
-        case 123: break;
-        case 80: 
-          { if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;} }
-        case 124: break;
-        case 8: 
-        case 9: 
-        case 10: 
-        case 11: 
-        case 12: 
-        case 13: 
-        case 14: 
-        case 15: 
-        case 16: 
-        case 17: 
-        case 18: 
-        case 19: 
-        case 20: 
-        case 21: 
-        case 24: 
-          { if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;} }
-        case 125: break;
-        case 91: 
-          { yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart; }
-        case 126: break;
-        case 45: 
-          { yybegin(YYINITIAL); hasMore = false; return XMLHeadTokenizerConstants.XMLDeclEnd; }
-        case 127: break;
-        case 112: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding; }
-        case 128: break;
-        case 110: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType; }
-        case 129: break;
-        case 99: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage; }
-        case 130: break;
-        case 98: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding; }
-        case 131: break;
-        case 56: 
-          { hasMore = false; return EncodingParserConstants.UTF83ByteBOM; }
-        case 132: break;
-        case 37: 
-          { hasMore = false; return EncodingParserConstants.UTF16BE; }
-        case 133: break;
-        case 38: 
-          { hasMore = false; return EncodingParserConstants.UTF16LE; }
-        case 134: break;
-        case 31: 
-          {  popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;  }
-        case 135: break;
-        case 27: 
-        case 29: 
-        case 30: 
-        case 32: 
-          {  string.append( yytext() );  }
-        case 136: break;
-        case 26: 
-          {  yybegin(SQ_STRING); string.setLength(0);  }
-        case 137: break;
-        case 25: 
-          {  yybegin(DQ_STRING); string.setLength(0);  }
-        case 138: break;
-        case 34: 
-          {  yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue;  }
-        case 139: break;
-        default: 
-          if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
-            yy_atEOF = true;
-            yy_do_eof();
-              { hasMore = false; return EncodingParserConstants.EOF; }
-          } 
-          else {
-            yy_ScanError(YY_NO_MATCH);
-          }
-      }
-    }
-  }    
-
-  /**
-   * Runs the scanner on input files.
-   *
-   * This main method is the debugging routine for the scanner.
-   * It prints each returned token to System.out until the end of
-   * file is reached, or an error occured.
-   *
-   * @param argv   the command line, contains the filenames to run
-   *               the scanner on.
-   */
-  public static void main(String argv[]) {
-    for (int i = 0; i < argv.length; i++) {
-      JSPHeadTokenizer scanner = null;
-      try {
-        scanner = new JSPHeadTokenizer( new java.io.FileReader(argv[i]) );
-      }
-      catch (java.io.FileNotFoundException e) {
-        System.out.println("File not found : \""+argv[i]+"\"");
-        System.exit(1);
-      }
-      catch (java.io.IOException e) {
-        System.out.println("Error opening file \""+argv[i]+"\"");
-        System.exit(1);
-      }
-      catch (ArrayIndexOutOfBoundsException e) {
-        System.out.println("Usage : java JSPHeadTokenizer <inputfile>");
-        System.exit(1);
-      }
-
-      try {
-        do {
-          System.out.println(scanner.primGetNextToken());
-        } while (!scanner.yy_atEOF);
-
-      }
-      catch (java.io.IOException e) {
-        System.out.println("An I/O error occured while scanning :");
-        System.out.println(e);
-        System.exit(1);
-      }
-      catch (Exception e) {
-        e.printStackTrace();
-        System.exit(1);
-      }
-    }
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizerGenJava.cmd b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizerGenJava.cmd
deleted file mode 100644
index 08aa344..0000000
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/JSPHeadTokenizerGenJava.cmd
+++ /dev/null
@@ -1,25 +0,0 @@
-@echo off

-

-rem The following variables need to be set/specified for each "development machine"

-set PATH=%PATH%;d:jdks\j2sdk1.4.1_02\bin

-set WORKSPACE_LOCATION=D:\builds\Workspaces\PureHead

-set JFLEX_LIB_LOCATION=D:\DevTimeSupport\JFlex\lib

-

-rem The following variables differ from project to project, but should be otherwise constant

-set MAIN_NAME=JSPHeadTokenizer

-set PROJECT_SRC=\org.eclipse.wst.sse.core.jsp\src\

-set PACKAGE_DIR=com\ibm\sse\model\jsp\contenttype\

-

-

-rem Given the above "framework" and the command themselves, these variables should never need to be modified

-set JAVA_FILE=%MAIN_NAME%.java

-set JFLEX_RULES=%MAIN_NAME%.jflex

-set SKELETON_FILE=%MAIN_NAME%.skeleton

-

-IF EXIST %JAVA_FILE% del %JAVA_FILE%

-rem java -Xmx470000000 -cp %JFLEX_LIB_LOCATION%\sed-jflex.jar;.JFlex.Main %JFLEX_RULES% -skel %SKELETON_FILE% 1>jflexout.txt 2> jflexerr.txt

-java -Xmx470000000 -cp %JFLEX_LIB_LOCATION%\sed-jflex.jar;. JFlex.Main %JFLEX_RULES%  1>jflexout.txt 2>jflexerr.txt

-IF EXIST %JAVA_FILE% copy %JAVA_FILE% %WORKSPACE_LOCATION%%PROJECT_SRC%%PACKAGE_DIR%%JAVA_FILE%

-

-rem pause

-

diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/jflexerr.txt b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/jflexerr.txt
deleted file mode 100644
index e69de29..0000000
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/jflexerr.txt
+++ /dev/null
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/jflexout.txt b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/jflexout.txt
deleted file mode 100644
index efb08a2..0000000
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer/jflexout.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Reading "JSPHeadTokenizer.jflex"
-
-Warning : Macro "SpaceChar" has been declared but never used.
-Constructing NFA : 820 states in NFA
-Converting NFA to DFA : 
-................................................................................................................................................
-158 states before minimization, 115 states in minimized DFA
-Writing code to "JSPHeadTokenizer.java"
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer/XMLHeadTokenizer.jFlex b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer/XMLHeadTokenizer.jFlex
index a529f60..d6fe899 100644
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer/XMLHeadTokenizer.jFlex
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer/XMLHeadTokenizer.jFlex
@@ -39,74 +39,66 @@
 	}
 
 	  public void reset (Reader in) {
-	  	/* the input device */
-	  	yy_reader = in;
+                /* the input device */
+                zzReader = in;
 
-  		/* the current state of the DFA */
-  		yy_state = 0;
+                /* the current state of the DFA */
+                zzState = 0;
 
-  		/* the current lexical state */
-  		yy_lexical_state = YYINITIAL;
+                /* the current lexical state */
+                zzLexicalState = YYINITIAL;
 
-  		/* this buffer contains the current text to be matched and is
-  		 the source of the yytext() string */
-  		java.util.Arrays.fill(yy_buffer, (char)0);
+                /* this buffer contains the current text to be matched and is
+                 the source of the yytext() string */
+                java.util.Arrays.fill(zzBuffer, (char)0);
 
-  		/* the textposition at the last accepting state */
-  		yy_markedPos = 0;
+                /* the textposition at the last accepting state */
+                zzMarkedPos = 0;
 
-  		/* the textposition at the last state to be included in yytext */
-  		yy_pushbackPos = 0;
+                /* the textposition at the last state to be included in yytext */
+                zzPushbackPos = 0;
 
-  		/* the current text position in the buffer */
-  		yy_currentPos = 0;
+                /* the current text position in the buffer */
+                zzCurrentPos = 0;
 
-  		/* startRead marks the beginning of the yytext() string in the buffer */
-  		yy_startRead = 0;
+                /* startRead marks the beginning of the yytext() string in the buffer */
+                zzStartRead = 0;
 
-  		/** 
-  		 * endRead marks the last character in the buffer, that has been read
-  		 * from input 
-  		 */
-  		yy_endRead = 0;
+                /**
+                 * endRead marks the last character in the buffer, that has been read
+                 * from input
+                 */
+                zzEndRead = 0;
 
-  		/* number of newlines encountered up to the start of the matched text */
-  		yyline = 0;
+                /* number of newlines encountered up to the start of the matched text */
+                yyline = 0;
 
-  		/* the number of characters up to the start of the matched text */
-  		yychar = 0;
+                /* the number of characters up to the start of the matched text */
+                yychar = 0;
 
-  		/**
-  		 * the number of characters from the last newline up to the start
-  		 * of the matched text
-  		 */
-  		yycolumn = 0; 
+                /**
+                 * the number of characters from the last newline up to the start
+                 * of the matched text
+                 */
+                yycolumn = 0;
 
-  		/** 
-  		 * yy_atBOL == true <=> the scanner is currently at the beginning 
-  		 * of a line
-  		 */
-  		yy_atBOL = false;
+                /**
+                 * yy_atBOL == true <=> the scanner is currently at the beginning
+                 * of a line
+                 */
+                zzAtBOL = true;
 
-  		/* yy_atEOF == true <=> the scanner has returned a value for EOF */
-  		yy_atEOF = false;
+                /* yy_atEOF == true <=> the scanner has returned a value for EOF */
+                zzAtEOF = false;
 
-  		/* denotes if the user-EOF-code has already been executed */
-  		yy_eof_done = false;
+                /* denotes if the user-EOF-code has already been executed */
+                zzEOFDone = false;
 
 
-  		fStateStack.clear();
+                fStateStack.clear();
+
+                hasMore = true;
   		
-  		hasMore = true;
-  		
-  		// its a little wasteful to "throw away" first char array generated
-  		// by class init (via auto generated code), but we really do want 
-  		// a small buffer for our head parsers. 
-  		if (yy_buffer.length != MAX_TO_SCAN) {
-  			yy_buffer = new char[MAX_TO_SCAN];
-  		}
-
-
   	}
 
 
@@ -152,8 +144,9 @@
 %char
 %unicode
 %ignorecase 
-%debug
+//%debug
 %switch
+%buffer 8192
 
 UTF16BE = \xFE\xFF
 UTF16LE = \xFF\xFE
@@ -192,8 +185,7 @@
 	
 <ST_XMLDecl> 
 {
-//      commented out 'version' since we don't really use, but could add back in here if needed
-//	"version" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;}
+	"version" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;}
 	"encoding" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;}
 	// note the "forced end" (via 'hasMore=false') once the end of XML Declaration found
 	// This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is 
diff --git a/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/EncodingMemento.java b/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/EncodingMemento.java
index b7f4a63..853dfde 100644
--- a/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/EncodingMemento.java
+++ b/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/EncodingMemento.java
@@ -74,6 +74,10 @@
 	private boolean fUnicodeStream;
 	private boolean fUTF83ByteBOMUsed;
 
+	public EncodingMemento() {
+		super();
+	}
+
 	/**
 	 * Returns a clone of this object.
 	 */
diff --git a/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/IStreamCharsetDetector.java b/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/IStreamCharsetDetector.java
index 0d8a5dd..f51aecc 100644
--- a/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/IStreamCharsetDetector.java
+++ b/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/IStreamCharsetDetector.java
@@ -19,8 +19,6 @@
 public interface IStreamCharsetDetector {
 	String getEncoding() throws IOException;
 
-	EncodingMemento getEncodingMemento() throws IOException;
-
 	String getSpecDefaultEncoding();
 
 	void set(InputStream inputStream);
diff --git a/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/util/ByteReader.java b/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/util/ByteReader.java
index 49215e0..e3dc503 100644
--- a/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/util/ByteReader.java
+++ b/bundles/org.eclipse.wst.sse.core/src-encoding/org/eclipse/wst/sse/core/internal/encoding/util/ByteReader.java
@@ -16,6 +16,8 @@
 import java.io.InputStream;
 import java.io.Reader;
 
+import org.eclipse.wst.sse.core.internal.encoding.CodedIO;
+
 /**
  * This is an "adapter" class, simply to get in input stream to act like a
  * reader. We could not use InputStreamReader directly because its internal
@@ -30,8 +32,8 @@
 
 public class ByteReader extends Reader {
 
-	/** Default byte buffer size (2048). */
-	public static final int DEFAULT_BUFFER_SIZE = 2048;
+	
+	public static final int DEFAULT_BUFFER_SIZE = CodedIO.MAX_BUF_SIZE;
 
 	protected byte[] fBuffer;
 
diff --git a/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.core.prefs
index 774ef7c..4575c79 100644
--- a/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Mon May 30 17:49:20 EDT 2005

+#Tue Jul 05 01:42:27 EDT 2005

 eclipse.preferences.version=1

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

@@ -58,11 +58,11 @@
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

 org.eclipse.jdt.core.compiler.problem.unusedImport=error

-org.eclipse.jdt.core.compiler.problem.unusedLocal=error

+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

 org.eclipse.jdt.core.compiler.source=1.3

 org.eclipse.jdt.core.incompatibleJDKLevel=ignore

diff --git a/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..2535c48
--- /dev/null
+++ b/bundles/org.eclipse.wst.xml.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Tue Jul 05 01:42:27 EDT 2005
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/bundles/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XML10Names.jFlex b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XML10Names.jFlex
new file mode 100644
index 0000000..c33e65b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XML10Names.jFlex
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+/*nlsXXX*/
+package org.eclipse.wst.xml.core.internal.parser;
+
+
+
+%%
+
+%table
+%public
+%final
+%class XML10Names
+%function isValidXML10Name
+%type boolean
+%unicode
+%ignorecase
+%buffer 2048
+%apiprivate
+
+S = (\x20 | \x09 | \x0D | \x0A)
+
+BaseChar = [\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u0131\u0134-\u013E\u0141-\u0148\u014A-\u017E\u0180-\u01C3\u01CD-\u01F0\u01F4-\u01F5\u01FA-\u0217\u0250-\u02A8\u02BB-\u02C1\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2-\u03F3\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E-\u0481\u0490-\u04C4\u04C7-\u04C8\u04CB-\u04CC\u04D0-\u04EB\u04EE-\u04F5\u04F8-\u04F9\u0531-\u0556\u0559\u0561-\u0586\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0641-\u064A\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D3\u06D5\u06E5-\u06E6\u0905-\u0939\u093D\u0958-\u0961\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AE0\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CDE\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60-\u0D61\u0E01-\u0E2E\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EAE\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0F40-\u0F47\u0F49-\u0F69\u10A0-\u10C5\u10D0-\u10F6\u1100\u1102-\u1103\u1105-\u1107\u1109\u110B-\u110C\u110E-\u1112\u113C\u113E\u1140\u114C\u114E\u1150\u1154-\u1155\u1159\u115F-\u1161\u1163\u1165\u1167\u1169\u116D-\u116E\u1172-\u1173\u1175\u119E\u11A8\u11AB\u11AE-\u11AF\u11B7-\u11B8\u11BA\u11BC-\u11C2\u11EB\u11F0\u11F9\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A-\u212B\u212E\u2180-\u2182\u3041-\u3094\u30A1-\u30FA\u3105-\u312C\uAC00-\uD7A3]
+
+Ideographic = [\u4E00-\u9FA5\u3007\u3021-\u3029]
+
+CombiningChar = [\u0300-\u0345\u0360-\u0361\u0483-\u0486\u0591-\u05A1\u05A3-\u05B9\u05BB-\u05BD\u05BF\u05C1-\u05C2\u05C4\u064B-\u0652\u0670\u06D6-\u06DC\u06DD-\u06DF\u06E0-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0901-\u0903\u093C\u093E-\u094C\u094D\u0951-\u0954\u0962-\u0963\u0981-\u0983\u09BC\u09BE\u09BF\u09C0-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09E2-\u09E3\u0A02\u0A3C\u0A3E\u0A3F\u0A40-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A70-\u0A71\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0B01-\u0B03\u0B3C\u0B3E-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B82-\u0B83\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C82-\u0C83\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86-\u0F8B\u0F90-\u0F95\u0F97\u0F99-\u0FAD\u0FB1-\u0FB7\u0FB9\u20D0-\u20DC\u20E1\u302A-\u302F\u3099\u309A]
+
+Digit =  [\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE7-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29]
+
+Extender = [\u00B7\u02D0\u02D1\u0387\u0640\u0E46\u0EC6\u3005\u3031-\u3035\u309D-\u309E\u30FC-\u30FE]
+
+Letter = ({BaseChar} | {Ideographic})
+
+NameChar = ({Letter} | {Digit} | . | - | _ | : | {CombiningChar} | {Extender})
+
+Name = ({Letter} | _ | : ) ({NameChar})*
+
+
+
+%{
+
+	/**
+	 * Creates a new scanner
+	 */
+	public XML10Names() {
+		this.zzReader = null;
+	}
+
+	public boolean isValidXML10Name(String stringToCheck) {
+		boolean result = false;
+		yyreset(new java.io.StringReader(stringToCheck));
+		try {
+			result = isValidXML10Name();
+		}
+		catch (java.io.IOException e) {
+			// should be impossible with strings, but if occurs, just means
+			// "not"
+			result = false;
+		}
+		return result;
+	}
+
+%}
+
+
+
+
+%%
+
+<YYINITIAL>
+{
+
+	// don't match if contains trailing or embedded space
+	{Name} {S}+         {return false;}
+	{Name} {S}+ {Name}  {return false;}
+
+	{Name}              {return true;}
+
+	// match anything should come last
+	.                   {return false;}
+
+}
+
+
+// this rule always in effect
+<<EOF>>
+{
+	{return false;}
+}
+
+
diff --git a/bundles/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer.jFlex b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer.jFlex
new file mode 100644
index 0000000..ff50a31
--- /dev/null
+++ b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer.jFlex
@@ -0,0 +1,256 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+/*nlsXXX*/
+package org.eclipse.wst.xml.core.internal.contenttype;
+import java.io.IOException;
+import java.io.Reader;
+
+import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
+
+
+%%
+
+%{
+
+
+	private boolean hasMore = true;
+	private final static int MAX_TO_SCAN = 8000;
+	StringBuffer string = new StringBuffer();
+	// state stack for easier state handling
+	private IntStack fStateStack = new IntStack();
+	private String valueText = null;
+
+
+	public XMLHeadTokenizer() {
+		super();
+	}
+
+	  public void reset (Reader in) {
+                /* the input device */
+                zzReader = in;
+
+                /* the current state of the DFA */
+                zzState = 0;
+
+                /* the current lexical state */
+                zzLexicalState = YYINITIAL;
+
+                /* this buffer contains the current text to be matched and is
+                 the source of the yytext() string */
+                java.util.Arrays.fill(zzBuffer, (char)0);
+
+                /* the textposition at the last accepting state */
+                zzMarkedPos = 0;
+
+                /* the textposition at the last state to be included in yytext */
+                zzPushbackPos = 0;
+
+                /* the current text position in the buffer */
+                zzCurrentPos = 0;
+
+                /* startRead marks the beginning of the yytext() string in the buffer */
+                zzStartRead = 0;
+
+                /**
+                 * endRead marks the last character in the buffer, that has been read
+                 * from input
+                 */
+                zzEndRead = 0;
+
+                /* number of newlines encountered up to the start of the matched text */
+                yyline = 0;
+
+                /* the number of characters up to the start of the matched text */
+                yychar = 0;
+
+                /**
+                 * the number of characters from the last newline up to the start
+                 * of the matched text
+                 */
+                yycolumn = 0;
+
+                /**
+                 * yy_atBOL == true <=> the scanner is currently at the beginning
+                 * of a line
+                 */
+                zzAtBOL = true;
+
+                /* yy_atEOF == true <=> the scanner has returned a value for EOF */
+                zzAtEOF = false;
+
+                /* denotes if the user-EOF-code has already been executed */
+                zzEOFDone = false;
+
+
+                fStateStack.clear();
+
+                hasMore = true;
+  		
+  	}
+
+
+	public final HeadParserToken getNextToken() throws IOException {
+		String context = null;
+		context = primGetNextToken();
+		HeadParserToken result = null;
+		if (valueText != null) {
+			result = createToken(context, yychar, valueText);
+			valueText = null;
+		} else {
+			result = createToken(context, yychar, yytext());
+		}
+		return result;
+	}
+
+	public final boolean hasMoreTokens() {
+		return hasMore && yychar < MAX_TO_SCAN;
+	}
+	private void pushCurrentState() {
+		fStateStack.push(yystate());
+
+	}
+
+	private void popState() {
+		yybegin(fStateStack.pop());
+	}
+	
+	private HeadParserToken createToken(String context, int start, String text) {
+		return new HeadParserToken(context, start, text);
+	}	
+
+%}
+
+%eof{
+	hasMore=false;
+%eof}
+
+%public
+%class XMLHeadTokenizer
+%function primGetNextToken
+%type String
+%char
+%unicode
+%ignorecase 
+//%debug
+%switch
+%buffer 8192
+
+UTF16BE = \xFE\xFF
+UTF16LE = \xFF\xFE
+UTF83ByteBOM = \xEF\xBB\xBF
+
+//SpaceChar = [\x20\x09]
+
+// [3] S ::= (0x20 | 0x9 | 0xD | 0xA)+
+S = [\x20\x09\x0D\x0A]
+
+BeginAttribeValue = {S}* \= {S}*
+
+LineTerminator = \r|\n
+
+
+%state ST_XMLDecl
+%state QuotedAttributeValue
+%state DQ_STRING
+%state SQ_STRING
+%state UnDelimitedString
+
+%%
+
+
+<YYINITIAL>  
+{
+	// force to start at beginning of line (^) and at beginning of file (yychar == 0)
+	^{UTF16BE}   		{if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16BE;}}
+	^{UTF16LE}   		{if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16LE;}}
+	^{UTF83ByteBOM}   	{if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}}
+	
+	// force to be started on first line, but we do allow preceeding spaces
+	^ {S}* "<\?xml" {S}+ {if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}}
+	
+}	
+	
+<ST_XMLDecl> 
+{
+	"version" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;}
+	"encoding" {BeginAttribeValue} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;}
+	// note the "forced end" (via 'hasMore=false') once the end of XML Declaration found
+	// This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is 
+	// read with incorrect encoding (such as if platform encoding is in effect until true encoding detected). 
+	"\?>"    {yybegin(YYINITIAL); hasMore = false; return XMLHeadTokenizerConstants.XMLDeclEnd;}
+}	
+
+	
+
+<QuotedAttributeValue>
+{
+	\"                      { yybegin(DQ_STRING); string.setLength(0); }
+	\'			{ yybegin(SQ_STRING); string.setLength(0); }
+	// in this state, anything other than a space character can start an undelimited string
+	{S}*.           { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);}
+
+}	
+
+
+<DQ_STRING>
+{
+
+	\"                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }
+  	{LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	"\?>"			{ yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	'<'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	.			{ string.append( yytext() ); }
+
+
+}
+
+<SQ_STRING>
+{
+
+	\'                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;}
+  	{LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	"%>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	'<'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	.			{ string.append( yytext() ); }
+
+
+}
+
+<UnDelimitedString>
+{
+
+	{S}                     { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue; }
+  	{LineTerminator}        { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	"\?>"			{ yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	'<'	
+	{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}
+	// these are a bit special, since we started an undelimit string, but found a quote ... probably indicates a missing beginning quote
+	\'			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}
+	
+	\"			{ yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}
+	
+	.			{ string.append( yytext() ); }
+
+}
+
+// The "match anything" rule should always be in effect except for when looking for end of string
+// (That is, remember to update state list if/when new states added)
+<YYINITIAL, ST_XMLDecl, QuotedAttributeValue>
+{
+// this is the fallback (match "anything") rule  (for this scanner, input is ignored, and position advanced, if not recognized)
+.|\n              {if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}}
+}
+
+// this rule always in effect
+<<EOF>>         {hasMore = false; return EncodingParserConstants.EOF;}
+
+	
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.core/DevTimeSupport/buildNames.xml b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/buildNames.xml
new file mode 100644
index 0000000..6d97563
--- /dev/null
+++ b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/buildNames.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="tokenizer" default="XML10Names">
+	
+	<!-- Note: for Eclipse env., the JFlex 1.4 jar should be added 
+	to the ant global entries  -->
+	<taskdef classname="JFlex.anttask.JFlexTask" name="jflex" />
+		
+	<target name="init">
+		<property name="src.file" value="XML10Names.jFlex"/>			
+		<property name="src.dir" value="HeadParsers"/>
+		<property name="dest.dir" value="../src"/>
+		<!-- touch causes to always build, remove for real 'make' behavior -->
+		<touch file="${src.dir}/${src.file}"/>
+					
+	</target>
+
+	<target name="XML10Names" depends="init">
+		<antcall target="run-jflex"/>
+	</target>
+
+	<target name="run-jflex" depends="init">
+		<jflex
+	    	file="${src.dir}/${src.file}"
+	    	destdir="${dest.dir}"
+			verbose="true"
+			nobak="true"
+			time="on"
+	    />
+	</target>
+	
+
+</project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.core/DevTimeSupport/buildParser.xml b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/buildParser.xml
new file mode 100644
index 0000000..49619df
--- /dev/null
+++ b/bundles/org.eclipse.wst.xml.core/DevTimeSupport/buildParser.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="tokenizer" default="HeadTokenizer">
+	
+	<!-- Note: for Eclipse env., the JFlex 1.4 jar should be added 
+	to the ant global entries  -->
+	<taskdef classname="JFlex.anttask.JFlexTask" name="jflex" />
+		
+	<target name="init">
+		<property name="src.file" value="XMLHeadTokenizer.jFlex"/>			
+		<property name="src.dir" value="HeadParsers"/>
+		<property name="dest.dir" value="../src"/>
+		<!-- touch causes to always build, remove for real 'make' behavior -->
+		<touch file="${src.dir}/${src.file}"/>
+					
+	</target>
+
+	<target name="HeadTokenizer" depends="init">
+		<antcall target="run-jflex"/>
+	</target>
+
+	<target name="run-jflex" depends="init">
+		<jflex
+	    	file="${src.dir}/${src.file}"
+	    	destdir="${dest.dir}"
+			verbose="true"
+			nobak="true"
+			time="on"
+	    />
+	</target>
+	
+
+</project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.core/build.properties b/bundles/org.eclipse.wst.xml.core/build.properties
index 0efaf62..20bb047 100644
--- a/bundles/org.eclipse.wst.xml.core/build.properties
+++ b/bundles/org.eclipse.wst.xml.core/build.properties
@@ -22,7 +22,8 @@
 src.includes = extensions.xml,\
                component.xml,\
                build.properties,\
-               schema/
+               schema/,\
+               DevTimeSupport/
 source.. =	   src-catalog, \
 			   src-contentmodel/,\
 			   src-validation/,\
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java
index 3565a31..090c3de 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/ContentDescriberForXML.java
@@ -153,7 +153,7 @@
 	 */
 	private int handleCalculations(int result, IContentDescription description, IResourceCharsetDetector detector) throws IOException {
 		int returnResult = result;
-		EncodingMemento encodingMemento = detector.getEncodingMemento();
+		EncodingMemento encodingMemento = ((XMLResourceEncodingDetector)detector).getEncodingMemento();
 		if (description != null) {
 			// TODO: I need to verify to see if this BOM work is always done
 			// by text type.
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizer.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizer.java
index 2514222..3eab68b 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizer.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizer.java
@@ -1,5 +1,7 @@
+/* The following code was generated by JFlex 1.4 on 7/5/05 1:19 AM */
+
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2005 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,123 +9,163 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
  *******************************************************************************/
-/* The following code was generated by JFlex 1.2.2 on 4/6/04 11:13 PM */
-
 /*nlsXXX*/
 package org.eclipse.wst.xml.core.internal.contenttype;
-
 import java.io.IOException;
 import java.io.Reader;
 
+import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
+import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
 
 
 
 /**
- * This class is a scanner generated by <a
- * href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex </a> 1.2.2
- * on 4/6/04 11:13 PM from the specification file
- * <tt>file:/D:/DevTimeSupport/HeadParsers/XMLHeadTokenizer/XMLHeadTokenizer.jflex</tt>
+ * This class is a scanner generated by 
+ * <a href="http://www.jflex.de/">JFlex</a> 1.4
+ * on 7/5/05 1:19 AM from the specification file
+ * <tt>D:/builds/Workspaces/PureHeadWTP_M7/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XMLHeadTokenizer.jFlex</tt>
  */
 public class XMLHeadTokenizer {
 
-	/** this character denotes the end of file */
-	final public static int YYEOF = -1;
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
 
-	/** lexical states */
-	final public static int YYINITIAL = 0;
-	final public static int UnDelimitedString = 10;
-	final public static int DQ_STRING = 6;
-	final public static int SQ_STRING = 8;
-	final public static int ST_XMLDecl = 2;
-	final public static int QuotedAttributeValue = 4;
+  /** initial size of the lookahead buffer */
+  private static final int ZZ_BUFFERSIZE = 8192;
 
-	/**
-	 * YY_LEXSTATE[l] is the state in the DFA for the lexical state l
-	 * YY_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the
-	 * beginning of a line l is of the form l = 2*k, k a non negative integer
-	 */
-	private final static int YY_LEXSTATE[] = {0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6};
+  /** lexical states */
+  public static final int YYINITIAL = 0;
+  public static final int UnDelimitedString = 10;
+  public static final int DQ_STRING = 6;
+  public static final int SQ_STRING = 8;
+  public static final int ST_XMLDecl = 2;
+  public static final int QuotedAttributeValue = 4;
 
-	/**
-	 * Translates characters to character classes
-	 */
-	final private static String yycmap_packed = "\11\0\1\6\1\7\2\0\1\11\22\0\1\6\1\0\1\27\2\0" + "\1\31\1\0\1\30\24\0\1\12\1\10\1\26\1\13\3\0\1\21" + "\1\23\1\17\1\0\1\25\1\0\1\24\2\0\1\16\1\15\1\20" + "\1\22\10\0\1\14\12\0\1\21\1\23\1\17\1\0\1\25\1\0" + "\1\24\2\0\1\16\1\15\1\20\1\22\10\0\1\14\102\0\1\4" + "\3\0\1\5\17\0\1\3\16\0\1\1\20\0\1\3\16\0\1\1" + "\1\2\170\0\1\2\ufe87\0"; //$NON-NLS-2$//$NON-NLS-3$
+  /**
+   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+   *                  at the beginning of a line
+   * l is of the form l = 2*k, k a non negative integer
+   */
+  private static final int ZZ_LEXSTATE[] = { 
+     0,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6, 6
+  };
 
-	/**
-	 * Translates characters to character classes
-	 */
-	final private static char[] yycmap = yy_unpack_cmap(yycmap_packed);
+  /** 
+   * Translates characters to character classes
+   */
+  private static final String ZZ_CMAP_PACKED = 
+    "\11\0\1\6\1\11\2\0\1\10\22\0\1\6\1\0\1\32\2\0"+
+    "\1\34\1\0\1\33\24\0\1\12\1\7\1\31\1\13\3\0\1\26"+
+    "\1\27\1\20\1\0\1\30\1\0\1\23\2\0\1\16\1\15\1\25"+
+    "\1\24\2\0\1\21\1\22\2\0\1\17\1\0\1\14\12\0\1\26"+
+    "\1\27\1\20\1\0\1\30\1\0\1\23\2\0\1\16\1\15\1\25"+
+    "\1\24\2\0\1\21\1\22\2\0\1\17\1\0\1\14\102\0\1\4"+
+    "\3\0\1\5\17\0\1\3\16\0\1\1\20\0\1\3\16\0\1\1"+
+    "\1\2\170\0\1\2\ufe87\0";
+
+  /** 
+   * Translates characters to character classes
+   */
+  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+
+  /** 
+   * Translates DFA states to action switch labels.
+   */
+  private static final int [] ZZ_ACTION = zzUnpackAction();
+
+  private static final String ZZ_ACTION_PACKED_0 =
+    "\7\0\11\1\2\2\1\1\1\3\1\4\1\5\1\6"+
+    "\1\5\1\7\1\5\1\7\1\5\1\10\2\11\1\12"+
+    "\1\13\4\0\1\14\3\0\1\15\1\0\1\16\1\17"+
+    "\11\0\1\20\4\0\1\21\1\0\1\22";
+
+  private static int [] zzUnpackAction() {
+    int [] result = new int[62];
+    int offset = 0;
+    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+    return result;
+  }
+
+  private static int zzUnpackAction(String packed, int offset, int [] result) {
+    int i = 0;       /* index in packed string  */
+    int j = offset;  /* index in unpacked array */
+    int l = packed.length();
+    while (i < l) {
+      int count = packed.charAt(i++);
+      int value = packed.charAt(i++);
+      do result[j++] = value; while (--count > 0);
+    }
+    return j;
+  }
 
 
-	/* error codes */
-	final private static int YY_UNKNOWN_ERROR = 0;
-	final private static int YY_ILLEGAL_STATE = 1;
-	final private static int YY_NO_MATCH = 2;
-	final private static int YY_PUSHBACK_2BIG = 3;
+  /* error codes */
+  private static final int ZZ_UNKNOWN_ERROR = 0;
+  private static final int ZZ_NO_MATCH = 1;
+  private static final int ZZ_PUSHBACK_2BIG = 2;
 
-	/* error messages for the codes above */
-	final private static String YY_ERROR_MSG[] = {"Unkown internal scanner error", "Internal error: unknown state", "Error: could not match input", "Error: pushback value was too large"};
+  /* error messages for the codes above */
+  private static final String ZZ_ERROR_MSG[] = {
+    "Unkown internal scanner error",
+    "Error: could not match input",
+    "Error: pushback value was too large"
+  };
 
-	/** the input device */
-	private java.io.Reader yy_reader;
+  /** the input device */
+  private java.io.Reader zzReader;
 
-	/** the current state of the DFA */
-	private int yy_state;
+  /** the current state of the DFA */
+  private int zzState;
 
-	/** the current lexical state */
-	private int yy_lexical_state = YYINITIAL;
+  /** the current lexical state */
+  private int zzLexicalState = YYINITIAL;
 
-	/**
-	 * this buffer contains the current text to be matched and is the source
-	 * of the yytext() string
-	 */
-	private char yy_buffer[] = new char[16384];
+  /** this buffer contains the current text to be matched and is
+      the source of the yytext() string */
+  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
 
-	/** the textposition at the last accepting state */
-	private int yy_markedPos;
+  /** the textposition at the last accepting state */
+  private int zzMarkedPos;
 
-	/** the textposition at the last state to be included in yytext */
-	private int yy_pushbackPos;
+  /** the textposition at the last state to be included in yytext */
+  private int zzPushbackPos;
 
-	/** the current text position in the buffer */
-	private int yy_currentPos;
+  /** the current text position in the buffer */
+  private int zzCurrentPos;
 
-	/** startRead marks the beginning of the yytext() string in the buffer */
-	private int yy_startRead;
+  /** startRead marks the beginning of the yytext() string in the buffer */
+  private int zzStartRead;
 
-	/**
-	 * endRead marks the last character in the buffer, that has been read from
-	 * input
-	 */
-	private int yy_endRead;
+  /** endRead marks the last character in the buffer, that has been read
+      from input */
+  private int zzEndRead;
 
-	/** number of newlines encountered up to the start of the matched text */
-	// future_TODO: remove from skeleton
-	// private int yyline;
-	/** the number of characters up to the start of the matched text */
-	private int yychar;
+  /** number of newlines encountered up to the start of the matched text */
+//  private int yyline;
 
-	/**
-	 * the number of characters from the last newline up to the start of the
-	 * matched text
-	 */
-	// future_TODO: remove from skeleton
-	//private int yycolumn;
-	/**
-	 * yy_atBOL == true <=>the scanner is currently at the beginning of a line
-	 */
-	private boolean yy_atBOL;
+  /** the number of characters up to the start of the matched text */
+  private int yychar;
 
-	/** yy_atEOF == true <=>the scanner has returned a value for EOF */
-	private boolean yy_atEOF;
+  /**
+   * the number of characters from the last newline up to the start of the 
+   * matched text
+   */
+//  private int yycolumn;
 
-	/** denotes if the user-EOF-code has already been executed */
-	private boolean yy_eof_done;
+  /** 
+   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+   */
+  private boolean zzAtBOL = true;
 
-	/* user code: */
+  /** zzAtEOF == true <=> the scanner is at the EOF */
+  private boolean zzAtEOF;
+
+  /** denotes if the user-EOF-code has already been executed */
+  private boolean zzEOFDone;
+
+  /* user code: */
 
 
 	private boolean hasMore = true;
@@ -138,78 +180,68 @@
 		super();
 	}
 
-	public void reset(Reader in) {
-		/* the input device */
-		yy_reader = in;
+	  public void reset (Reader in) {
+                /* the input device */
+                zzReader = in;
 
-		/* the current state of the DFA */
-		yy_state = 0;
+                /* the current state of the DFA */
+                zzState = 0;
 
-		/* the current lexical state */
-		yy_lexical_state = YYINITIAL;
+                /* the current lexical state */
+                zzLexicalState = YYINITIAL;
 
-		/*
-		 * this buffer contains the current text to be matched and is the
-		 * source of the yytext() string
-		 */
-		java.util.Arrays.fill(yy_buffer, (char) 0);
+                /* this buffer contains the current text to be matched and is
+                 the source of the yytext() string */
+                java.util.Arrays.fill(zzBuffer, (char)0);
 
-		/* the textposition at the last accepting state */
-		yy_markedPos = 0;
+                /* the textposition at the last accepting state */
+                zzMarkedPos = 0;
 
-		/* the textposition at the last state to be included in yytext */
-		yy_pushbackPos = 0;
+                /* the textposition at the last state to be included in yytext */
+                zzPushbackPos = 0;
 
-		/* the current text position in the buffer */
-		yy_currentPos = 0;
+                /* the current text position in the buffer */
+                zzCurrentPos = 0;
 
-		/* startRead marks the beginning of the yytext() string in the buffer */
-		yy_startRead = 0;
+                /* startRead marks the beginning of the yytext() string in the buffer */
+                zzStartRead = 0;
 
-		/**
-		 * endRead marks the last character in the buffer, that has been read
-		 * from input
-		 */
-		yy_endRead = 0;
+                /**
+                 * endRead marks the last character in the buffer, that has been read
+                 * from input
+                 */
+                zzEndRead = 0;
 
-		/* number of newlines encountered up to the start of the matched text */
-		// future_TODO: remove from skeleton
-		//yyline = 0;
-		/* the number of characters up to the start of the matched text */
-		yychar = 0;
+                /* number of newlines encountered up to the start of the matched text */
+//                yyline = 0;
 
-		/**
-		 * the number of characters from the last newline up to the start of
-		 * the matched text
-		 */
-		// future_TODO: remove from skeleton
-		//yycolumn = 0;
-		/**
-		 * yy_atBOL == true <=>the scanner is currently at the beginning of a
-		 * line
-		 */
-		yy_atBOL = false;
+                /* the number of characters up to the start of the matched text */
+                yychar = 0;
 
-		/* yy_atEOF == true <=> the scanner has returned a value for EOF */
-		yy_atEOF = false;
+                /**
+                 * the number of characters from the last newline up to the start
+                 * of the matched text
+                 */
+//                yycolumn = 0;
 
-		/* denotes if the user-EOF-code has already been executed */
-		yy_eof_done = false;
+                /**
+                 * yy_atBOL == true <=> the scanner is currently at the beginning
+                 * of a line
+                 */
+                zzAtBOL = true;
+
+                /* yy_atEOF == true <=> the scanner has returned a value for EOF */
+                zzAtEOF = false;
+
+                /* denotes if the user-EOF-code has already been executed */
+                zzEOFDone = false;
 
 
-		fStateStack.clear();
+                fStateStack.clear();
 
-		hasMore = true;
-
-		// its a little wasteful to "throw away" first char array generated
-		// by class init (via auto generated code), but we really do want
-		// a small buffer for our head parsers.
-		if (yy_buffer.length != MAX_TO_SCAN) {
-			yy_buffer = new char[MAX_TO_SCAN];
-		}
-
-
-	}
+                hasMore = true;
+  		
+  	}
 
 
 	public final HeadParserToken getNextToken() throws IOException {
@@ -228,7 +260,6 @@
 	public final boolean hasMoreTokens() {
 		return hasMore && yychar < MAX_TO_SCAN;
 	}
-
 	private void pushCurrentState() {
 		fStateStack.push(yystate());
 
@@ -237,987 +268,766 @@
 	private void popState() {
 		yybegin(fStateStack.pop());
 	}
-
+	
 	private HeadParserToken createToken(String context, int start, String text) {
 		return new HeadParserToken(context, start, text);
-	}
+	}	
 
 
 
-	/**
-	 * Creates a new scanner There is also a java.io.InputStream version of
-	 * this constructor.
-	 * 
-	 * @param in
-	 *            the java.io.Reader to read input from.
-	 */
-	public XMLHeadTokenizer(java.io.Reader in) {
-		this.yy_reader = in;
-	}
+  /**
+   * Creates a new scanner
+   * There is also a java.io.InputStream version of this constructor.
+   *
+   * @param   in  the java.io.Reader to read input from.
+   */
+  public XMLHeadTokenizer(java.io.Reader in) {
+    this.zzReader = in;
+  }
 
-	/**
-	 * Creates a new scanner. There is also java.io.Reader version of this
-	 * constructor.
-	 * 
-	 * @param in
-	 *            the java.io.Inputstream to read input from.
-	 */
-	public XMLHeadTokenizer(java.io.InputStream in) {
-		this(new java.io.InputStreamReader(in));
-	}
+  /**
+   * Creates a new scanner.
+   * There is also java.io.Reader version of this constructor.
+   *
+   * @param   in  the java.io.Inputstream to read input from.
+   */
+  public XMLHeadTokenizer(java.io.InputStream in) {
+    this(new java.io.InputStreamReader(in));
+  }
 
-	/**
-	 * Unpacks the compressed character translation table.
-	 * 
-	 * @param packed
-	 *            the packed character translation table
-	 * @return the unpacked character translation table
-	 */
-	private static char[] yy_unpack_cmap(String packed) {
-		char[] map = new char[0x10000];
-		int i = 0; /* index in packed string */
-		int j = 0; /* index in unpacked array */
-		while (i < 128) {
-			int count = packed.charAt(i++);
-			char value = packed.charAt(i++);
-			do
-				map[j++] = value;
-			while (--count > 0);
-		}
-		return map;
-	}
+  /** 
+   * Unpacks the compressed character translation table.
+   *
+   * @param packed   the packed character translation table
+   * @return         the unpacked character translation table
+   */
+  private static char [] zzUnpackCMap(String packed) {
+    char [] map = new char[0x10000];
+    int i = 0;  /* index in packed string  */
+    int j = 0;  /* index in unpacked array */
+    while (i < 148) {
+      int  count = packed.charAt(i++);
+      char value = packed.charAt(i++);
+      do map[j++] = value; while (--count > 0);
+    }
+    return map;
+  }
 
 
-	/**
-	 * Gets the next input character.
-	 * 
-	 * @return the next character of the input stream, EOF if the end of the
-	 *         stream is reached.
-	 * @exception IOException
-	 *                if any I/O-Error occurs
-	 */
-	private int yy_advance() throws java.io.IOException {
+  /**
+   * Refills the input buffer.
+   *
+   * @return      <code>false</code>, iff there was new input.
+   * 
+   * @exception   java.io.IOException  if any I/O-Error occurs
+   */
+  private boolean zzRefill() throws java.io.IOException {
 
-		/* standard case */
-		if (yy_currentPos < yy_endRead)
-			return yy_buffer[yy_currentPos++];
+    /* first: make room (if you can) */
+    if (zzStartRead > 0) {
+      System.arraycopy(zzBuffer, zzStartRead,
+                       zzBuffer, 0,
+                       zzEndRead-zzStartRead);
 
-		/* if the eof is reached, we don't need to work hard */
-		if (yy_atEOF)
-			return YYEOF;
+      /* translate stored positions */
+      zzEndRead-= zzStartRead;
+      zzCurrentPos-= zzStartRead;
+      zzMarkedPos-= zzStartRead;
+      zzPushbackPos-= zzStartRead;
+      zzStartRead = 0;
+    }
 
-		/* otherwise: need to refill the buffer */
+    /* is the buffer big enough? */
+    if (zzCurrentPos >= zzBuffer.length) {
+      /* if not: blow it up */
+      char newBuffer[] = new char[zzCurrentPos*2];
+      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+      zzBuffer = newBuffer;
+    }
 
-		/* first: make room (if you can) */
-		if (yy_startRead > 0) {
-			System.arraycopy(yy_buffer, yy_startRead, yy_buffer, 0, yy_endRead - yy_startRead);
+    /* finally: fill the buffer with new input */
+    int numRead = zzReader.read(zzBuffer, zzEndRead,
+                                            zzBuffer.length-zzEndRead);
 
-			/* translate stored positions */
-			yy_endRead -= yy_startRead;
-			yy_currentPos -= yy_startRead;
-			yy_markedPos -= yy_startRead;
-			yy_pushbackPos -= yy_startRead;
-			yy_startRead = 0;
-		}
+    if (numRead < 0) {
+      return true;
+    }
+    else {
+      zzEndRead+= numRead;
+      return false;
+    }
+  }
 
-		/* is the buffer big enough? */
-		if (yy_currentPos >= yy_buffer.length) {
-			/* if not: blow it up */
-			char newBuffer[] = new char[yy_currentPos * 2];
-			System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
-			yy_buffer = newBuffer;
-		}
+    
+  /**
+   * Closes the input stream.
+   */
+  public final void yyclose() throws java.io.IOException {
+    zzAtEOF = true;            /* indicate end of file */
+    zzEndRead = zzStartRead;  /* invalidate buffer    */
 
-		/* finally: fill the buffer with new input */
-		int numRead = yy_reader.read(yy_buffer, yy_endRead, yy_buffer.length - yy_endRead);
+    if (zzReader != null)
+      zzReader.close();
+  }
 
-		if (numRead == -1)
-			return YYEOF;
 
-		yy_endRead += numRead;
+  /**
+   * Resets the scanner to read from a new input stream.
+   * Does not close the old reader.
+   *
+   * All internal variables are reset, the old input stream 
+   * <b>cannot</b> be reused (internal buffer is discarded and lost).
+   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+   *
+   * @param reader   the new input stream 
+   */
+  public final void yyreset(java.io.Reader reader) {
+    zzReader = reader;
+    zzAtBOL  = true;
+    zzAtEOF  = false;
+    zzEndRead = zzStartRead = 0;
+    zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
+    yychar = 0;
+    zzLexicalState = YYINITIAL;
+  }
 
-		return yy_buffer[yy_currentPos++];
-	}
 
+  /**
+   * Returns the current lexical state.
+   */
+  public final int yystate() {
+    return zzLexicalState;
+  }
 
-	/**
-	 * Closes the input stream.
-	 */
-	final public void yyclose() throws java.io.IOException {
-		yy_atEOF = true; /* indicate end of file */
-		yy_endRead = yy_startRead; /* invalidate buffer */
-		yy_reader.close();
-	}
 
+  /**
+   * Enters a new lexical state
+   *
+   * @param newState the new lexical state
+   */
+  public final void yybegin(int newState) {
+    zzLexicalState = newState;
+  }
 
-	/**
-	 * Returns the current lexical state.
-	 */
-	final public int yystate() {
-		return yy_lexical_state;
-	}
 
-	/**
-	 * Enters a new lexical state
-	 * 
-	 * @param newState
-	 *            the new lexical state
-	 */
-	final public void yybegin(int newState) {
-		yy_lexical_state = newState;
-	}
+  /**
+   * Returns the text matched by the current regular expression.
+   */
+  public final String yytext() {
+    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
+  }
 
 
-	/**
-	 * Returns the text matched by the current regular expression.
-	 */
-	final public String yytext() {
-		return new String(yy_buffer, yy_startRead, yy_markedPos - yy_startRead);
-	}
+  /**
+   * Returns the character at position <tt>pos</tt> from the 
+   * matched text. 
+   * 
+   * It is equivalent to yytext().charAt(pos), but faster
+   *
+   * @param pos the position of the character to fetch. 
+   *            A value from 0 to yylength()-1.
+   *
+   * @return the character at position pos
+   */
+  public final char yycharat(int pos) {
+    return zzBuffer[zzStartRead+pos];
+  }
 
-	/**
-	 * Returns the length of the matched text region.
-	 */
-	final public int yylength() {
-		return yy_markedPos - yy_startRead;
-	}
 
+  /**
+   * Returns the length of the matched text region.
+   */
+  public final int yylength() {
+    return zzMarkedPos-zzStartRead;
+  }
 
-	/**
-	 * Reports an error that occured while scanning.
-	 * 
-	 * @param errorCode
-	 *            the code of the errormessage to display
-	 */
-	private void yy_ScanError(int errorCode) {
-		try {
-			System.out.println(YY_ERROR_MSG[errorCode]);
-		} catch (ArrayIndexOutOfBoundsException e) {
-			System.out.println(YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
-		}
 
-		// System.exit(1);
-	}
+  /**
+   * Reports an error that occured while scanning.
+   *
+   * In a wellformed scanner (no or only correct usage of 
+   * yypushback(int) and a match-all fallback rule) this method 
+   * will only be called with things that "Can't Possibly Happen".
+   * If this method is called, something is seriously wrong
+   * (e.g. a JFlex bug producing a faulty scanner etc.).
+   *
+   * Usual syntax/scanner level error handling should be done
+   * in error fallback rules.
+   *
+   * @param   errorCode  the code of the errormessage to display
+   */
+  private void zzScanError(int errorCode) {
+    String message;
+    try {
+      message = ZZ_ERROR_MSG[errorCode];
+    }
+    catch (ArrayIndexOutOfBoundsException e) {
+      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+    }
 
+    throw new Error(message);
+  } 
 
-	/**
-	 * Pushes the specified amount of characters back into the input stream.
-	 * 
-	 * They will be read again by then next call of the scanning method
-	 * 
-	 * @param number
-	 *            the number of characters to be read again. This number must
-	 *            not be greater than yylength()!
-	 */
-	private void yypushback(int number) {
-		if (number > yylength())
-			yy_ScanError(YY_PUSHBACK_2BIG);
 
-		yy_markedPos -= number;
-	}
+  /**
+   * Pushes the specified amount of characters back into the input stream.
+   *
+   * They will be read again by then next call of the scanning method
+   *
+   * @param number  the number of characters to be read again.
+   *                This number must not be greater than yylength()!
+   */
+  public void yypushback(int number)  {
+    if ( number > yylength() )
+      zzScanError(ZZ_PUSHBACK_2BIG);
 
+    zzMarkedPos -= number;
+  }
 
-	/**
-	 * Contains user EOF-code, which will be executed exactly once, when the
-	 * end of file is reached
-	 */
-	private void yy_do_eof() {
-		if (!yy_eof_done) {
-			yy_eof_done = true;
-			hasMore = false;
 
-		}
-	}
+  /**
+   * Contains user EOF-code, which will be executed exactly once,
+   * when the end of file is reached
+   */
+  private void zzDoEOF() {
+    if (!zzEOFDone) {
+      zzEOFDone = true;
+    	hasMore=false;
 
+    }
+  }
 
-	/**
-	 * Resumes scanning until the next regular expression is matched, the end
-	 * of input is encountered or an I/O-Error occurs.
-	 * 
-	 * @return the next token
-	 * @exception IOException
-	 *                if any I/O-Error occurs
-	 */
-	public String primGetNextToken() throws java.io.IOException {
-		int yy_input;
-		int yy_action;
 
+  /**
+   * Resumes scanning until the next regular expression is matched,
+   * the end of input is encountered or an I/O-Error occurs.
+   *
+   * @return      the next token
+   * @exception   java.io.IOException  if any I/O-Error occurs
+   */
+  public String primGetNextToken() throws java.io.IOException {
+    int zzInput;
+    int zzAction;
 
-		while (true) {
+    // cached fields:
+    int zzCurrentPosL;
+    int zzMarkedPosL;
+    int zzEndReadL = zzEndRead;
+    char [] zzBufferL = zzBuffer;
+    char [] zzCMapL = ZZ_CMAP;
 
-			yychar += yylength();
 
-			yy_atBOL = yy_markedPos <= 0 || yy_buffer[yy_markedPos - 1] == '\n';
-			if (!yy_atBOL && yy_buffer[yy_markedPos - 1] == '\r') {
-				yy_atBOL = yy_advance() != '\n';
-				if (!yy_atEOF)
-					yy_currentPos--;
-			}
+    while (true) {
+      zzMarkedPosL = zzMarkedPos;
 
-			yy_action = -1;
+      yychar+= zzMarkedPosL-zzStartRead;
 
-			yy_currentPos = yy_startRead = yy_markedPos;
+      if (zzMarkedPosL > zzStartRead) {
+        switch (zzBufferL[zzMarkedPosL-1]) {
+        case '\n':
+        case '\u000B':
+        case '\u000C':
+        case '\u0085':
+        case '\u2028':
+        case '\u2029':
+          zzAtBOL = true;
+          break;
+        case '\r': 
+          if (zzMarkedPosL < zzEndReadL)
+            zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
+          else if (zzAtEOF)
+            zzAtBOL = false;
+          else {
+            boolean eof = zzRefill();
+            zzMarkedPosL = zzMarkedPos;
+            zzBufferL = zzBuffer;
+            if (eof) 
+              zzAtBOL = false;
+            else 
+              zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
+          }
+          break;
+        default:
+          zzAtBOL = false;
+        }
+      }
+      zzAction = -1;
 
-			if (yy_atBOL)
-				yy_state = YY_LEXSTATE[yy_lexical_state + 1];
-			else
-				yy_state = YY_LEXSTATE[yy_lexical_state];
+      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+  
+      if (zzAtBOL)
+        zzState = ZZ_LEXSTATE[zzLexicalState+1];
+      else
+        zzState = ZZ_LEXSTATE[zzLexicalState];
 
 
-			yy_forAction : {
-				while (true) {
+      zzForAction: {
+        while (true) {
+    
+          if (zzCurrentPosL < zzEndReadL)
+            zzInput = zzBufferL[zzCurrentPosL++];
+          else if (zzAtEOF) {
+            zzInput = YYEOF;
+            break zzForAction;
+          }
+          else {
+            // store back cached positions
+            zzCurrentPos  = zzCurrentPosL;
+            zzMarkedPos   = zzMarkedPosL;
+            boolean eof = zzRefill();
+            // get translated positions and possibly new buffer
+            zzCurrentPosL  = zzCurrentPos;
+            zzMarkedPosL   = zzMarkedPos;
+            zzBufferL      = zzBuffer;
+            zzEndReadL     = zzEndRead;
+            if (eof) {
+              zzInput = YYEOF;
+              break zzForAction;
+            }
+            else {
+              zzInput = zzBufferL[zzCurrentPosL++];
+            }
+          }
+          zzInput = zzCMapL[zzInput];
 
-					yy_input = yy_advance();
+          boolean zzIsFinal = false;
+          boolean zzNoLookAhead = false;
 
-					if (yy_input == YYEOF)
-						break yy_forAction;
+          zzForNext: { switch (zzState) {
+            case 0:
+              switch (zzInput) {
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 7; break zzForNext;
+              }
 
-					yy_input = yycmap[yy_input];
+            case 1:
+              switch (zzInput) {
+                case 1: zzIsFinal = true; zzState = 8; break zzForNext;
+                case 2: zzIsFinal = true; zzState = 9; break zzForNext;
+                case 3: zzIsFinal = true; zzState = 10; break zzForNext;
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 11; break zzForNext;
+                case 10: zzIsFinal = true; zzState = 12; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 7; break zzForNext;
+              }
 
-					boolean yy_isFinal = false;
-					boolean yy_noLookAhead = false;
+            case 2:
+              switch (zzInput) {
+                case 11: zzIsFinal = true; zzState = 13; break zzForNext;
+                case 15: zzIsFinal = true; zzState = 14; break zzForNext;
+                case 16: zzIsFinal = true; zzState = 15; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 7; break zzForNext;
+              }
 
-					yy_forNext : {
-						switch (yy_state) {
-							case 0 :
-								switch (yy_input) {
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 7;
-										break yy_forNext;
-								}
+            case 3:
+              switch (zzInput) {
+                case 6: 
+                case 8: zzIsFinal = true; zzState = 17; break zzForNext;
+                case 9: zzIsFinal = true; zzState = 18; break zzForNext;
+                case 26: zzIsFinal = true; zzNoLookAhead = true; zzState = 19; break zzForNext;
+                case 27: zzIsFinal = true; zzNoLookAhead = true; zzState = 20; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 16; break zzForNext;
+              }
 
-							case 1 :
-								switch (yy_input) {
-									case 1 :
-										yy_isFinal = true;
-										yy_state = 8;
-										break yy_forNext;
-									case 2 :
-										yy_isFinal = true;
-										yy_state = 9;
-										break yy_forNext;
-									case 3 :
-										yy_isFinal = true;
-										yy_state = 10;
-										break yy_forNext;
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 11;
-										break yy_forNext;
-									case 10 :
-										yy_isFinal = true;
-										yy_state = 12;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 7;
-										break yy_forNext;
-								}
+            case 4:
+              switch (zzInput) {
+                case 8: 
+                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 22; break zzForNext;
+                case 11: zzIsFinal = true; zzState = 23; break zzForNext;
+                case 26: zzIsFinal = true; zzNoLookAhead = true; zzState = 24; break zzForNext;
+                case 27: zzIsFinal = true; zzState = 25; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 21; break zzForNext;
+              }
 
-							case 2 :
-								switch (yy_input) {
-									case 11 :
-										yy_isFinal = true;
-										yy_state = 13;
-										break yy_forNext;
-									case 15 :
-										yy_isFinal = true;
-										yy_state = 14;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 7;
-										break yy_forNext;
-								}
+            case 5:
+              switch (zzInput) {
+                case 8: 
+                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 22; break zzForNext;
+                case 27: zzIsFinal = true; zzState = 26; break zzForNext;
+                case 28: zzIsFinal = true; zzState = 27; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 21; break zzForNext;
+              }
 
-							case 3 :
-								switch (yy_input) {
-									case 6 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 16;
-										break yy_forNext;
-									case 7 :
-										yy_isFinal = true;
-										yy_state = 17;
-										break yy_forNext;
-									case 23 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 18;
-										break yy_forNext;
-									case 24 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 19;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 15;
-										break yy_forNext;
-								}
+            case 6:
+              switch (zzInput) {
+                case 11: zzIsFinal = true; zzState = 27; break zzForNext;
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
+                case 26: zzIsFinal = true; zzNoLookAhead = true; zzState = 29; break zzForNext;
+                case 27: zzIsFinal = true; zzState = 30; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 21; break zzForNext;
+              }
 
-							case 4 :
-								switch (yy_input) {
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 21;
-										break yy_forNext;
-									case 11 :
-										yy_isFinal = true;
-										yy_state = 22;
-										break yy_forNext;
-									case 23 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 23;
-										break yy_forNext;
-									case 24 :
-										yy_isFinal = true;
-										yy_state = 24;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 20;
-										break yy_forNext;
-								}
+            case 8:
+              switch (zzInput) {
+                case 2: zzIsFinal = true; zzNoLookAhead = true; zzState = 31; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 5 :
-								switch (yy_input) {
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 21;
-										break yy_forNext;
-									case 24 :
-										yy_isFinal = true;
-										yy_state = 25;
-										break yy_forNext;
-									case 25 :
-										yy_isFinal = true;
-										yy_state = 26;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 20;
-										break yy_forNext;
-								}
+            case 9:
+              switch (zzInput) {
+                case 1: zzIsFinal = true; zzNoLookAhead = true; zzState = 32; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 6 :
-								switch (yy_input) {
-									case 11 :
-										yy_isFinal = true;
-										yy_state = 26;
-										break yy_forNext;
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 27;
-										break yy_forNext;
-									case 23 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 28;
-										break yy_forNext;
-									case 24 :
-										yy_isFinal = true;
-										yy_state = 29;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 20;
-										break yy_forNext;
-								}
+            case 10:
+              switch (zzInput) {
+                case 4: zzState = 33; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 8 :
-								switch (yy_input) {
-									case 2 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 30;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 11:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 34; break zzForNext;
+                case 10: zzState = 35; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 9 :
-								switch (yy_input) {
-									case 1 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 31;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 12:
+              switch (zzInput) {
+                case 11: zzState = 36; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 10 :
-								switch (yy_input) {
-									case 4 :
-										yy_state = 32;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 13:
+              switch (zzInput) {
+                case 25: zzIsFinal = true; zzNoLookAhead = true; zzState = 37; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 11 :
-								switch (yy_input) {
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_state = 33;
-										break yy_forNext;
-									case 10 :
-										yy_state = 34;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 14:
+              switch (zzInput) {
+                case 16: zzState = 38; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 12 :
-								switch (yy_input) {
-									case 11 :
-										yy_state = 35;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 15:
+              switch (zzInput) {
+                case 21: zzState = 39; break zzForNext;
+                default: break zzForAction;
+              }
+
+            case 17:
+              switch (zzInput) {
+                case 6: 
+                case 8: zzIsFinal = true; zzState = 17; break zzForNext;
+                case 9: zzState = 40; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 16; break zzForNext;
+              }
 
-							case 13 :
-								switch (yy_input) {
-									case 22 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 36;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 18:
+              switch (zzInput) {
+                case 6: 
+                case 8: zzIsFinal = true; zzState = 17; break zzForNext;
+                case 9: zzState = 40; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 16; break zzForNext;
+              }
 
-							case 14 :
-								switch (yy_input) {
-									case 16 :
-										yy_state = 37;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 23:
+              switch (zzInput) {
+                case 25: zzIsFinal = true; zzNoLookAhead = true; zzState = 41; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 16 :
-								switch (yy_input) {
-									case 6 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 16;
-										break yy_forNext;
-									case 7 :
-										yy_state = 38;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 15;
-										break yy_forNext;
-								}
+            case 25:
+              switch (zzInput) {
+                case 10: zzState = 42; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 17 :
-								switch (yy_input) {
-									case 6 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 16;
-										break yy_forNext;
-									case 7 :
-										yy_state = 38;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 15;
-										break yy_forNext;
-								}
+            case 26:
+              switch (zzInput) {
+                case 10: zzState = 42; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 22 :
-								switch (yy_input) {
-									case 22 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 39;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 27:
+              switch (zzInput) {
+                case 25: zzIsFinal = true; zzNoLookAhead = true; zzState = 43; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 24 :
-								switch (yy_input) {
-									case 10 :
-										yy_state = 40;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 30:
+              switch (zzInput) {
+                case 10: zzState = 42; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 25 :
-								switch (yy_input) {
-									case 10 :
-										yy_state = 40;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 33:
+              switch (zzInput) {
+                case 5: zzIsFinal = true; zzNoLookAhead = true; zzState = 44; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 26 :
-								switch (yy_input) {
-									case 22 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 41;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 34:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 34; break zzForNext;
+                case 10: zzState = 35; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 29 :
-								switch (yy_input) {
-									case 10 :
-										yy_state = 40;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 35:
+              switch (zzInput) {
+                case 11: zzState = 36; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 32 :
-								switch (yy_input) {
-									case 5 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 42;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 36:
+              switch (zzInput) {
+                case 12: zzState = 45; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 33 :
-								switch (yy_input) {
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_state = 33;
-										break yy_forNext;
-									case 10 :
-										yy_state = 34;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 38:
+              switch (zzInput) {
+                case 17: zzState = 46; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 34 :
-								switch (yy_input) {
-									case 11 :
-										yy_state = 35;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 39:
+              switch (zzInput) {
+                case 22: zzState = 47; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 35 :
-								switch (yy_input) {
-									case 12 :
-										yy_state = 43;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 40:
+              switch (zzInput) {
+                case 6: 
+                case 8: zzIsFinal = true; zzState = 17; break zzForNext;
+                case 9: zzState = 40; break zzForNext;
+                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 16; break zzForNext;
+              }
 
-							case 37 :
-								switch (yy_input) {
-									case 17 :
-										yy_state = 44;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 42:
+              switch (zzInput) {
+                case 27: zzIsFinal = true; zzNoLookAhead = true; zzState = 22; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 38 :
-								switch (yy_input) {
-									case 6 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 16;
-										break yy_forNext;
-									case 7 :
-										yy_state = 38;
-										break yy_forNext;
-									default :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 15;
-										break yy_forNext;
-								}
+            case 45:
+              switch (zzInput) {
+                case 13: zzState = 48; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 40 :
-								switch (yy_input) {
-									case 24 :
-										yy_isFinal = true;
-										yy_noLookAhead = true;
-										yy_state = 21;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 46:
+              switch (zzInput) {
+                case 18: zzState = 49; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 43 :
-								switch (yy_input) {
-									case 13 :
-										yy_state = 45;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 47:
+              switch (zzInput) {
+                case 20: zzState = 50; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 44 :
-								switch (yy_input) {
-									case 18 :
-										yy_state = 46;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 48:
+              switch (zzInput) {
+                case 14: zzState = 51; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 45 :
-								switch (yy_input) {
-									case 14 :
-										yy_state = 47;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 49:
+              switch (zzInput) {
+                case 19: zzState = 52; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 46 :
-								switch (yy_input) {
-									case 19 :
-										yy_state = 48;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 50:
+              switch (zzInput) {
+                case 23: zzState = 53; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 47 :
-								switch (yy_input) {
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 49;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 51:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 54; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 48 :
-								switch (yy_input) {
-									case 20 :
-										yy_state = 50;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 52:
+              switch (zzInput) {
+                case 20: zzState = 55; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 49 :
-								switch (yy_input) {
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 49;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 53:
+              switch (zzInput) {
+                case 19: zzState = 56; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 50 :
-								switch (yy_input) {
-									case 16 :
-										yy_state = 51;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 54:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 54; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 51 :
-								switch (yy_input) {
-									case 21 :
-										yy_state = 52;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 55:
+              switch (zzInput) {
+                case 21: zzState = 57; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 52 :
-								switch (yy_input) {
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_state = 52;
-										break yy_forNext;
-									case 8 :
-										yy_isFinal = true;
-										yy_state = 53;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 56:
+              switch (zzInput) {
+                case 21: zzState = 58; break zzForNext;
+                default: break zzForAction;
+              }
 
-							case 53 :
-								switch (yy_input) {
-									case 6 :
-									case 7 :
-									case 9 :
-										yy_isFinal = true;
-										yy_state = 53;
-										break yy_forNext;
-									default :
-										break yy_forAction;
-								}
+            case 57:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 57; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 59; break zzForNext;
+                default: break zzForAction;
+              }
 
-							default :
-								yy_ScanError(YY_ILLEGAL_STATE);
-								break;
-						}
-					}
+            case 58:
+              switch (zzInput) {
+                case 24: zzState = 60; break zzForNext;
+                default: break zzForAction;
+              }
 
-					if (yy_isFinal) {
-						yy_action = yy_state;
-						yy_markedPos = yy_currentPos;
-						if (yy_noLookAhead)
-							break yy_forAction;
-					}
+            case 59:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 59; break zzForNext;
+                default: break zzForAction;
+              }
 
-				}
-			}
+            case 60:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzState = 60; break zzForNext;
+                case 7: zzIsFinal = true; zzState = 61; break zzForNext;
+                default: break zzForAction;
+              }
 
+            case 61:
+              switch (zzInput) {
+                case 6: 
+                case 8: 
+                case 9: zzIsFinal = true; zzState = 61; break zzForNext;
+                default: break zzForAction;
+              }
 
-			switch (yy_action) {
+            default:
+              // if this is ever reached, there is a serious bug in JFlex
+              zzScanError(ZZ_UNKNOWN_ERROR);
+              break;
+          } }
 
-				case 25 : {
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.StringValue;
-				}
-				case 55 :
-					break;
-				case 21 : {
-					yypushback(1);
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.InvalidTerminatedStringValue;
-				}
-				case 56 :
-					break;
-				case 15 :
-				case 16 : {
-					yypushback(1);
-					yybegin(UnDelimitedString);
-					string.setLength(0);
-				}
-				case 57 :
-					break;
-				case 28 :
-				case 29 : {
-					yypushback(1);
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;
-				}
-				case 58 :
-					break;
-				case 39 : {
-					yypushback(2);
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.InvalidTerminatedStringValue;
-				}
-				case 59 :
-					break;
-				case 41 : {
-					yypushback(2);
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.InvalidTerminatedStringValue;
-				}
-				case 60 :
-					break;
-				case 7 :
-				case 8 :
-				case 9 :
-				case 10 :
-				case 11 :
-				case 12 :
-				case 13 :
-				case 14 :
-				case 17 : {
-					if (yychar > MAX_TO_SCAN) {
-						hasMore = false;
-						return EncodingParserConstants.MAX_CHARS_REACHED;
-					}
-				}
-				case 61 :
-					break;
-				case 30 : {
-					if (yychar == 0) {
-						hasMore = false;
-						return EncodingParserConstants.UTF16BE;
-					}
-				}
-				case 62 :
-					break;
-				case 31 : {
-					if (yychar == 0) {
-						hasMore = false;
-						return EncodingParserConstants.UTF16LE;
-					}
-				}
-				case 63 :
-					break;
-				case 42 : {
-					if (yychar == 0) {
-						hasMore = false;
-						return EncodingParserConstants.UTF83ByteBOM;
-					}
-				}
-				case 64 :
-					break;
-				case 49 : {
-					if (yychar == 0) {
-						yybegin(ST_XMLDecl);
-						return XMLHeadTokenizerConstants.XMLDeclStart;
-					}
-				}
-				case 65 :
-					break;
-				case 36 : {
-					yybegin(YYINITIAL);
-					hasMore = false;
-					return XMLHeadTokenizerConstants.XMLDeclEnd;
-				}
-				case 66 :
-					break;
-				case 53 : {
-					pushCurrentState();
-					yybegin(QuotedAttributeValue);
-					return XMLHeadTokenizerConstants.XMLDelEncoding;
-				}
-				case 67 :
-					break;
-				case 23 : {
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.StringValue;
-				}
-				case 68 :
-					break;
-				case 20 :
-				case 22 :
-				case 24 :
-				case 26 : {
-					string.append(yytext());
-				}
-				case 69 :
-					break;
-				case 19 : {
-					yybegin(SQ_STRING);
-					string.setLength(0);
-				}
-				case 70 :
-					break;
-				case 18 : {
-					yybegin(DQ_STRING);
-					string.setLength(0);
-				}
-				case 71 :
-					break;
-				case 27 : {
-					yypushback(1);
-					popState();
-					valueText = string.toString();
-					return EncodingParserConstants.UnDelimitedStringValue;
-				}
-				case 72 :
-					break;
-				default :
-					if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
-						yy_atEOF = true;
-						yy_do_eof();
-						{
-							hasMore = false;
-							return EncodingParserConstants.EOF;
-						}
-					} else {
-						yy_ScanError(YY_NO_MATCH);
-					}
-			}
-		}
-	}
+          if ( zzIsFinal ) {
+            zzAction = zzState;
+            zzMarkedPosL = zzCurrentPosL;
+            if ( zzNoLookAhead ) break zzForAction;
+          }
 
-	/**
-	 * Runs the scanner on input files.
-	 * 
-	 * This main method is the debugging routine for the scanner. It prints
-	 * each returned token to System.out until the end of file is reached, or
-	 * an error occured.
-	 * 
-	 * @param argv
-	 *            the command line, contains the filenames to run the scanner
-	 *            on.
-	 */
-	public static void main(String argv[]) {
-		for (int i = 0; i < argv.length; i++) {
-			XMLHeadTokenizer scanner = null;
-			try {
-				scanner = new XMLHeadTokenizer(new java.io.FileReader(argv[i]));
-			} catch (java.io.FileNotFoundException e) {
-				System.out.println("File not found : \"" + argv[i] + "\"");
-				System.exit(1);
-			}
-			//			catch (java.io.IOException e) {
-			//				System.out.println("Error opening file \"" + argv[i] + "\"");
-			//				System.exit(1);
-			//			}
-			catch (ArrayIndexOutOfBoundsException e) {
-				System.out.println("Usage : java XMLHeadTokenizer <inputfile>");
-				System.exit(1);
-			}
+        }
+      }
 
-			try {
-				do {
-					System.out.println(scanner.primGetNextToken());
-				} while (!scanner.yy_atEOF);
+      // store back cached position
+      zzMarkedPos = zzMarkedPosL;
 
-			} catch (java.io.IOException e) {
-				System.out.println("An I/O error occured while scanning :");
-				System.out.println(e);
-				System.exit(1);
-			} catch (Exception e) {
-				e.printStackTrace();
-				System.exit(1);
-			}
-		}
-	}
+      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+        case 10: 
+          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16BE;}
+          }
+        case 19: break;
+        case 15: 
+          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}
+          }
+        case 20: break;
+        case 4: 
+          { yybegin(SQ_STRING); string.setLength(0);
+          }
+        case 21: break;
+        case 5: 
+          { string.append( yytext() );
+          }
+        case 22: break;
+        case 1: 
+          { if (yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}
+          }
+        case 23: break;
+        case 11: 
+          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16LE;}
+          }
+        case 24: break;
+        case 6: 
+          { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
+          }
+        case 25: break;
+        case 8: 
+          { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue;
+          }
+        case 26: break;
+        case 9: 
+          { yypushback(1);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;
+          }
+        case 27: break;
+        case 7: 
+          { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;
+          }
+        case 28: break;
+        case 13: 
+          { yypushback(2); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
+          }
+        case 29: break;
+        case 16: 
+          { if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}
+          }
+        case 30: break;
+        case 2: 
+          { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);
+          }
+        case 31: break;
+        case 18: 
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;
+          }
+        case 32: break;
+        case 17: 
+          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;
+          }
+        case 33: break;
+        case 14: 
+          { yypushback(2);popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
+          }
+        case 34: break;
+        case 3: 
+          { yybegin(DQ_STRING); string.setLength(0);
+          }
+        case 35: break;
+        case 12: 
+          { yybegin(YYINITIAL); hasMore = false; return XMLHeadTokenizerConstants.XMLDeclEnd;
+          }
+        case 36: break;
+        default: 
+          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+            zzAtEOF = true;
+            zzDoEOF();
+              { hasMore = false; return EncodingParserConstants.EOF; }
+          } 
+          else {
+            zzScanError(ZZ_NO_MATCH);
+          }
+      }
+    }
+  }
 
 
 }
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizerConstants.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizerConstants.java
index ebca236..f01d500 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizerConstants.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/contenttype/XMLHeadTokenizerConstants.java
@@ -20,5 +20,5 @@
 	final String XMLDeclEnd = "XMLDeclEnd"; //$NON-NLS-1$
 	final String XMLDeclStart = "XMLDeclStart"; //$NON-NLS-1$
 	final String XMLDelEncoding = "XMLDelEncoding"; //$NON-NLS-1$
-	//	final String XMLDeclVersion = "XMLDeclVersion";
+	final String XMLDeclVersion = "XMLDeclVersion"; //$NON-NLS-1$
 }
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XML10Names.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XML10Names.java
index 1ff05a0..ec137b0 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XML10Names.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XML10Names.java
@@ -1,5 +1,7 @@
+/* The following code was generated by JFlex 1.4 on 7/5/05 1:40 AM */
+
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2004 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,195 +9,254 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
  *******************************************************************************/
-/* The following code was generated by JFlex 1.4 on 7/17/04 3:43 AM */
-
 /*nlsXXX*/
 package org.eclipse.wst.xml.core.internal.parser;
 
 
 
+
 /**
- * This class is a scanner generated by <a href="http://www.jflex.de/">JFlex
- * </a> 1.4 on 7/17/04 3:43 AM from the specification file
- * <tt>XML10Names.jflex</tt>
+ * This class is a scanner generated by 
+ * <a href="http://www.jflex.de/">JFlex</a> 1.4
+ * on 7/5/05 1:40 AM from the specification file
+ * <tt>D:/builds/Workspaces/PureHeadWTP_M7/org.eclipse.wst.xml.core/DevTimeSupport/HeadParsers/XML10Names.jFlex</tt>
  */
 public final class XML10Names {
 
-	/** This character denotes the end of file */
-	private static final int YYEOF = -1;
+  /** This character denotes the end of file */
+  private static final int YYEOF = -1;
 
-	/** initial size of the lookahead buffer */
-	private static final int ZZ_BUFFERSIZE = 2048;
+  /** initial size of the lookahead buffer */
+  private static final int ZZ_BUFFERSIZE = 2048;
 
-	/** lexical states */
-	private static final int YYINITIAL = 0;
+  /** lexical states */
+  private static final int YYINITIAL = 0;
 
-	/**
-	 * Translates characters to character classes
-	 */
-	private static final String ZZ_CMAP_PACKED = "\11\0\1\1\1\2\2\0\1\1\22\0\1\1\14\0\1\0\2\0" + "\12\0\1\3\6\0\32\3\4\0\1\3\1\0\32\3\74\0\1\0" + "\10\0\27\3\1\0\37\3\1\0\72\3\2\0\13\3\2\0\10\3" + "\1\0\65\3\1\0\104\3\11\0\44\3\3\0\2\3\4\0\36\3" + "\70\0\131\3\22\0\7\3\16\0\2\0\56\0\106\0\32\0\2\0" + "\44\0\1\3\1\0\3\3\1\0\1\3\1\0\24\3\1\0\54\3" + "\1\0\7\3\3\0\1\3\1\0\1\3\1\0\1\3\1\0\1\3" + "\1\0\22\3\15\0\14\3\1\0\102\3\1\0\14\3\1\0\44\3" + "\1\0\4\0\11\0\65\3\2\0\2\3\2\0\2\3\3\0\34\3" + "\2\0\10\3\2\0\2\3\67\0\46\3\2\0\1\3\7\0\46\3" + "\12\0\21\0\1\0\27\0\1\0\3\0\1\0\1\0\1\0\2\0" + "\1\0\1\0\13\0\33\3\5\0\3\3\56\0\32\3\5\0\1\0" + "\12\3\10\0\15\0\12\0\6\0\1\0\107\3\2\0\5\3\1\0" + "\17\3\1\0\4\3\1\0\1\3\17\0\2\3\2\0\1\0\4\0" + "\2\0\12\0\u0207\0\3\0\1\0\65\3\2\0\1\0\1\3\20\0" + "\3\0\4\0\3\0\12\3\2\0\2\0\12\0\21\0\3\0\1\0" + "\10\3\2\0\2\3\2\0\26\3\1\0\7\3\1\0\1\3\3\0" + "\4\3\2\0\1\0\1\0\7\0\2\0\2\0\2\0\3\0\11\0" + "\1\0\4\0\2\3\1\0\3\3\2\0\2\0\12\0\2\3\20\0"
-				+ "\1\0\2\0\6\3\4\0\2\3\2\0\26\3\1\0\7\3\1\0" + "\2\3\1\0\2\3\1\0\2\3\2\0\1\0\1\0\5\0\4\0" + "\2\0\2\0\3\0\13\0\4\3\1\0\1\3\7\0\12\0\2\0" + "\3\3\14\0\3\0\1\0\7\3\1\0\1\3\1\0\3\3\1\0" + "\26\3\1\0\7\3\1\0\2\3\1\0\5\3\2\0\1\0\1\3" + "\10\0\1\0\3\0\1\0\3\0\22\0\1\3\5\0\12\0\21\0" + "\3\0\1\0\10\3\2\0\2\3\2\0\26\3\1\0\7\3\1\0" + "\2\3\2\0\4\3\2\0\1\0\1\3\6\0\3\0\2\0\2\0" + "\3\0\10\0\2\0\4\0\2\3\1\0\3\3\4\0\12\0\22\0" + "\2\0\1\0\6\3\3\0\3\3\1\0\4\3\3\0\2\3\1\0" + "\1\3\1\0\2\3\3\0\2\3\3\0\3\3\3\0\10\3\1\0" + "\3\3\4\0\5\0\3\0\3\0\1\0\4\0\11\0\1\0\17\0" + "\11\0\21\0\3\0\1\0\10\3\1\0\3\3\1\0\27\3\1\0" + "\12\3\1\0\5\3\4\0\7\0\1\0\3\0\1\0\4\0\7\0" + "\2\0\11\0\2\3\4\0\12\0\22\0\2\0\1\0\10\3\1\0" + "\3\3\1\0\27\3\1\0\12\3\1\0\5\3\4\0\7\0\1\0" + "\3\0\1\0\4\0\7\0\2\0\7\0\1\3\1\0\2\3\4\0" + "\12\0\22\0\2\0\1\0\10\3\1\0\3\3\1\0\27\3\1\0" + "\20\3\4\0\6\0\2\0\3\0\1\0\4\0\11\0\1\0\10\0" + "\2\3\4\0\12\0\221\0\56\3\1\0\1\3\1\0\2\3\7\0"
-				+ "\5\0\6\3\1\0\10\0\1\0\12\0\47\0\2\3\1\0\1\3" + "\2\0\2\3\1\0\1\3\2\0\1\3\6\0\4\3\1\0\7\3" + "\1\0\3\3\1\0\1\3\1\0\1\3\2\0\2\3\1\0\2\3" + "\1\0\1\3\1\0\2\3\6\0\1\0\2\0\1\3\2\0\5\3" + "\1\0\1\0\1\0\6\0\2\0\12\0\76\0\2\0\6\0\12\0" + "\13\0\1\0\1\0\1\0\1\0\1\0\4\0\2\0\10\3\1\0" + "\41\3\7\0\24\0\1\0\6\0\4\0\6\0\1\0\1\0\1\0" + "\25\0\3\0\7\0\1\0\1\0\346\0\46\3\12\0\47\3\11\0" + "\1\3\1\0\2\3\1\0\3\3\1\0\1\3\1\0\2\3\1\0" + "\5\3\51\0\1\3\1\0\1\3\1\0\1\3\13\0\1\3\1\0" + "\1\3\1\0\1\3\3\0\2\3\3\0\1\3\5\0\3\3\1\0" + "\1\3\1\0\1\3\1\0\1\3\1\0\1\3\3\0\2\3\3\0" + "\2\3\1\0\1\3\50\0\1\3\11\0\1\3\2\0\1\3\2\0" + "\2\3\7\0\2\3\1\0\1\3\1\0\7\3\50\0\1\3\4\0" + "\1\3\10\0\1\3\u0c06\0\234\3\4\0\132\3\6\0\26\3\2\0" + "\6\3\2\0\46\3\2\0\6\3\2\0\10\3\1\0\1\3\1\0" + "\1\3\1\0\1\3\1\0\37\3\2\0\65\3\1\0\7\3\1\0" + "\1\3\3\0\3\3\1\0\7\3\3\0\4\3\2\0\6\3\4\0" + "\15\3\5\0\3\3\1\0\7\3\323\0\15\0\4\0\1\0\104\0" + "\1\3\3\0\2\3\2\0\1\3\121\0\3\3\u0e82\0\1\0\1\0"
-				+ "\1\3\31\0\11\3\6\0\1\0\5\0\13\0\124\3\4\0\2\0" + "\2\0\2\0\2\0\132\3\1\0\3\0\6\0\50\3\u1cd3\0\u51a6\3" + "\u0c5a\0\u2ba4\3\u285c\0";
+  /** 
+   * Translates characters to character classes
+   */
+  private static final String ZZ_CMAP_PACKED = 
+    "\11\0\1\1\1\2\2\0\1\1\22\0\1\1\14\0\1\0\2\0"+
+    "\12\0\1\3\6\0\32\3\4\0\1\3\1\0\32\3\74\0\1\0"+
+    "\10\0\27\3\1\0\37\3\1\0\72\3\2\0\13\3\2\0\10\3"+
+    "\1\0\65\3\1\0\104\3\11\0\44\3\3\0\2\3\4\0\36\3"+
+    "\70\0\131\3\22\0\7\3\16\0\2\0\56\0\106\0\32\0\2\0"+
+    "\44\0\1\3\1\0\3\3\1\0\1\3\1\0\24\3\1\0\54\3"+
+    "\1\0\7\3\3\0\1\3\1\0\1\3\1\0\1\3\1\0\1\3"+
+    "\1\0\22\3\15\0\14\3\1\0\102\3\1\0\14\3\1\0\44\3"+
+    "\1\0\4\0\11\0\65\3\2\0\2\3\2\0\2\3\3\0\34\3"+
+    "\2\0\10\3\2\0\2\3\67\0\46\3\2\0\1\3\7\0\46\3"+
+    "\12\0\21\0\1\0\27\0\1\0\3\0\1\0\1\0\1\0\2\0"+
+    "\1\0\1\0\13\0\33\3\5\0\3\3\56\0\32\3\5\0\1\0"+
+    "\12\3\10\0\15\0\12\0\6\0\1\0\107\3\2\0\5\3\1\0"+
+    "\17\3\1\0\4\3\1\0\1\3\17\0\2\3\2\0\1\0\4\0"+
+    "\2\0\12\0\u0207\0\3\0\1\0\65\3\2\0\1\0\1\3\20\0"+
+    "\3\0\4\0\3\0\12\3\2\0\2\0\12\0\21\0\3\0\1\0"+
+    "\10\3\2\0\2\3\2\0\26\3\1\0\7\3\1\0\1\3\3\0"+
+    "\4\3\2\0\1\0\1\0\7\0\2\0\2\0\2\0\3\0\11\0"+
+    "\1\0\4\0\2\3\1\0\3\3\2\0\2\0\12\0\2\3\20\0"+
+    "\1\0\2\0\6\3\4\0\2\3\2\0\26\3\1\0\7\3\1\0"+
+    "\2\3\1\0\2\3\1\0\2\3\2\0\1\0\1\0\5\0\4\0"+
+    "\2\0\2\0\3\0\13\0\4\3\1\0\1\3\7\0\12\0\2\0"+
+    "\3\3\14\0\3\0\1\0\7\3\1\0\1\3\1\0\3\3\1\0"+
+    "\26\3\1\0\7\3\1\0\2\3\1\0\5\3\2\0\1\0\1\3"+
+    "\10\0\1\0\3\0\1\0\3\0\22\0\1\3\5\0\12\0\21\0"+
+    "\3\0\1\0\10\3\2\0\2\3\2\0\26\3\1\0\7\3\1\0"+
+    "\2\3\2\0\4\3\2\0\1\0\1\3\6\0\3\0\2\0\2\0"+
+    "\3\0\10\0\2\0\4\0\2\3\1\0\3\3\4\0\12\0\22\0"+
+    "\2\0\1\0\6\3\3\0\3\3\1\0\4\3\3\0\2\3\1\0"+
+    "\1\3\1\0\2\3\3\0\2\3\3\0\3\3\3\0\10\3\1\0"+
+    "\3\3\4\0\5\0\3\0\3\0\1\0\4\0\11\0\1\0\17\0"+
+    "\11\0\21\0\3\0\1\0\10\3\1\0\3\3\1\0\27\3\1\0"+
+    "\12\3\1\0\5\3\4\0\7\0\1\0\3\0\1\0\4\0\7\0"+
+    "\2\0\11\0\2\3\4\0\12\0\22\0\2\0\1\0\10\3\1\0"+
+    "\3\3\1\0\27\3\1\0\12\3\1\0\5\3\4\0\7\0\1\0"+
+    "\3\0\1\0\4\0\7\0\2\0\7\0\1\3\1\0\2\3\4\0"+
+    "\12\0\22\0\2\0\1\0\10\3\1\0\3\3\1\0\27\3\1\0"+
+    "\20\3\4\0\6\0\2\0\3\0\1\0\4\0\11\0\1\0\10\0"+
+    "\2\3\4\0\12\0\221\0\56\3\1\0\1\3\1\0\2\3\7\0"+
+    "\5\0\6\3\1\0\10\0\1\0\12\0\47\0\2\3\1\0\1\3"+
+    "\2\0\2\3\1\0\1\3\2\0\1\3\6\0\4\3\1\0\7\3"+
+    "\1\0\3\3\1\0\1\3\1\0\1\3\2\0\2\3\1\0\2\3"+
+    "\1\0\1\3\1\0\2\3\6\0\1\0\2\0\1\3\2\0\5\3"+
+    "\1\0\1\0\1\0\6\0\2\0\12\0\76\0\2\0\6\0\12\0"+
+    "\13\0\1\0\1\0\1\0\1\0\1\0\4\0\2\0\10\3\1\0"+
+    "\41\3\7\0\24\0\1\0\6\0\4\0\6\0\1\0\1\0\1\0"+
+    "\25\0\3\0\7\0\1\0\1\0\346\0\46\3\12\0\47\3\11\0"+
+    "\1\3\1\0\2\3\1\0\3\3\1\0\1\3\1\0\2\3\1\0"+
+    "\5\3\51\0\1\3\1\0\1\3\1\0\1\3\13\0\1\3\1\0"+
+    "\1\3\1\0\1\3\3\0\2\3\3\0\1\3\5\0\3\3\1\0"+
+    "\1\3\1\0\1\3\1\0\1\3\1\0\1\3\3\0\2\3\3\0"+
+    "\2\3\1\0\1\3\50\0\1\3\11\0\1\3\2\0\1\3\2\0"+
+    "\2\3\7\0\2\3\1\0\1\3\1\0\7\3\50\0\1\3\4\0"+
+    "\1\3\10\0\1\3\u0c06\0\234\3\4\0\132\3\6\0\26\3\2\0"+
+    "\6\3\2\0\46\3\2\0\6\3\2\0\10\3\1\0\1\3\1\0"+
+    "\1\3\1\0\1\3\1\0\37\3\2\0\65\3\1\0\7\3\1\0"+
+    "\1\3\3\0\3\3\1\0\7\3\3\0\4\3\2\0\6\3\4\0"+
+    "\15\3\5\0\3\3\1\0\7\3\323\0\15\0\4\0\1\0\104\0"+
+    "\1\3\3\0\2\3\2\0\1\3\121\0\3\3\u0e82\0\1\0\1\0"+
+    "\1\3\31\0\11\3\6\0\1\0\5\0\13\0\124\3\4\0\2\0"+
+    "\2\0\2\0\2\0\132\3\1\0\3\0\6\0\50\3\u1cd3\0\u51a6\3"+
+    "\u0c5a\0\u2ba4\3\u285c\0";
 
-	/**
-	 * Translates characters to character classes
-	 */
-	private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+  /** 
+   * Translates characters to character classes
+   */
+  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
 
-	/**
-	 * Translates DFA states to action switch labels.
-	 */
-	private static final int[] ZZ_ACTION = zzUnpackAction();
+  /** 
+   * Translates DFA states to action switch labels.
+   */
+  private static final int [] ZZ_ACTION = zzUnpackAction();
 
-	private static final String ZZ_ACTION_PACKED_0 = "\1\0\1\1\1\2\4\1";
+  private static final String ZZ_ACTION_PACKED_0 =
+    "\1\0\1\1\1\2\4\1";
 
-	private static int[] zzUnpackAction() {
-		int[] result = new int[7];
-		int offset = 0;
-		offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-		return result;
-	}
+  private static int [] zzUnpackAction() {
+    int [] result = new int[7];
+    int offset = 0;
+    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+    return result;
+  }
 
-	private static int zzUnpackAction(String packed, int offset, int[] result) {
-		int i = 0; /* index in packed string */
-		int j = offset; /* index in unpacked array */
-		int l = packed.length();
-		while (i < l) {
-			int count = packed.charAt(i++);
-			int value = packed.charAt(i++);
-			do
-				result[j++] = value;
-			while (--count > 0);
-		}
-		return j;
-	}
+  private static int zzUnpackAction(String packed, int offset, int [] result) {
+    int i = 0;       /* index in packed string  */
+    int j = offset;  /* index in unpacked array */
+    int l = packed.length();
+    while (i < l) {
+      int count = packed.charAt(i++);
+      int value = packed.charAt(i++);
+      do result[j++] = value; while (--count > 0);
+    }
+    return j;
+  }
 
 
-	/**
-	 * Translates a state to a row index in the transition table
-	 */
-	private static final int[] ZZ_ROWMAP = zzUnpackRowMap();
+  /** 
+   * Translates a state to a row index in the transition table
+   */
+  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
-	private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\4\0\10\0\14\0\20\0\24\0\30";
+  private static final String ZZ_ROWMAP_PACKED_0 =
+    "\0\0\0\4\0\10\0\14\0\20\0\24\0\30";
 
-	private static int[] zzUnpackRowMap() {
-		int[] result = new int[7];
-		int offset = 0;
-		offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
-		return result;
-	}
+  private static int [] zzUnpackRowMap() {
+    int [] result = new int[7];
+    int offset = 0;
+    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+    return result;
+  }
 
-	private static int zzUnpackRowMap(String packed, int offset, int[] result) {
-		int i = 0; /* index in packed string */
-		int j = offset; /* index in unpacked array */
-		int l = packed.length();
-		while (i < l) {
-			int high = packed.charAt(i++) << 16;
-			result[j++] = high | packed.charAt(i++);
-		}
-		return j;
-	}
+  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
+    int i = 0;  /* index in packed string  */
+    int j = offset;  /* index in unpacked array */
+    int l = packed.length();
+    while (i < l) {
+      int high = packed.charAt(i++) << 16;
+      result[j++] = high | packed.charAt(i++);
+    }
+    return j;
+  }
 
-	/**
-	 * The transition table of the DFA
-	 */
-	private static final int ZZ_TRANS[] = {1, 1, -1, 2, -1, -1, -1, -1, 2, 3, 4, 2, 2, 3, 4, 5, -1, 4, 4, 6, 5, 5, 4, 5, 6, 6, -1, 6,};
+  /** 
+   * The transition table of the DFA
+   */
+  private static final int ZZ_TRANS [] = {
+    1, 1, -1, 2, -1, -1, -1, -1, 2, 3, 
+    4, 2, 2, 3, 4, 5, -1, 4, 4, 6, 
+    5, 5, 4, 5, 6, 6, -1, 6, 
+  };
 
-	/* error codes */
-	private static final int ZZ_UNKNOWN_ERROR = 0;
-	private static final int ZZ_NO_MATCH = 1;
-	private static final int ZZ_PUSHBACK_2BIG = 2;
+  /* error codes */
+  private static final int ZZ_UNKNOWN_ERROR = 0;
+  private static final int ZZ_NO_MATCH = 1;
+  private static final int ZZ_PUSHBACK_2BIG = 2;
 
-	/* error messages for the codes above */
-	private static final String ZZ_ERROR_MSG[] = {"Unkown internal scanner error", "Error: could not match input", "Error: pushback value was too large"};
+  /* error messages for the codes above */
+  private static final String ZZ_ERROR_MSG[] = {
+    "Unkown internal scanner error",
+    "Error: could not match input",
+    "Error: pushback value was too large"
+  };
 
-	/**
-	 * ZZ_ATTRIBUTE[aState] contains the attributes of state
-	 * <code>aState</code>
-	 */
-	private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+  /**
+   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
+   */
+  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
 
-	private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\0\1\11\5\1";
+  private static final String ZZ_ATTRIBUTE_PACKED_0 =
+    "\1\0\1\11\5\1";
 
-	private static int[] zzUnpackAttribute() {
-		int[] result = new int[7];
-		int offset = 0;
-		offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
-		return result;
-	}
+  private static int [] zzUnpackAttribute() {
+    int [] result = new int[7];
+    int offset = 0;
+    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+    return result;
+  }
 
-	private static int zzUnpackAttribute(String packed, int offset, int[] result) {
-		int i = 0; /* index in packed string */
-		int j = offset; /* index in unpacked array */
-		int l = packed.length();
-		while (i < l) {
-			int count = packed.charAt(i++);
-			int value = packed.charAt(i++);
-			do
-				result[j++] = value;
-			while (--count > 0);
-		}
-		return j;
-	}
+  private static int zzUnpackAttribute(String packed, int offset, int [] result) {
+    int i = 0;       /* index in packed string  */
+    int j = offset;  /* index in unpacked array */
+    int l = packed.length();
+    while (i < l) {
+      int count = packed.charAt(i++);
+      int value = packed.charAt(i++);
+      do result[j++] = value; while (--count > 0);
+    }
+    return j;
+  }
 
-	/** the input device */
-	private java.io.Reader zzReader;
+  /** the input device */
+  private java.io.Reader zzReader;
 
-	/** the current state of the DFA */
-	private int zzState;
+  /** the current state of the DFA */
+  private int zzState;
 
-	/** the current lexical state */
-	private int zzLexicalState = YYINITIAL;
+  /** the current lexical state */
+  private int zzLexicalState = YYINITIAL;
 
-	/**
-	 * this buffer contains the current text to be matched and is the source
-	 * of the yytext() string
-	 */
-	private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+  /** this buffer contains the current text to be matched and is
+      the source of the yytext() string */
+  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
 
-	/** the textposition at the last accepting state */
-	private int zzMarkedPos;
+  /** the textposition at the last accepting state */
+  private int zzMarkedPos;
 
-	/** the textposition at the last state to be included in yytext */
-	private int zzPushbackPos;
+  /** the textposition at the last state to be included in yytext */
+  private int zzPushbackPos;
 
-	/** the current text position in the buffer */
-	private int zzCurrentPos;
+  /** the current text position in the buffer */
+  private int zzCurrentPos;
 
-	/** startRead marks the beginning of the yytext() string in the buffer */
-	private int zzStartRead;
+  /** startRead marks the beginning of the yytext() string in the buffer */
+  private int zzStartRead;
 
-	/**
-	 * endRead marks the last character in the buffer, that has been read from
-	 * input
-	 */
-	private int zzEndRead;
+  /** endRead marks the last character in the buffer, that has been read
+      from input */
+  private int zzEndRead;
 
-	/** number of newlines encountered up to the start of the matched text */
-	 int yyline;
+  /** number of newlines encountered up to the start of the matched text */
+  private int yyline;
 
-	/** the number of characters up to the start of the matched text */
-	 int yychar;
+  /** the number of characters up to the start of the matched text */
+  private int yychar;
 
-	/**
-	 * the number of characters from the last newline up to the start of the
-	 * matched text
-	 */
-	 int yycolumn;
+  /**
+   * the number of characters from the last newline up to the start of the 
+   * matched text
+   */
+  private int yycolumn;
 
-	/**
-	 * zzAtBOL == true <=>the scanner is currently at the beginning of a line
-	 */
-	 boolean zzAtBOL = true;
+  /** 
+   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+   */
+  private boolean zzAtBOL = true;
 
-	/** zzAtEOF == true <=>the scanner is at the EOF */
-	private boolean zzAtEOF;
+  /** zzAtEOF == true <=> the scanner is at the EOF */
+  private boolean zzAtEOF;
 
-	/* user code: */
+  /* user code: */
 
 	/**
 	 * Creates a new scanner
@@ -209,7 +270,8 @@
 		yyreset(new java.io.StringReader(stringToCheck));
 		try {
 			result = isValidXML10Name();
-		} catch (java.io.IOException e) {
+		}
+		catch (java.io.IOException e) {
 			// should be impossible with strings, but if occurs, just means
 			// "not"
 			result = false;
@@ -219,323 +281,312 @@
 
 
 
-	/**
-	 * Creates a new scanner There is also a java.io.InputStream version of
-	 * this constructor.
-	 * 
-	 * @param in
-	 *            the java.io.Reader to read input from.
-	 */
-	public XML10Names(java.io.Reader in) {
-		this.zzReader = in;
-	}
+  /**
+   * Creates a new scanner
+   * There is also a java.io.InputStream version of this constructor.
+   *
+   * @param   in  the java.io.Reader to read input from.
+   */
+  public XML10Names(java.io.Reader in) {
+    this.zzReader = in;
+  }
 
-	/**
-	 * Creates a new scanner. There is also java.io.Reader version of this
-	 * constructor.
-	 * 
-	 * @param in
-	 *            the java.io.Inputstream to read input from.
-	 */
-	public XML10Names(java.io.InputStream in) {
-		this(new java.io.InputStreamReader(in));
-	}
+  /**
+   * Creates a new scanner.
+   * There is also java.io.Reader version of this constructor.
+   *
+   * @param   in  the java.io.Inputstream to read input from.
+   */
+  public XML10Names(java.io.InputStream in) {
+    this(new java.io.InputStreamReader(in));
+  }
 
-	/**
-	 * Unpacks the compressed character translation table.
-	 * 
-	 * @param packed
-	 *            the packed character translation table
-	 * @return the unpacked character translation table
-	 */
-	private static char[] zzUnpackCMap(String packed) {
-		char[] map = new char[0x10000];
-		int i = 0; /* index in packed string */
-		int j = 0; /* index in unpacked array */
-		while (i < 1226) {
-			int count = packed.charAt(i++);
-			char value = packed.charAt(i++);
-			do
-				map[j++] = value;
-			while (--count > 0);
-		}
-		return map;
-	}
+  /** 
+   * Unpacks the compressed character translation table.
+   *
+   * @param packed   the packed character translation table
+   * @return         the unpacked character translation table
+   */
+  private static char [] zzUnpackCMap(String packed) {
+    char [] map = new char[0x10000];
+    int i = 0;  /* index in packed string  */
+    int j = 0;  /* index in unpacked array */
+    while (i < 1226) {
+      int  count = packed.charAt(i++);
+      char value = packed.charAt(i++);
+      do map[j++] = value; while (--count > 0);
+    }
+    return map;
+  }
 
 
-	/**
-	 * Refills the input buffer.
-	 * 
-	 * @return <code>false</code>, iff there was new input.
-	 * 
-	 * @exception java.io.IOException
-	 *                if any I/O-Error occurs
-	 */
-	private boolean zzRefill() throws java.io.IOException {
+  /**
+   * Refills the input buffer.
+   *
+   * @return      <code>false</code>, iff there was new input.
+   * 
+   * @exception   java.io.IOException  if any I/O-Error occurs
+   */
+  private boolean zzRefill() throws java.io.IOException {
 
-		/* first: make room (if you can) */
-		if (zzStartRead > 0) {
-			System.arraycopy(zzBuffer, zzStartRead, zzBuffer, 0, zzEndRead - zzStartRead);
+    /* first: make room (if you can) */
+    if (zzStartRead > 0) {
+      System.arraycopy(zzBuffer, zzStartRead,
+                       zzBuffer, 0,
+                       zzEndRead-zzStartRead);
 
-			/* translate stored positions */
-			zzEndRead -= zzStartRead;
-			zzCurrentPos -= zzStartRead;
-			zzMarkedPos -= zzStartRead;
-			zzPushbackPos -= zzStartRead;
-			zzStartRead = 0;
-		}
+      /* translate stored positions */
+      zzEndRead-= zzStartRead;
+      zzCurrentPos-= zzStartRead;
+      zzMarkedPos-= zzStartRead;
+      zzPushbackPos-= zzStartRead;
+      zzStartRead = 0;
+    }
 
-		/* is the buffer big enough? */
-		if (zzCurrentPos >= zzBuffer.length) {
-			/* if not: blow it up */
-			char newBuffer[] = new char[zzCurrentPos * 2];
-			System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-			zzBuffer = newBuffer;
-		}
+    /* is the buffer big enough? */
+    if (zzCurrentPos >= zzBuffer.length) {
+      /* if not: blow it up */
+      char newBuffer[] = new char[zzCurrentPos*2];
+      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+      zzBuffer = newBuffer;
+    }
 
-		/* finally: fill the buffer with new input */
-		int numRead = zzReader.read(zzBuffer, zzEndRead, zzBuffer.length - zzEndRead);
+    /* finally: fill the buffer with new input */
+    int numRead = zzReader.read(zzBuffer, zzEndRead,
+                                            zzBuffer.length-zzEndRead);
 
-		if (numRead < 0) {
-			return true;
-		} else {
-			zzEndRead += numRead;
-			return false;
-		}
-	}
+    if (numRead < 0) {
+      return true;
+    }
+    else {
+      zzEndRead+= numRead;
+      return false;
+    }
+  }
+
+    
+  /**
+   * Closes the input stream.
+   */
+  private final void yyclose() throws java.io.IOException {
+    zzAtEOF = true;            /* indicate end of file */
+    zzEndRead = zzStartRead;  /* invalidate buffer    */
+
+    if (zzReader != null)
+      zzReader.close();
+  }
 
 
-	/**
-	 * Closes the input stream.
-	 */
-	 final void yyclose() throws java.io.IOException {
-		zzAtEOF = true; /* indicate end of file */
-		zzEndRead = zzStartRead; /* invalidate buffer */
-
-		if (zzReader != null)
-			zzReader.close();
-	}
+  /**
+   * Resets the scanner to read from a new input stream.
+   * Does not close the old reader.
+   *
+   * All internal variables are reset, the old input stream 
+   * <b>cannot</b> be reused (internal buffer is discarded and lost).
+   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+   *
+   * @param reader   the new input stream 
+   */
+  private final void yyreset(java.io.Reader reader) {
+    zzReader = reader;
+    zzAtBOL  = true;
+    zzAtEOF  = false;
+    zzEndRead = zzStartRead = 0;
+    zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
+    yyline = yychar = yycolumn = 0;
+    zzLexicalState = YYINITIAL;
+  }
 
 
-	/**
-	 * Resets the scanner to read from a new input stream. Does not close the
-	 * old reader.
-	 * 
-	 * All internal variables are reset, the old input stream <b>cannot </b>
-	 * be reused (internal buffer is discarded and lost). Lexical state is set
-	 * to <tt>ZZ_INITIAL</tt>.
-	 * 
-	 * @param reader
-	 *            the new input stream
-	 */
-	private final void yyreset(java.io.Reader reader) {
-		zzReader = reader;
-		//zzAtBOL = true;
-		zzAtEOF = false;
-		zzEndRead = zzStartRead = 0;
-		zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
-		yyline = yychar = yycolumn = 0;
-		zzLexicalState = YYINITIAL;
-	}
+  /**
+   * Returns the current lexical state.
+   */
+  private final int yystate() {
+    return zzLexicalState;
+  }
 
 
-	/**
-	 * Returns the current lexical state.
-	 */
-	 final int yystate() {
-		return zzLexicalState;
-	}
+  /**
+   * Enters a new lexical state
+   *
+   * @param newState the new lexical state
+   */
+  private final void yybegin(int newState) {
+    zzLexicalState = newState;
+  }
 
 
-	/**
-	 * Enters a new lexical state
-	 * 
-	 * @param newState
-	 *            the new lexical state
-	 */
-	 final void yybegin(int newState) {
-		zzLexicalState = newState;
-	}
+  /**
+   * Returns the text matched by the current regular expression.
+   */
+  private final String yytext() {
+    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
+  }
 
 
-	/**
-	 * Returns the text matched by the current regular expression.
-	 */
-	 final String yytext() {
-		return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
-	}
+  /**
+   * Returns the character at position <tt>pos</tt> from the 
+   * matched text. 
+   * 
+   * It is equivalent to yytext().charAt(pos), but faster
+   *
+   * @param pos the position of the character to fetch. 
+   *            A value from 0 to yylength()-1.
+   *
+   * @return the character at position pos
+   */
+  private final char yycharat(int pos) {
+    return zzBuffer[zzStartRead+pos];
+  }
 
 
-	/**
-	 * Returns the character at position <tt>pos</tt> from the matched text.
-	 * 
-	 * It is equivalent to yytext().charAt(pos), but faster
-	 * 
-	 * @param pos
-	 *            the position of the character to fetch. A value from 0 to
-	 *            yylength()-1.
-	 * 
-	 * @return the character at position pos
-	 */
-	 final char yycharat(int pos) {
-		return zzBuffer[zzStartRead + pos];
-	}
+  /**
+   * Returns the length of the matched text region.
+   */
+  private final int yylength() {
+    return zzMarkedPos-zzStartRead;
+  }
 
 
-	/**
-	 * Returns the length of the matched text region.
-	 */
-	private final int yylength() {
-		return zzMarkedPos - zzStartRead;
-	}
+  /**
+   * Reports an error that occured while scanning.
+   *
+   * In a wellformed scanner (no or only correct usage of 
+   * yypushback(int) and a match-all fallback rule) this method 
+   * will only be called with things that "Can't Possibly Happen".
+   * If this method is called, something is seriously wrong
+   * (e.g. a JFlex bug producing a faulty scanner etc.).
+   *
+   * Usual syntax/scanner level error handling should be done
+   * in error fallback rules.
+   *
+   * @param   errorCode  the code of the errormessage to display
+   */
+  private void zzScanError(int errorCode) {
+    String message;
+    try {
+      message = ZZ_ERROR_MSG[errorCode];
+    }
+    catch (ArrayIndexOutOfBoundsException e) {
+      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+    }
+
+    throw new Error(message);
+  } 
 
 
-	/**
-	 * Reports an error that occured while scanning.
-	 * 
-	 * In a wellformed scanner (no or only correct usage of yypushback(int)
-	 * and a match-all fallback rule) this method will only be called with
-	 * things that "Can't Possibly Happen". If this method is called,
-	 * something is seriously wrong (e.g. a JFlex bug producing a faulty
-	 * scanner etc.).
-	 * 
-	 * Usual syntax/scanner level error handling should be done in error
-	 * fallback rules.
-	 * 
-	 * @param errorCode
-	 *            the code of the errormessage to display
-	 */
-	private void zzScanError(int errorCode) {
-		String message;
-		try {
-			message = ZZ_ERROR_MSG[errorCode];
-		} catch (ArrayIndexOutOfBoundsException e) {
-			message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-		}
+  /**
+   * Pushes the specified amount of characters back into the input stream.
+   *
+   * They will be read again by then next call of the scanning method
+   *
+   * @param number  the number of characters to be read again.
+   *                This number must not be greater than yylength()!
+   */
+  private void yypushback(int number)  {
+    if ( number > yylength() )
+      zzScanError(ZZ_PUSHBACK_2BIG);
 
-		throw new Error(message);
-	}
+    zzMarkedPos -= number;
+  }
 
 
-	/**
-	 * Pushes the specified amount of characters back into the input stream.
-	 * 
-	 * They will be read again by then next call of the scanning method
-	 * 
-	 * @param number
-	 *            the number of characters to be read again. This number must
-	 *            not be greater than yylength()!
-	 */
-	 void yypushback(int number) {
-		if (number > yylength())
-			zzScanError(ZZ_PUSHBACK_2BIG);
+  /**
+   * Resumes scanning until the next regular expression is matched,
+   * the end of input is encountered or an I/O-Error occurs.
+   *
+   * @return      the next token
+   * @exception   java.io.IOException  if any I/O-Error occurs
+   */
+  private boolean isValidXML10Name() throws java.io.IOException {
+    int zzInput;
+    int zzAction;
 
-		zzMarkedPos -= number;
-	}
+    // cached fields:
+    int zzCurrentPosL;
+    int zzMarkedPosL;
+    int zzEndReadL = zzEndRead;
+    char [] zzBufferL = zzBuffer;
+    char [] zzCMapL = ZZ_CMAP;
+
+    int [] zzTransL = ZZ_TRANS;
+    int [] zzRowMapL = ZZ_ROWMAP;
+    int [] zzAttrL = ZZ_ATTRIBUTE;
+
+    while (true) {
+      zzMarkedPosL = zzMarkedPos;
+
+      zzAction = -1;
+
+      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+  
+      zzState = zzLexicalState;
 
 
-	/**
-	 * Resumes scanning until the next regular expression is matched, the end
-	 * of input is encountered or an I/O-Error occurs.
-	 * 
-	 * @return the next token
-	 * @exception java.io.IOException
-	 *                if any I/O-Error occurs
-	 */
-	private boolean isValidXML10Name() throws java.io.IOException {
-		int zzInput;
-		int zzAction;
+      zzForAction: {
+        while (true) {
+    
+          if (zzCurrentPosL < zzEndReadL)
+            zzInput = zzBufferL[zzCurrentPosL++];
+          else if (zzAtEOF) {
+            zzInput = YYEOF;
+            break zzForAction;
+          }
+          else {
+            // store back cached positions
+            zzCurrentPos  = zzCurrentPosL;
+            zzMarkedPos   = zzMarkedPosL;
+            boolean eof = zzRefill();
+            // get translated positions and possibly new buffer
+            zzCurrentPosL  = zzCurrentPos;
+            zzMarkedPosL   = zzMarkedPos;
+            zzBufferL      = zzBuffer;
+            zzEndReadL     = zzEndRead;
+            if (eof) {
+              zzInput = YYEOF;
+              break zzForAction;
+            }
+            else {
+              zzInput = zzBufferL[zzCurrentPosL++];
+            }
+          }
+          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
+          if (zzNext == -1) break zzForAction;
+          zzState = zzNext;
 
-		// cached fields:
-		int zzCurrentPosL;
-		int zzMarkedPosL;
-		int zzEndReadL = zzEndRead;
-		char[] zzBufferL = zzBuffer;
-		char[] zzCMapL = ZZ_CMAP;
+          int zzAttributes = zzAttrL[zzState];
+          if ( (zzAttributes & 1) == 1 ) {
+            zzAction = zzState;
+            zzMarkedPosL = zzCurrentPosL;
+            if ( (zzAttributes & 8) == 8 ) break zzForAction;
+          }
 
-		int[] zzTransL = ZZ_TRANS;
-		int[] zzRowMapL = ZZ_ROWMAP;
-		int[] zzAttrL = ZZ_ATTRIBUTE;
+        }
+      }
 
-		while (true) {
-			zzMarkedPosL = zzMarkedPos;
+      // store back cached position
+      zzMarkedPos = zzMarkedPosL;
 
-			zzAction = -1;
-
-			zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
-			zzState = zzLexicalState;
-
-
-			zzForAction : {
-				while (true) {
-
-					if (zzCurrentPosL < zzEndReadL)
-						zzInput = zzBufferL[zzCurrentPosL++];
-					else if (zzAtEOF) {
-						zzInput = YYEOF;
-						break zzForAction;
-					} else {
-						// store back cached positions
-						zzCurrentPos = zzCurrentPosL;
-						zzMarkedPos = zzMarkedPosL;
-						boolean eof = zzRefill();
-						// get translated positions and possibly new buffer
-						zzCurrentPosL = zzCurrentPos;
-						zzMarkedPosL = zzMarkedPos;
-						zzBufferL = zzBuffer;
-						zzEndReadL = zzEndRead;
-						if (eof) {
-							zzInput = YYEOF;
-							break zzForAction;
-						} else {
-							zzInput = zzBufferL[zzCurrentPosL++];
-						}
-					}
-					int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
-					if (zzNext == -1)
-						break zzForAction;
-					zzState = zzNext;
-
-					int zzAttributes = zzAttrL[zzState];
-					if ((zzAttributes & 1) == 1) {
-						zzAction = zzState;
-						zzMarkedPosL = zzCurrentPosL;
-						if ((zzAttributes & 8) == 8)
-							break zzForAction;
-					}
-
-				}
-			}
-
-			// store back cached position
-			zzMarkedPos = zzMarkedPosL;
-
-			switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-				case 1 : {
-					return false;
-				}
-				case 3 :
-					break;
-				case 2 : {
-					return true;
-				}
-				case 4 :
-					break;
-				default :
-					if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-						zzAtEOF = true;
-						{
-							{
-								return false;
-							}
-						}
-					} else {
-						zzScanError(ZZ_NO_MATCH);
-					}
-			}
-		}
-	}
+      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+        case 1: 
+          { return false;
+          }
+        case 3: break;
+        case 2: 
+          { return true;
+          }
+        case 4: break;
+        default: 
+          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+            zzAtEOF = true;
+              { {return false;} }
+          } 
+          else {
+            zzScanError(ZZ_NO_MATCH);
+          }
+      }
+    }
+  }
 
 
 }