]> source.dussan.org Git - vaadin-framework.git/commitdiff
Sass, the handling of selectors containing multiple #-symbols (#12832)
authorMika Murtojarvi <mika@vaadin.com>
Tue, 5 Nov 2013 09:20:21 +0000 (11:20 +0200)
committerVaadin Code Review <review@vaadin.com>
Wed, 6 Nov 2013 11:24:24 +0000 (11:24 +0000)
After the first commit, a test case has been downloaded and added to
w3ctests. The indentation of a production was also changed in an
attempt to more clearly express its meaning.

Change-Id: I32356d1fcbafada982a5d3e22f0821e554cc6c8a

theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java
theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java
theme-compiler/tests/resources/w3ctests/scss/css3-modsel-15b.0.scss [new file with mode: 0644]
theme-compiler/tests/src/com/vaadin/sass/testcases/scss/W3ConformanceTests.java

index d7662d35a8b0fff6359a42e19e8fe07b8e711e51..021c1d2fd896d427144b0e1df58ae6e0960b030f 100644 (file)
 /* Generated By:JavaCC: Do not edit this line. Parser.java */
 package com.vaadin.sass.internal.parser;
 
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.URL;
+import java.io.*;
+import java.net.*;
 import java.util.ArrayList;
 import java.util.Locale;
+import java.util.Map;
 import java.util.UUID;
 
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.CSSParseException;
 import org.w3c.css.sac.ConditionFactory;
+import org.w3c.css.sac.Condition;
+import org.w3c.css.sac.SelectorFactory;
+import org.w3c.css.sac.SelectorList;
+import org.w3c.css.sac.Selector;
+import org.w3c.css.sac.SimpleSelector;
 import org.w3c.css.sac.DocumentHandler;
-import org.w3c.css.sac.ErrorHandler;
 import org.w3c.css.sac.InputSource;
-import org.w3c.css.sac.LexicalUnit;
+import org.w3c.css.sac.ErrorHandler;
+import org.w3c.css.sac.CSSException;
+import org.w3c.css.sac.CSSParseException;
 import org.w3c.css.sac.Locator;
-import org.w3c.css.sac.SelectorFactory;
-import org.w3c.css.sac.SelectorList;
-import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
+import org.w3c.css.sac.LexicalUnit;
+
 import org.w3c.flute.parser.selectors.SelectorFactoryImpl;
+import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
+
 import org.w3c.flute.util.Encoding;
 
-import com.vaadin.sass.internal.handler.SCSSDocumentHandlerImpl;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.VariableNode;
+import com.vaadin.sass.internal.handler.*;
+
+import com.vaadin.sass.internal.tree.*;
 
 /**
  * A CSS2 parser
- * 
+ *
  * @author Philippe Le H�garet
  * @version $Revision: 1.15 $
  */
@@ -78,32 +79,27 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
 
     /**
      * @@TODO
-     * @exception CSSException
-     *                Not yet implemented
+     * @exception CSSException Not yet implemented
      */
-    @Override
     public void setLocale(Locale locale) throws CSSException {
         throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
     }
 
-    public InputSource getInputSource() {
+    public InputSource getInputSource(){
         return source;
     }
 
     /**
      * Set the document handler for this parser
      */
-    @Override
     public void setDocumentHandler(DocumentHandler handler) {
-        documentHandler = (SCSSDocumentHandlerImpl) handler;
+        this.documentHandler = (SCSSDocumentHandlerImpl) handler;
     }
 
-    @Override
     public void setSelectorFactory(SelectorFactory selectorFactory) {
         this.selectorFactory = selectorFactory;
     }
 
-    @Override
     public void setConditionFactory(ConditionFactory conditionFactory) {
         this.conditionFactory = conditionFactory;
     }
@@ -111,24 +107,19 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     /**
      * Set the error handler for this parser
      */
-    @Override
     public void setErrorHandler(ErrorHandler error) {
-        errorHandler = error;
+        this.errorHandler = error;
     }
 
     /**
      * Main parse methods
-     * 
-     * @param source
-     *            the source of the style sheet.
-     * @exception IOException
-     *                the source can't be parsed.
-     * @exception CSSException
-     *                the source is not CSS valid.
+     *
+     * @param source the source of the style sheet.
+     * @exception IOException the source can't be parsed.
+     * @exception CSSException the source is not CSS valid.
      */
-    @Override
-    public void parseStyleSheet(InputSource source) throws CSSException,
-            IOException {
+    public void parseStyleSheet(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
         if (selectorFactory == null) {
@@ -143,34 +134,26 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
 
     /**
      * Convenient method for URIs.
-     * 
-     * @param systemId
-     *            the fully resolved URI of the style sheet.
-     * @exception IOException
-     *                the source can't be parsed.
-     * @exception CSSException
-     *                the source is not CSS valid.
+     *
+     * @param systemId the fully resolved URI of the style sheet.
+     * @exception IOException the source can't be parsed.
+     * @exception CSSException the source is not CSS valid.
      */
-    @Override
-    public void parseStyleSheet(String systemId) throws CSSException,
-            IOException {
+    public void parseStyleSheet(String systemId)
+            throws CSSException, IOException {
         parseStyleSheet(new InputSource(systemId));
     }
 
     /**
-     * This method parses only one rule (style rule or at-rule, except
-     * @charset).
-     * 
-     * @param source
-     *            the source of the rule.
-     * @exception IOException
-     *                the source can't be parsed.
-     * @exception CSSException
-     *                the source is not CSS valid.
+     * This method parses only one rule (style rule or at-rule, except @charset).
+     *
+     * @param source the source of the rule.
+     * @exception IOException the source can't be parsed.
+     * @exception CSSException the source is not CSS valid.
      */
     // TODO required by original parser but not used by Vaadin?
-    @Override
-    public void parseRule(InputSource source) throws CSSException, IOException {
+    public void parseRule(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
 
@@ -186,17 +169,13 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     /**
      * This method parses a style declaration (including the surrounding curly
      * braces).
-     * 
-     * @param source
-     *            the source of the style declaration.
-     * @exception IOException
-     *                the source can't be parsed.
-     * @exception CSSException
-     *                the source is not CSS valid.
+     *
+     * @param source the source of the style declaration.
+     * @exception IOException the source can't be parsed.
+     * @exception CSSException the source is not CSS valid.
      */
-    @Override
-    public void parseStyleDeclaration(InputSource source) throws CSSException,
-            IOException {
+    public void parseStyleDeclaration(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
 
@@ -211,10 +190,8 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
 
     /**
      * This methods returns "http://www.w3.org/TR/REC-CSS2".
-     * 
      * @return the string "http://www.w3.org/TR/REC-CSS2".
      */
-    @Override
     public String getParserVersion() {
         return "http://www.w3.org/TR/REC-CSS2";
     }
@@ -222,8 +199,8 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     /**
      * Parse methods used by DOM Level 2 implementation.
      */
-    public void parseImportRule(InputSource source) throws CSSException,
-            IOException {
+    public void parseImportRule(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
 
@@ -236,8 +213,8 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         _parseImportRule();
     }
 
-    public void parseMediaRule(InputSource source) throws CSSException,
-            IOException {
+    public void parseMediaRule(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
 
@@ -250,16 +227,14 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         _parseMediaRule();
     }
 
-    @Override
-    public SelectorList parseSelectors(InputSource source) throws CSSException,
-            IOException {
+    public SelectorList parseSelectors(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
 
         return null;
     }
 
-    @Override
     public LexicalUnit parsePropertyValue(InputSource source)
             throws CSSException, IOException {
         this.source = source;
@@ -268,9 +243,8 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         return expr();
     }
 
-    @Override
-    public boolean parsePriority(InputSource source) throws CSSException,
-            IOException {
+    public boolean parsePriority(InputSource source)
+            throws CSSException, IOException {
         this.source = source;
         ReInit(getCharStreamWithLurk(source));
 
@@ -278,8 +252,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     }
 
     /**
-     * Convert the source into a Reader. Used only by DOM Level 2 parser
-     * methods.
+     * Convert the source into a Reader. Used only by DOM Level 2 parser methods.
      */
     private Reader getReader(InputSource source) throws IOException {
         if (source.getCharacterStream() != null) {
@@ -291,7 +264,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
                 return new InputStreamReader(source.getByteStream(), "ASCII");
             } else {
                 return new InputStreamReader(source.getByteStream(),
-                        source.getEncoding());
+                                             source.getEncoding());
             }
         } else {
             // systemId
@@ -301,10 +274,11 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     }
 
     /**
-     * Convert the source into a CharStream with encoding informations. The
-     * encoding can be found in the InputSource or in the CSS document. Since
-     * this method marks the reader and make a reset after looking for the
-     * charset declaration, you'll find the charset declaration into the stream.
+     * Convert the source into a CharStream with encoding informations.
+     * The encoding can be found in the InputSource or in the CSS document.
+     * Since this method marks the reader and make a reset after looking for
+     * the charset declaration, you'll find the charset declaration into the
+     * stream.  
      */
     private CharStream getCharStreamWithLurk(InputSource source)
             throws CSSException, IOException {
@@ -324,7 +298,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
                 }
             }
         }
-        // use UTF-8 as the default encoding.
+        //use UTF-8 as the default encoding.
         String encoding = source.getEncoding();
         InputStream input = source.getByteStream();
         if (!input.markSupported()) {
@@ -334,7 +308,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         }
         // Mark either the original stream or the wrapped stream
         input.mark(100);
-        if (encoding == null) {
+        if(encoding == null){
             encoding = "ASCII";
 
             char c = ' ';
@@ -343,15 +317,14 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
 
             if (c == '@') {
                 // hum, is it a charset ?
-                int size = 100;
+                int size   = 100;
                 byte[] buf = new byte[size];
                 input.read(buf, 0, 7);
                 String keyword = new String(buf, 0, 7);
                 if (keyword.equals("charset")) {
                     // Yes, this is the charset declaration !
 
-                    // here I don't use the right declaration : white space are
-                    // ' '.
+                    // here I don't use the right declaration : white space are ' '.
                     while ((c = (char) input.read()) == ' ') {
                         // find the first quote
                     }
@@ -378,17 +351,15 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
                     if (c != ';') {
                         // no semi colon at the end ?
                         throw new CSSException("invalid charset declaration: "
-                                + "missing semi colon");
+                                           + "missing semi colon");
                     }
                     encoding = new String(buf, 0, i);
                     if (source.getEncoding() != null) {
                         // compare the two encoding informations.
-                        // For example, I don't accept to have ASCII and after
-                        // UTF-8.
+                        // For example, I don't accept to have ASCII and after UTF-8.
                         // Is it really good ? That is the question.
                         if (!encoding.equals(source.getEncoding())) {
-                            throw new CSSException(
-                                    "invalid encoding information.");
+                            throw new CSSException("invalid encoding information.");
                         }
                     }
                 } // else no charset declaration available
@@ -398,7 +369,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         source.setEncoding(encoding);
         // set the real reader of this source.
         source.setCharacterStream(new InputStreamReader(source.getByteStream(),
-                Encoding.getJavaEncoding(encoding)));
+                                             Encoding.getJavaEncoding(encoding)));
         // reset the stream (leave the charset declaration in the stream).
         input.reset();
 
@@ -406,7 +377,6 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     }
 
     private LocatorImpl currentLocator;
-
     private Locator getLocator() {
         if (currentLocator == null) {
             currentLocator = new LocatorImpl(this);
@@ -414,7 +384,6 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         }
         return currentLocator.reInit(this);
     }
-
     private LocatorImpl getLocator(Token save) {
         if (currentLocator == null) {
             currentLocator = new LocatorImpl(this, save);
@@ -431,8 +400,8 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
                 if (pe.specialConstructor) {
                     StringBuffer errorM = new StringBuffer();
                     if (pe.currentToken != null) {
-                        errorM.append("encountered \u005c"").append(
-                                pe.currentToken.next);
+                        errorM.append("encountered \u005c"")
+                            .append(pe.currentToken.next);
                     }
                     errorM.append('"');
                     if (pe.expectedTokenSequences.length != 0) {
@@ -448,10 +417,10 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
                         }
                     }
                     errorHandler.error(new CSSParseException(errorM.toString(),
-                            l, e));
+                                                             l, e));
                 } else {
-                    errorHandler.error(new CSSParseException(e.getMessage(), l,
-                            e));
+                    errorHandler.error(new CSSParseException(e.getMessage(),
+                                                             l, e));
                 }
             } else if (e == null) {
                 errorHandler.error(new CSSParseException("error", l, null));
@@ -462,8242 +431,7148 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
     }
 
     private void reportWarningSkipText(Locator l, String text) {
-        if (errorHandler != null && text != null) {
+        if (errorHandler != null && text  != null) {
             errorHandler.warning(new CSSParseException("Skipping: " + text, l));
         }
     }
 
-    /*
    * The grammar of CSS2
    */
+/*
+ * The grammar of CSS2
+ */
 
-    /**
-     * The main entry for the parser.
-     * 
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void parserUnit() throws ParseException {
-        try {
-            documentHandler.startDocument(source);
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case CHARSET_SYM:
-                charset();
-                break;
-            default:
-                jj_la1[0] = jj_gen;
-                ;
-            }
-            label_1: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                case CDO:
-                case CDC:
-                case ATKEYWORD:
-                    ;
-                    break;
-                default:
-                    jj_la1[1] = jj_gen;
-                    break label_1;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    jj_consume_token(S);
-                    comments();
-                    break;
-                case CDO:
-                case CDC:
-                case ATKEYWORD:
-                    ignoreStatement();
-                    break;
-                default:
-                    jj_la1[2] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            label_2: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case IMPORT_SYM:
-                    ;
-                    break;
-                default:
-                    jj_la1[3] = jj_gen;
-                    break label_2;
-                }
-                importDeclaration();
-                label_3: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case CDO:
-                    case CDC:
-                    case ATKEYWORD:
-                        ;
-                        break;
-                    default:
-                        jj_la1[4] = jj_gen;
-                        break label_3;
-                    }
-                    ignoreStatement();
-                    label_4: while (true) {
-                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                        case S:
-                            ;
-                            break;
-                        default:
-                            jj_la1[5] = jj_gen;
-                            break label_4;
-                        }
-                        jj_consume_token(S);
-                    }
-                }
-            }
-            afterImportDeclaration();
-            jj_consume_token(0);
-        } finally {
-            documentHandler.endDocument(source);
+/**
+ * The main entry for the parser.
+ *
+ * @exception ParseException exception during the parse
+ */
+  final public void parserUnit() throws ParseException {
+    try {
+          documentHandler.startDocument(source);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case CHARSET_SYM:
+        charset();
+        break;
+      default:
+        jj_la1[0] = jj_gen;
+        ;
+      }
+      label_1:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+        case CDO:
+        case CDC:
+        case ATKEYWORD:
+          ;
+          break;
+        default:
+          jj_la1[1] = jj_gen;
+          break label_1;
         }
-    }
-
-    final public void charset() throws ParseException {
-        Token n;
-        try {
-            jj_consume_token(CHARSET_SYM);
-            label_5: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[6] = jj_gen;
-                    break label_5;
-                }
-                jj_consume_token(S);
-            }
-            n = jj_consume_token(STRING);
-            label_6: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[7] = jj_gen;
-                    break label_6;
-                }
-                jj_consume_token(S);
-            }
-            jj_consume_token(SEMICOLON);
-        } catch (ParseException e) {
-            reportError(getLocator(e.currentToken.next), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
-
-        } catch (Exception e) {
-            reportError(getLocator(), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
-
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          jj_consume_token(S);
+          comments();
+          break;
+        case CDO:
+        case CDC:
+        case ATKEYWORD:
+          ignoreStatement();
+          break;
+        default:
+          jj_la1[2] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+      label_2:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IMPORT_SYM:
+          ;
+          break;
+        default:
+          jj_la1[3] = jj_gen;
+          break label_2;
         }
-    }
-
-    final public void afterImportDeclaration() throws ParseException {
-        String ret;
-        Locator l;
-        label_7: while (true) {
+        importDeclaration();
+        label_3:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case CDO:
+          case CDC:
+          case ATKEYWORD:
             ;
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case DEBUG_SYM:
-            case WARN_SYM:
-                debuggingDirective();
-                break;
-            case MIXIN_SYM:
-                mixinDirective();
-                break;
-            case EACH_SYM:
-            case IF_SYM:
-                controlDirective();
-                break;
-            case INCLUDE_SYM:
-                includeDirective();
-                break;
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case IDENT:
-            case HASH:
-                styleRule();
-                break;
-            case MEDIA_SYM:
-                media();
-                break;
-            case PAGE_SYM:
-                page();
-                break;
-            case FONT_FACE_SYM:
-                fontFace();
-                break;
-            case KEY_FRAME_SYM:
-                keyframes();
-                break;
+            break;
+          default:
+            jj_la1[4] = jj_gen;
+            break label_3;
+          }
+          ignoreStatement();
+          label_4:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
             default:
-                jj_la1[8] = jj_gen;
-                if (jj_2_1(2147483647)) {
-                    variable();
-                } else {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case VARIABLE:
-                        listModifyDirective();
-                        break;
-                    default:
-                        jj_la1[9] = jj_gen;
-                        l = getLocator();
-                        ret = skipStatement();
-                        if ((ret == null) || (ret.length() == 0)) {
-                            {
-                                if (true) {
-                                    return;
-                                }
-                            }
-                        }
-                        if (ret.charAt(0) == '@') {
-                            documentHandler.unrecognizedRule(ret);
-                        } else {
-                            reportWarningSkipText(l, ret);
-                        }
-                    }
-                }
-            }
-            label_8: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case CDO:
-                case CDC:
-                case ATKEYWORD:
-                    ;
-                    break;
-                default:
-                    jj_la1[10] = jj_gen;
-                    break label_8;
-                }
-                ignoreStatement();
-                label_9: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[11] = jj_gen;
-                        break label_9;
-                    }
-                    jj_consume_token(S);
-                }
+              jj_la1[5] = jj_gen;
+              break label_4;
             }
-        }
-    }
-
-    final public void ignoreStatement() throws ParseException {
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case CDO:
-            jj_consume_token(CDO);
+            jj_consume_token(S);
+          }
+        }
+      }
+      afterImportDeclaration();
+      jj_consume_token(0);
+    } finally {
+        documentHandler.endDocument(source);
+    }
+  }
+
+  final public void charset() throws ParseException {
+  Token n;
+    try {
+      jj_consume_token(CHARSET_SYM);
+      label_5:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[6] = jj_gen;
+          break label_5;
+        }
+        jj_consume_token(S);
+      }
+      n = jj_consume_token(STRING);
+      label_6:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[7] = jj_gen;
+          break label_6;
+        }
+        jj_consume_token(S);
+      }
+      jj_consume_token(SEMICOLON);
+    } catch (ParseException e) {
+        reportError(getLocator(e.currentToken.next), e);
+        skipStatement();
+        // reportWarningSkipText(getLocator(), skipStatement());
+
+    } catch (Exception e) {
+        reportError(getLocator(), e);
+        skipStatement();
+        // reportWarningSkipText(getLocator(), skipStatement());
+
+    }
+  }
+
+  final public void afterImportDeclaration() throws ParseException {
+ String ret;
+ Locator l;
+    label_7:
+    while (true) {
+      ;
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DEBUG_SYM:
+      case WARN_SYM:
+        debuggingDirective();
+        break;
+      case MIXIN_SYM:
+        mixinDirective();
+        break;
+      case EACH_SYM:
+      case IF_SYM:
+        controlDirective();
+        break;
+      case INCLUDE_SYM:
+        includeDirective();
+        break;
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case IDENT:
+      case HASH:
+        styleRule();
+        break;
+      case MEDIA_SYM:
+        media();
+        break;
+      case PAGE_SYM:
+        page();
+        break;
+      case FONT_FACE_SYM:
+        fontFace();
+        break;
+      case KEY_FRAME_SYM:
+        keyframes();
+        break;
+      default:
+        jj_la1[8] = jj_gen;
+        if (jj_2_1(2147483647)) {
+          variable();
+        } else {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case VARIABLE:
+            listModifyDirective();
             break;
+          default:
+            jj_la1[9] = jj_gen;
+          l = getLocator();
+            ret = skipStatement();
+          if ((ret == null) || (ret.length() == 0)) {
+              {if (true) return;}
+          }
+          if (ret.charAt(0) == '@') {
+              documentHandler.unrecognizedRule(ret);
+          } else {
+              reportWarningSkipText(l, ret);
+          }
+          }
+        }
+      }
+      label_8:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case CDO:
         case CDC:
-            jj_consume_token(CDC);
-            break;
         case ATKEYWORD:
-            atRuleDeclaration();
+          ;
+          break;
+        default:
+          jj_la1[10] = jj_gen;
+          break label_8;
+        }
+        ignoreStatement();
+        label_9:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
             break;
+          default:
+            jj_la1[11] = jj_gen;
+            break label_9;
+          }
+          jj_consume_token(S);
+        }
+      }
+    }
+  }
+
+  final public void ignoreStatement() throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case CDO:
+      jj_consume_token(CDO);
+      break;
+    case CDC:
+      jj_consume_token(CDC);
+      break;
+    case ATKEYWORD:
+      atRuleDeclaration();
+      break;
+    default:
+      jj_la1[12] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+/**
+ * The import statement
+ *
+ * @exception ParseException exception during the parse
+ */
+  final public void importDeclaration() throws ParseException {
+ Token n;
+ String uri;
+ MediaListImpl ml = new MediaListImpl();
+ boolean isURL = false;
+    try {
+      jj_consume_token(IMPORT_SYM);
+      label_10:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
         default:
-            jj_la1[12] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
+          jj_la1[13] = jj_gen;
+          break label_10;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STRING:
+        n = jj_consume_token(STRING);
+                               uri = convertStringIndex(n.image, 1,
+                                                        n.image.length() -1);
+        break;
+      case URL:
+        n = jj_consume_token(URL);
+               isURL=true;
+               uri = n.image.substring(4, n.image.length()-1).trim();
+               if ((uri.charAt(0) == '"')
+                   || (uri.charAt(0) == '\u005c'')) {
+                   uri = uri.substring(1, uri.length()-1);
+               }
+        break;
+      default:
+        jj_la1[14] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_11:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[15] = jj_gen;
+          break label_11;
+        }
+        jj_consume_token(S);
+      }
+      mediaStatement(ml);
+      jj_consume_token(SEMICOLON);
+      label_12:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[16] = jj_gen;
+          break label_12;
         }
+        jj_consume_token(S);
+      }
+               if (ml.getLength() == 0) {
+                   // see section 6.3 of the CSS2 recommandation.
+                   ml.addItem("all");
+               }
+               documentHandler.importStyle(uri, ml, isURL);
+    } catch (ParseException e) {
+     reportError(getLocator(), e);
+     skipStatement();
+     // reportWarningSkipText(getLocator(), skipStatement());
+
     }
+  }
 
-    /**
-     * The import statement
-     * 
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void importDeclaration() throws ParseException {
-        Token n;
-        String uri;
-        MediaListImpl ml = new MediaListImpl();
-        boolean isURL = false;
-        try {
-            jj_consume_token(IMPORT_SYM);
-            label_10: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[13] = jj_gen;
-                    break label_10;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case STRING:
-                n = jj_consume_token(STRING);
-                uri = convertStringIndex(n.image, 1, n.image.length() - 1);
-                break;
-            case URL:
-                n = jj_consume_token(URL);
-                isURL = true;
-                uri = n.image.substring(4, n.image.length() - 1).trim();
-                if ((uri.charAt(0) == '"') || (uri.charAt(0) == '\u005c'')) {
-                    uri = uri.substring(1, uri.length() - 1);
-                }
-                break;
-            default:
-                jj_la1[14] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            label_11: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[15] = jj_gen;
-                    break label_11;
-                }
-                jj_consume_token(S);
-            }
-            mediaStatement(ml);
-            jj_consume_token(SEMICOLON);
-            label_12: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[16] = jj_gen;
-                    break label_12;
-                }
-                jj_consume_token(S);
-            }
-            if (ml.getLength() == 0) {
-                // see section 6.3 of the CSS2 recommandation.
-                ml.addItem("all");
-            }
-            documentHandler.importStyle(uri, ml, isURL);
-        } catch (ParseException e) {
-            reportError(getLocator(), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void keyframes() throws ParseException {
+    Token n;
+    boolean start = false;
+    String keyframeName = null;
+    String animationname = "";
+    try {
+      n = jj_consume_token(KEY_FRAME_SYM);
+      label_13:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[17] = jj_gen;
+          break label_13;
+        }
+        jj_consume_token(S);
+      }
+                              keyframeName = n.image;
+      label_14:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IDENT:
+          n = jj_consume_token(IDENT);
+               animationname += n.image;
+          break;
+        case INTERPOLATION:
+          n = jj_consume_token(INTERPOLATION);
+                                                                  animationname += n.image;
+          break;
+        default:
+          jj_la1[18] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case INTERPOLATION:
+        case IDENT:
+          ;
+          break;
+        default:
+          jj_la1[19] = jj_gen;
+          break label_14;
+        }
+      }
+      label_15:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[20] = jj_gen;
+          break label_15;
+        }
+        jj_consume_token(S);
+      }
+    start = true; documentHandler.startKeyFrames(keyframeName, animationname);
+      jj_consume_token(LBRACE);
+      label_16:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[21] = jj_gen;
+          break label_16;
+        }
+        jj_consume_token(S);
+      }
+      label_17:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case TO:
+        case FROM:
+        case PERCENTAGE:
+          ;
+          break;
+        default:
+          jj_la1[22] = jj_gen;
+          break label_17;
+        }
+        keyframeSelector();
+      }
+      jj_consume_token(RBRACE);
+      label_18:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[23] = jj_gen;
+          break label_18;
+        }
+        jj_consume_token(S);
+      }
+    } catch (ParseException e) {
+     reportError(getLocator(), e);
+     skipStatement();
+    } finally {
+     if (start) {
+         documentHandler.endKeyFrames();
+     }
+    }
+  }
+
+  final public void keyframeSelector() throws ParseException {
+    Token n;
+    boolean start = false;
+    try {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case FROM:
+        n = jj_consume_token(FROM);
+        break;
+      case TO:
+        n = jj_consume_token(TO);
+        break;
+      case PERCENTAGE:
+        n = jj_consume_token(PERCENTAGE);
+        break;
+      default:
+        jj_la1[24] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_19:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[25] = jj_gen;
+          break label_19;
+        }
+        jj_consume_token(S);
+      }
+      jj_consume_token(LBRACE);
+      label_20:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[26] = jj_gen;
+          break label_20;
+        }
+        jj_consume_token(S);
+      }
+          start = true;
+          documentHandler.startKeyframeSelector(n.image);
+      label_21:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case PLUS:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case INCLUDE_SYM:
+        case DEBUG_SYM:
+        case WARN_SYM:
+        case EACH_SYM:
+        case IF_SYM:
+        case EXTEND_SYM:
+        case CONTENT_SYM:
+        case MICROSOFT_RULE:
+        case IDENT:
+        case VARIABLE:
+        case HASH:
+        case MEDIA_SYM:
+        case KEY_FRAME_SYM:
+          ;
+          break;
+        default:
+          jj_la1[27] = jj_gen;
+          break label_21;
+        }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case PLUS:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case INCLUDE_SYM:
+        case DEBUG_SYM:
+        case WARN_SYM:
+        case EACH_SYM:
+        case IF_SYM:
+        case EXTEND_SYM:
+        case CONTENT_SYM:
+        case IDENT:
+        case VARIABLE:
+        case HASH:
+        case MEDIA_SYM:
+        case KEY_FRAME_SYM:
+          ifContentStatement();
+          break;
+        case MICROSOFT_RULE:
+          microsoftExtension();
+          break;
+        default:
+          jj_la1[28] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+      jj_consume_token(RBRACE);
+      label_22:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[29] = jj_gen;
+          break label_22;
+        }
+        jj_consume_token(S);
+      }
+    } catch (ThrowedParseException e) {
+        if (errorHandler != null) {
+            LocatorImpl li = new LocatorImpl(this,
+                                             e.e.currentToken.next.beginLine,
+                                             e.e.currentToken.next.beginColumn-1);
+            reportError(li, e.e);
+        }
+    } catch (ParseException e) {
+        reportError(getLocator(), e);
+        skipStatement();
+        // reportWarningSkipText(getLocator(), skipStatement());
 
+    } catch (TokenMgrError e) {
+        reportWarningSkipText(getLocator(), skipStatement());
+    } finally {
+        if (start) {
+            documentHandler.endKeyframeSelector();
         }
     }
+  }
 
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void keyframes() throws ParseException {
-        Token n;
-        boolean start = false;
-        String keyframeName = null;
-        String animationname = "";
-        try {
-            n = jj_consume_token(KEY_FRAME_SYM);
-            label_13: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[17] = jj_gen;
-                    break label_13;
-                }
-                jj_consume_token(S);
-            }
-            keyframeName = n.image;
-            label_14: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case IDENT:
-                    n = jj_consume_token(IDENT);
-                    animationname += n.image;
-                    break;
-                case INTERPOLATION:
-                    n = jj_consume_token(INTERPOLATION);
-                    animationname += n.image;
-                    break;
-                default:
-                    jj_la1[18] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case INTERPOLATION:
-                case IDENT:
-                    ;
-                    break;
-                default:
-                    jj_la1[19] = jj_gen;
-                    break label_14;
-                }
-            }
-            label_15: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[20] = jj_gen;
-                    break label_15;
-                }
-                jj_consume_token(S);
-            }
-            start = true;
-            documentHandler.startKeyFrames(keyframeName, animationname);
-            jj_consume_token(LBRACE);
-            label_16: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[21] = jj_gen;
-                    break label_16;
-                }
-                jj_consume_token(S);
-            }
-            label_17: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case TO:
-                case FROM:
-                case PERCENTAGE:
-                    ;
-                    break;
-                default:
-                    jj_la1[22] = jj_gen;
-                    break label_17;
-                }
-                keyframeSelector();
-            }
-            jj_consume_token(RBRACE);
-            label_18: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[23] = jj_gen;
-                    break label_18;
-                }
-                jj_consume_token(S);
-            }
-        } catch (ParseException e) {
-            reportError(getLocator(), e);
-            skipStatement();
-        } finally {
-            if (start) {
-                documentHandler.endKeyFrames();
-            }
-        }
-    }
-
-    final public void keyframeSelector() throws ParseException {
-        Token n;
-        boolean start = false;
-        try {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case FROM:
-                n = jj_consume_token(FROM);
-                break;
-            case TO:
-                n = jj_consume_token(TO);
-                break;
-            case PERCENTAGE:
-                n = jj_consume_token(PERCENTAGE);
-                break;
-            default:
-                jj_la1[24] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            label_19: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[25] = jj_gen;
-                    break label_19;
-                }
-                jj_consume_token(S);
-            }
-            jj_consume_token(LBRACE);
-            label_20: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[26] = jj_gen;
-                    break label_20;
-                }
-                jj_consume_token(S);
-            }
-            start = true;
-            documentHandler.startKeyframeSelector(n.image);
-            label_21: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case PLUS:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case INCLUDE_SYM:
-                case DEBUG_SYM:
-                case WARN_SYM:
-                case EACH_SYM:
-                case IF_SYM:
-                case EXTEND_SYM:
-                case CONTENT_SYM:
-                case MICROSOFT_RULE:
-                case IDENT:
-                case VARIABLE:
-                case HASH:
-                case MEDIA_SYM:
-                case KEY_FRAME_SYM:
-                    ;
-                    break;
-                default:
-                    jj_la1[27] = jj_gen;
-                    break label_21;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case PLUS:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case INCLUDE_SYM:
-                case DEBUG_SYM:
-                case WARN_SYM:
-                case EACH_SYM:
-                case IF_SYM:
-                case EXTEND_SYM:
-                case CONTENT_SYM:
-                case IDENT:
-                case VARIABLE:
-                case HASH:
-                case MEDIA_SYM:
-                case KEY_FRAME_SYM:
-                    ifContentStatement();
-                    break;
-                case MICROSOFT_RULE:
-                    microsoftExtension();
-                    break;
-                default:
-                    jj_la1[28] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            jj_consume_token(RBRACE);
-            label_22: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[29] = jj_gen;
-                    break label_22;
-                }
-                jj_consume_token(S);
-            }
-        } catch (ThrowedParseException e) {
-            if (errorHandler != null) {
-                LocatorImpl li = new LocatorImpl(this,
-                        e.e.currentToken.next.beginLine,
-                        e.e.currentToken.next.beginColumn - 1);
-                reportError(li, e.e);
-            }
-        } catch (ParseException e) {
-            reportError(getLocator(), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
-
-        } catch (TokenMgrError e) {
-            reportWarningSkipText(getLocator(), skipStatement());
-        } finally {
-            if (start) {
-                documentHandler.endKeyframeSelector();
-            }
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    /* see http://www.w3.org/TR/css3-mediaqueries/ */
-    final public void media() throws ParseException {
-        boolean start = false;
-        String ret;
-        MediaListImpl ml = new MediaListImpl();
-        try {
-            jj_consume_token(MEDIA_SYM);
-            label_23: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[30] = jj_gen;
-                    break label_23;
-                }
-                jj_consume_token(S);
-            }
-            mediaStatement(ml);
-            start = true;
-            documentHandler.startMedia(ml);
-            jj_consume_token(LBRACE);
-            label_24: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[31] = jj_gen;
-                    break label_24;
-                }
-                jj_consume_token(S);
-            }
-            label_25: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case CDO:
-                case LBRACE:
-                case DASHMATCH:
-                case INCLUDES:
-                case PLUS:
-                case MINUS:
-                case COMMA:
-                case SEMICOLON:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case NONASCII:
-                case DEBUG_SYM:
-                case WARN_SYM:
-                case STRING:
-                case IDENT:
-                case NUMBER:
-                case URL:
-                case PERCENTAGE:
-                case HASH:
-                case IMPORT_SYM:
-                case MEDIA_SYM:
-                case CHARSET_SYM:
-                case PAGE_SYM:
-                case FONT_FACE_SYM:
-                case ATKEYWORD:
-                case IMPORTANT_SYM:
-                case UNICODERANGE:
-                case FUNCTION:
-                case UNKNOWN:
-                    ;
-                    break;
-                default:
-                    jj_la1[32] = jj_gen;
-                    break label_25;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case DEBUG_SYM:
-                case WARN_SYM:
-                    debuggingDirective();
-                    break;
-                case PLUS:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case IDENT:
-                case HASH:
-                    styleRule();
-                    break;
-                case CDO:
-                case LBRACE:
-                case DASHMATCH:
-                case INCLUDES:
-                case MINUS:
-                case COMMA:
-                case SEMICOLON:
-                case NONASCII:
-                case STRING:
-                case NUMBER:
-                case URL:
-                case PERCENTAGE:
-                case IMPORT_SYM:
-                case MEDIA_SYM:
-                case CHARSET_SYM:
-                case PAGE_SYM:
-                case FONT_FACE_SYM:
-                case ATKEYWORD:
-                case IMPORTANT_SYM:
-                case UNICODERANGE:
-                case FUNCTION:
-                case UNKNOWN:
-                    skipUnknownRule();
-                    break;
-                default:
-                    jj_la1[33] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            jj_consume_token(RBRACE);
-            label_26: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[34] = jj_gen;
-                    break label_26;
-                }
-                jj_consume_token(S);
-            }
-        } catch (ParseException e) {
-            reportError(getLocator(), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
-
-        } finally {
-            if (start) {
-                documentHandler.endMedia(ml);
-            }
-        }
-    }
-
-    final public void mediaStatement(MediaListImpl ml) throws ParseException {
-        Token t;
-        t = getToken(1);
-        // loop over comma separated parts, add each to ml
-        while ((t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
-            StringBuffer s = new StringBuffer();
-            s.append(getToken(0).image);
-            while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)
-                    && (t.kind != SEMICOLON)) {
-                s.append(t.image);
-                getNextToken();
-                t = getToken(1);
-            }
-            if (t.kind == COMMA) {
-                // skip the comma and the token before it that is still the
-                // active token
-                getNextToken();
-                getNextToken();
-                t = getToken(1);
-            }
-            String str = s.toString().trim();
-            if (str.length() > 0) {
-                ml.addItem(str);
-            }
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String medium() throws ParseException {
-        Token n;
-        n = jj_consume_token(IDENT);
-        {
-            if (true) {
-                return convertIdent(n.image);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void page() throws ParseException {
-        boolean start = false;
-        Token n = null;
-        String page = null;
-        String pseudo = null;
-        try {
-            jj_consume_token(PAGE_SYM);
-            label_27: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[35] = jj_gen;
-                    break label_27;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case IDENT:
-                n = jj_consume_token(IDENT);
-                label_28: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[36] = jj_gen;
-                        break label_28;
-                    }
-                    jj_consume_token(S);
-                }
-                break;
-            default:
-                jj_la1[37] = jj_gen;
-                ;
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COLON:
-                pseudo = pseudo_page();
-                break;
-            default:
-                jj_la1[38] = jj_gen;
-                ;
-            }
-            if (n != null) {
-                page = convertIdent(n.image);
-            }
-            jj_consume_token(LBRACE);
-            label_29: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[39] = jj_gen;
-                    break label_29;
-                }
-                jj_consume_token(S);
-            }
-            start = true;
-            documentHandler.startPage(page, pseudo);
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case INTERPOLATION:
-            case IDENT:
-                declaration();
-                break;
-            default:
-                jj_la1[40] = jj_gen;
-                ;
-            }
-            label_30: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case SEMICOLON:
-                    ;
-                    break;
-                default:
-                    jj_la1[41] = jj_gen;
-                    break label_30;
-                }
-                jj_consume_token(SEMICOLON);
-                label_31: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[42] = jj_gen;
-                        break label_31;
-                    }
-                    jj_consume_token(S);
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case INTERPOLATION:
-                case IDENT:
-                    declaration();
-                    break;
-                default:
-                    jj_la1[43] = jj_gen;
-                    ;
-                }
-            }
-            jj_consume_token(RBRACE);
-            label_32: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[44] = jj_gen;
-                    break label_32;
-                }
-                jj_consume_token(S);
-            }
-        } catch (ParseException e) {
-            if (errorHandler != null) {
-                LocatorImpl li = new LocatorImpl(this,
-                        e.currentToken.next.beginLine,
-                        e.currentToken.next.beginColumn - 1);
-                reportError(li, e);
-                skipStatement();
-                // reportWarningSkipText(li, skipStatement());
-            } else {
-                skipStatement();
-            }
-        } finally {
-            if (start) {
-                documentHandler.endPage(page, pseudo);
-            }
-        }
-    }
-
-    final public String pseudo_page() throws ParseException {
-        Token n;
-        jj_consume_token(COLON);
-        n = jj_consume_token(IDENT);
-        label_33: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[45] = jj_gen;
-                break label_33;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return convertIdent(n.image);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void fontFace() throws ParseException {
-        boolean start = false;
-        try {
-            jj_consume_token(FONT_FACE_SYM);
-            label_34: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[46] = jj_gen;
-                    break label_34;
-                }
-                jj_consume_token(S);
-            }
-            jj_consume_token(LBRACE);
-            label_35: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[47] = jj_gen;
-                    break label_35;
-                }
-                jj_consume_token(S);
-            }
-            start = true;
-            documentHandler.startFontFace();
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case INTERPOLATION:
-            case IDENT:
-                declaration();
-                break;
-            default:
-                jj_la1[48] = jj_gen;
-                ;
-            }
-            label_36: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case SEMICOLON:
-                    ;
-                    break;
-                default:
-                    jj_la1[49] = jj_gen;
-                    break label_36;
-                }
-                jj_consume_token(SEMICOLON);
-                label_37: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[50] = jj_gen;
-                        break label_37;
-                    }
-                    jj_consume_token(S);
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case INTERPOLATION:
-                case IDENT:
-                    declaration();
-                    break;
-                default:
-                    jj_la1[51] = jj_gen;
-                    ;
-                }
-            }
-            jj_consume_token(RBRACE);
-            label_38: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[52] = jj_gen;
-                    break label_38;
-                }
-                jj_consume_token(S);
-            }
-        } catch (ParseException e) {
-            reportError(getLocator(), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
-
-        } finally {
-            if (start) {
-                documentHandler.endFontFace();
-            }
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void atRuleDeclaration() throws ParseException {
-        Token n;
-        String ret;
-        n = jj_consume_token(ATKEYWORD);
-        ret = skipStatement();
-        if ((ret != null) && (ret.charAt(0) == '@')) {
-            documentHandler.unrecognizedRule(ret);
-        } else {
-            reportWarningSkipText(getLocator(), ret);
-        }
-    }
-
-    final public void skipUnknownRule() throws ParseException {
-        Token n;
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case ATKEYWORD:
-            n = jj_consume_token(ATKEYWORD);
-            break;
-        case CDO:
-            n = jj_consume_token(CDO);
-            break;
-        case CHARSET_SYM:
-            n = jj_consume_token(CHARSET_SYM);
-            break;
-        case COMMA:
-            n = jj_consume_token(COMMA);
-            break;
-        case DASHMATCH:
-            n = jj_consume_token(DASHMATCH);
-            break;
-        case FONT_FACE_SYM:
-            n = jj_consume_token(FONT_FACE_SYM);
-            break;
-        case FUNCTION:
-            n = jj_consume_token(FUNCTION);
-            break;
-        case IMPORTANT_SYM:
-            n = jj_consume_token(IMPORTANT_SYM);
-            break;
-        case IMPORT_SYM:
-            n = jj_consume_token(IMPORT_SYM);
-            break;
-        case INCLUDES:
-            n = jj_consume_token(INCLUDES);
-            break;
-        case LBRACE:
-            n = jj_consume_token(LBRACE);
-            break;
-        case MEDIA_SYM:
-            n = jj_consume_token(MEDIA_SYM);
-            break;
-        case NONASCII:
-            n = jj_consume_token(NONASCII);
-            break;
-        case NUMBER:
-            n = jj_consume_token(NUMBER);
-            break;
-        case PAGE_SYM:
-            n = jj_consume_token(PAGE_SYM);
-            break;
-        case PERCENTAGE:
-            n = jj_consume_token(PERCENTAGE);
-            break;
-        case STRING:
-            n = jj_consume_token(STRING);
-            break;
-        case UNICODERANGE:
-            n = jj_consume_token(UNICODERANGE);
-            break;
-        case URL:
-            n = jj_consume_token(URL);
-            break;
-        case SEMICOLON:
-            n = jj_consume_token(SEMICOLON);
-            break;
-        case MINUS:
-            n = jj_consume_token(MINUS);
-            break;
-        case UNKNOWN:
-            n = jj_consume_token(UNKNOWN);
-            break;
-        default:
-            jj_la1[53] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        String ret;
-        Locator loc = getLocator();
-        ret = skipStatement();
-        if ((ret != null) && (n.image.charAt(0) == '@')) {
-            documentHandler.unrecognizedRule(ret);
-        } else {
-            reportWarningSkipText(loc, ret);
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public char combinator() throws ParseException {
-        char connector = ' ';
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case PLUS:
-        case PRECEDES:
-        case SIBLING:
-            connector = combinatorChar();
-            break;
-        case S:
-            jj_consume_token(S);
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-                connector = combinatorChar();
-                break;
-            default:
-                jj_la1[54] = jj_gen;
-                ;
-            }
-            break;
-        default:
-            jj_la1[55] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        {
-            if (true) {
-                return connector;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /** to refactor combinator and reuse in selector(). */
-    final public char combinatorChar() throws ParseException {
-        Token t;
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case PLUS:
-            t = jj_consume_token(PLUS);
-            break;
-        case PRECEDES:
-            t = jj_consume_token(PRECEDES);
-            break;
-        case SIBLING:
-            t = jj_consume_token(SIBLING);
-            break;
-        default:
-            jj_la1[56] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        label_39: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[57] = jj_gen;
-                break label_39;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return t.image.charAt(0);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void microsoftExtension() throws ParseException {
-        Token n;
-        String name = "";
-        String value = "";
-        // This is not really taking the syntax of filter rules into account
-        n = jj_consume_token(MICROSOFT_RULE);
-        label_40: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[58] = jj_gen;
-                break label_40;
-            }
-            jj_consume_token(S);
-        }
-        name = n.image;
-        jj_consume_token(COLON);
-        label_41: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case IDENT:
-                n = jj_consume_token(IDENT);
-                value += n.image;
-                break;
-            case NUMBER:
-                n = jj_consume_token(NUMBER);
-                value += n.image;
-                break;
-            case STRING:
-                n = jj_consume_token(STRING);
-                value += n.image;
-                break;
-            case COMMA:
-                n = jj_consume_token(COMMA);
-                value += n.image;
-                break;
-            case INTERPOLATION:
-                n = jj_consume_token(INTERPOLATION);
-                value += n.image;
-                break;
-            case COLON:
-                n = jj_consume_token(COLON);
-                value += n.image;
-                break;
-            case FUNCTION:
-                n = jj_consume_token(FUNCTION);
-                value += n.image;
-                break;
-            case RPARAN:
-                n = jj_consume_token(RPARAN);
-                value += n.image;
-                break;
-            case EQ:
-                n = jj_consume_token(EQ);
-                value += n.image;
-                break;
-            case DOT:
-                n = jj_consume_token(DOT);
-                value += n.image;
-                break;
-            case S:
-                n = jj_consume_token(S);
-                if (value.lastIndexOf(' ') != value.length() - 1) {
-                    value += n.image;
-                }
-                break;
-            default:
-                jj_la1[59] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-            case EQ:
-            case COMMA:
-            case DOT:
-            case RPARAN:
-            case COLON:
-            case INTERPOLATION:
-            case STRING:
-            case IDENT:
-            case NUMBER:
-            case FUNCTION:
-                ;
-                break;
-            default:
-                jj_la1[60] = jj_gen;
-                break label_41;
-            }
-        }
-        jj_consume_token(SEMICOLON);
-        label_42: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[61] = jj_gen;
-                break label_42;
-            }
-            jj_consume_token(S);
-        }
-        documentHandler.microsoftDirective(name, value);
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String property() throws ParseException {
-        Token t;
-        String s = "";
-        label_43: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case IDENT:
-                t = jj_consume_token(IDENT);
-                s += t.image;
-                break;
-            case INTERPOLATION:
-                t = jj_consume_token(INTERPOLATION);
-                s += t.image;
-                break;
-            default:
-                jj_la1[62] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case INTERPOLATION:
-            case IDENT:
-                ;
-                break;
-            default:
-                jj_la1[63] = jj_gen;
-                break label_43;
-            }
-        }
-        label_44: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[64] = jj_gen;
-                break label_44;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return s;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public String variableName() throws ParseException {
-        Token n;
-        n = jj_consume_token(VARIABLE);
-        label_45: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[65] = jj_gen;
-                break label_45;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return convertIdent(n.image.substring(1));
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public String functionName() throws ParseException {
-        Token n;
-        n = jj_consume_token(FUNCTION);
-        label_46: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[66] = jj_gen;
-                break label_46;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return convertIdent(n.image.substring(0, n.image.length() - 1));
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void styleRule() throws ParseException {
-        boolean start = false;
-        ArrayList<String> l = null;
-        Token save;
-        Locator loc;
-        try {
-            l = selectorList();
-            save = token;
-            jj_consume_token(LBRACE);
-            label_47: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[67] = jj_gen;
-                    break label_47;
-                }
-                jj_consume_token(S);
-            }
-            start = true;
-            documentHandler.startSelector(l);
-            label_48: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case PLUS:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case INCLUDE_SYM:
-                case DEBUG_SYM:
-                case WARN_SYM:
-                case EACH_SYM:
-                case IF_SYM:
-                case EXTEND_SYM:
-                case CONTENT_SYM:
-                case MICROSOFT_RULE:
-                case IDENT:
-                case VARIABLE:
-                case HASH:
-                case IMPORT_SYM:
-                case MEDIA_SYM:
-                case KEY_FRAME_SYM:
-                    ;
-                    break;
-                default:
-                    jj_la1[68] = jj_gen;
-                    break label_48;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case PLUS:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case INCLUDE_SYM:
-                case DEBUG_SYM:
-                case WARN_SYM:
-                case EACH_SYM:
-                case IF_SYM:
-                case EXTEND_SYM:
-                case CONTENT_SYM:
-                case IDENT:
-                case VARIABLE:
-                case HASH:
-                case MEDIA_SYM:
-                case KEY_FRAME_SYM:
-                    ifContentStatement();
-                    break;
-                case MICROSOFT_RULE:
-                    microsoftExtension();
-                    break;
-                case IMPORT_SYM:
-                    importDeclaration();
-                    break;
-                default:
-                    jj_la1[69] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            jj_consume_token(RBRACE);
-            label_49: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[70] = jj_gen;
-                    break label_49;
-                }
-                jj_consume_token(S);
-            }
-        } catch (ThrowedParseException e) {
-            if (errorHandler != null) {
-                LocatorImpl li = new LocatorImpl(this,
-                        e.e.currentToken.next.beginLine,
-                        e.e.currentToken.next.beginColumn - 1);
-                reportError(li, e.e);
-            }
-        } catch (ParseException e) {
-            reportError(getLocator(), e);
-            skipStatement();
-            // reportWarningSkipText(getLocator(), skipStatement());
-
-        } catch (TokenMgrError e) {
-            reportWarningSkipText(getLocator(), skipStatement());
-        } finally {
-            if (start) {
-                documentHandler.endSelector();
-            }
-        }
-    }
-
-    final public ArrayList<String> selectorList() throws ParseException {
-        ArrayList<String> selectors = new ArrayList<String>();
-        String selector;
-        selector = selector();
-        label_50: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COMMA:
-                ;
-                break;
-            default:
-                jj_la1[71] = jj_gen;
-                break label_50;
-            }
-            jj_consume_token(COMMA);
-            label_51: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[72] = jj_gen;
-                    break label_51;
-                }
-                jj_consume_token(S);
-            }
-            selectors.add(selector);
-            selector = selector();
-        }
-        selectors.add(selector);
-        {
-            if (true) {
-                return selectors;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String selector() throws ParseException {
-        String selector = null;
-        char comb;
-        try {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case IDENT:
-            case HASH:
-                selector = simple_selector(null, ' ');
-                break;
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-                comb = combinatorChar();
-                selector = simple_selector(selector, comb);
-                break;
-            default:
-                jj_la1[73] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            label_52: while (true) {
-                if (jj_2_2(2)) {
-                    ;
-                } else {
-                    break label_52;
-                }
-                comb = combinator();
-                selector = simple_selector(selector, comb);
-            }
-            label_53: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[74] = jj_gen;
-                    break label_53;
-                }
-                jj_consume_token(S);
-            }
-            {
-                if (true) {
-                    return selector;
-                }
-            }
-        } catch (ParseException e) {
-            /*
-             * Token t = getToken(1); StringBuffer s = new StringBuffer();
-             * s.append(getToken(0).image); while ((t.kind != COMMA) && (t.kind
-             * != SEMICOLON) && (t.kind != LBRACE) && (t.kind != EOF)) {
-             * s.append(t.image); getNextToken(); t = getToken(1); }
-             * reportWarningSkipText(getLocator(), s.toString());
-             */
-            Token t = getToken(1);
-            while ((t.kind != COMMA) && (t.kind != SEMICOLON)
-                    && (t.kind != LBRACE) && (t.kind != EOF)) {
-                getNextToken();
-                t = getToken(1);
-            }
-
-            {
-                if (true) {
-                    throw new ThrowedParseException(e);
-                }
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String simple_selector(String selector, char comb)
-            throws ParseException {
-        String simple_current = null;
-        String cond = null;
-
-        pseudoElt = null;
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case ANY:
-        case PARENT:
-        case INTERPOLATION:
-        case IDENT:
-            simple_current = element_name();
-            label_54: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case LBRACKET:
-                case DOT:
-                case COLON:
-                case HASH:
-                    ;
-                    break;
-                default:
-                    jj_la1[75] = jj_gen;
-                    break label_54;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case HASH:
-                    cond = hash(cond);
-                    break;
-                case DOT:
-                    cond = _class(cond);
-                    break;
-                case LBRACKET:
-                    cond = attrib(cond);
-                    break;
-                case COLON:
-                    cond = pseudo(cond);
-                    break;
-                default:
-                    jj_la1[76] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            break;
-        case HASH:
-            cond = hash(cond);
-            label_55: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case LBRACKET:
-                case DOT:
-                case COLON:
-                    ;
-                    break;
-                default:
-                    jj_la1[77] = jj_gen;
-                    break label_55;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case DOT:
-                    cond = _class(cond);
-                    break;
-                case LBRACKET:
-                    cond = attrib(cond);
-                    break;
-                case COLON:
-                    cond = pseudo(cond);
-                    break;
-                default:
-                    jj_la1[78] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            break;
-        case DOT:
-            cond = _class(cond);
-            label_56: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case LBRACKET:
-                case DOT:
-                case COLON:
-                case HASH:
-                    ;
-                    break;
-                default:
-                    jj_la1[79] = jj_gen;
-                    break label_56;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case HASH:
-                    cond = hash(cond);
-                    break;
-                case DOT:
-                    cond = _class(cond);
-                    break;
-                case LBRACKET:
-                    cond = attrib(cond);
-                    break;
-                case COLON:
-                    cond = pseudo(cond);
-                    break;
-                default:
-                    jj_la1[80] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            break;
-        case COLON:
-            cond = pseudo(cond);
-            label_57: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case LBRACKET:
-                case DOT:
-                case COLON:
-                case HASH:
-                    ;
-                    break;
-                default:
-                    jj_la1[81] = jj_gen;
-                    break label_57;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case HASH:
-                    cond = hash(cond);
-                    break;
-                case DOT:
-                    cond = _class(cond);
-                    break;
-                case LBRACKET:
-                    cond = attrib(cond);
-                    break;
-                case COLON:
-                    cond = pseudo(cond);
-                    break;
-                default:
-                    jj_la1[82] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            break;
-        case LBRACKET:
-            cond = attrib(cond);
-            label_58: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case LBRACKET:
-                case DOT:
-                case COLON:
-                case HASH:
-                    ;
-                    break;
-                default:
-                    jj_la1[83] = jj_gen;
-                    break label_58;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case HASH:
-                    cond = hash(cond);
-                    break;
-                case DOT:
-                    cond = _class(cond);
-                    break;
-                case LBRACKET:
-                    cond = attrib(cond);
-                    break;
-                case COLON:
-                    cond = pseudo(cond);
-                    break;
-                default:
-                    jj_la1[84] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-            break;
-        default:
-            jj_la1[85] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        if (simple_current == null) {
-            simple_current = "";
-        }
-        if (cond != null) {
-            simple_current = simple_current + cond;
-        }
-        StringBuilder builder = new StringBuilder();
-        switch (comb) {
-        case ' ':
-            if (selector != null) {
-                builder.append(selector).append(" ");
-            }
-            break;
-        case '+':
-        case '>':
-        case '~':
-            if (selector != null) {
-                builder.append(selector).append(" ");
-            }
-            builder.append(comb).append(" ");
-            break;
-        default: {
-            if (true) {
-                throw new ParseException("invalid state. send a bug report");
-            }
-        }
-        }
-        builder.append(simple_current);
-        selector = builder.toString();
-
-        if (pseudoElt != null) {
-            selector = selector + pseudoElt;
-        }
-        {
-            if (true) {
-                return selector;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String _class(String pred) throws ParseException {
-        Token t;
-        String s = ".";
-        jj_consume_token(DOT);
-        label_59: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case IDENT:
-                t = jj_consume_token(IDENT);
-                s += t.image;
-                break;
-            case INTERPOLATION:
-                t = jj_consume_token(INTERPOLATION);
-                s += t.image;
-                break;
-            default:
-                jj_la1[86] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case INTERPOLATION:
-            case IDENT:
-                ;
-                break;
-            default:
-                jj_la1[87] = jj_gen;
-                break label_59;
-            }
-        }
-        if (pred == null) {
-            {
-                if (true) {
-                    return s;
-                }
-            }
-        } else {
-            {
-                if (true) {
-                    return pred + s;
-                }
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String element_name() throws ParseException {
-        Token t;
-        String s = "";
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case INTERPOLATION:
-        case IDENT:
-            label_60: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case IDENT:
-                    t = jj_consume_token(IDENT);
-                    s += t.image;
-                    break;
-                case INTERPOLATION:
-                    t = jj_consume_token(INTERPOLATION);
-                    s += t.image;
-                    break;
-                default:
-                    jj_la1[88] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case INTERPOLATION:
-                case IDENT:
-                    ;
-                    break;
-                default:
-                    jj_la1[89] = jj_gen;
-                    break label_60;
-                }
-            }
-            {
-                if (true) {
-                    return s;
-                }
-            }
-            break;
-        case ANY:
-            jj_consume_token(ANY);
-            {
-                if (true) {
-                    return "*";
-                }
-            }
-            break;
-        case PARENT:
-            jj_consume_token(PARENT);
-            {
-                if (true) {
-                    return "&";
-                }
-            }
-            break;
-        default:
-            jj_la1[90] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String attrib(String pred) throws ParseException {
-        int cases = 0;
-        Token att = null;
-        Token val = null;
-        String attValue = null;
-        jj_consume_token(LBRACKET);
-        label_61: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[91] = jj_gen;
-                break label_61;
-            }
-            jj_consume_token(S);
-        }
-        att = jj_consume_token(IDENT);
-        label_62: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[92] = jj_gen;
-                break label_62;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case DASHMATCH:
-        case CARETMATCH:
-        case DOLLARMATCH:
-        case STARMATCH:
-        case INCLUDES:
-        case EQ:
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case EQ:
-                jj_consume_token(EQ);
-                cases = 1;
-                break;
-            case INCLUDES:
-                jj_consume_token(INCLUDES);
-                cases = 2;
-                break;
-            case DASHMATCH:
-                jj_consume_token(DASHMATCH);
-                cases = 3;
-                break;
-            case CARETMATCH:
-                jj_consume_token(CARETMATCH);
-                cases = 4;
-                break;
-            case DOLLARMATCH:
-                jj_consume_token(DOLLARMATCH);
-                cases = 5;
-                break;
-            case STARMATCH:
-                jj_consume_token(STARMATCH);
-                cases = 6;
-                break;
-            default:
-                jj_la1[93] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            label_63: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[94] = jj_gen;
-                    break label_63;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case IDENT:
-                val = jj_consume_token(IDENT);
-                attValue = val.image;
-                break;
-            case STRING:
-                val = jj_consume_token(STRING);
-                attValue = val.image;
-                break;
-            default:
-                jj_la1[95] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            label_64: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[96] = jj_gen;
-                    break label_64;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[97] = jj_gen;
-            ;
-        }
-        jj_consume_token(RBRACKET);
-        String name = convertIdent(att.image);
-        String c;
-        switch (cases) {
-        case 0:
-            c = name;
-            break;
-        case 1:
-            c = name + "=" + attValue;
-            break;
-        case 2:
-            c = name + "~=" + attValue;
-            break;
-        case 3:
-            c = name + "|=" + attValue;
-            break;
-        case 4:
-            c = name + "^=" + attValue;
-            break;
-        case 5:
-            c = name + "$=" + attValue;
-            break;
-        case 6:
-            c = name + "*=" + attValue;
-            break;
-        default:
-            // never reached.
-            c = null;
-        }
-        c = "[" + c + "]";
-        if (pred == null) {
-            {
-                if (true) {
-                    return c;
-                }
-            }
-        } else {
-            {
-                if (true) {
-                    return pred + c;
-                }
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String pseudo(String pred) throws ParseException {
-        Token n;
-        Token param;
-        String d;
-        boolean isPseudoElement = false;
-        jj_consume_token(COLON);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COLON:
-            jj_consume_token(COLON);
-            isPseudoElement = true;
-            break;
-        default:
-            jj_la1[98] = jj_gen;
-            ;
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case IDENT:
-            n = jj_consume_token(IDENT);
-            String s = ":" + convertIdent(n.image);
-            if (isPseudoElement) {
-                if (pseudoElt != null) {
-                    {
-                        if (true) {
-                            throw new CSSParseException(
-                                    "duplicate pseudo element definition " + s,
-                                    getLocator());
-                        }
-                    }
-                } else {
-                    pseudoElt = ":" + s;
-                    {
-                        if (true) {
-                            return pred;
-                        }
-                    }
-                }
-            } else {
-                String c = s;
-                if (pred == null) {
-                    {
-                        if (true) {
-                            return c;
-                        }
-                    }
-                } else {
-                    {
-                        if (true) {
-                            return pred + c;
-                        }
-                    }
-                }
-            }
-            break;
-        case FUNCTION:
-            n = jj_consume_token(FUNCTION);
-            label_65: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[99] = jj_gen;
-                    break label_65;
-                }
-                jj_consume_token(S);
-            }
-            d = skipStatementUntilRightParan();
-            jj_consume_token(RPARAN);
-            // accept anything between function and a right parenthesis
-            String f = convertIdent(n.image);
-            String colons = isPseudoElement ? "::" : ":";
-            String pseudofn = colons + f + d + ")";
-            if (pred == null) {
-                {
-                    if (true) {
-                        return pseudofn;
-                    }
-                }
-            } else {
-                {
-                    if (true) {
-                        return pred + pseudofn;
-                    }
-                }
-            }
-            break;
-        default:
-            jj_la1[100] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String hash(String pred) throws ParseException {
-        Token n;
-        n = jj_consume_token(HASH);
-        String d = n.image;
-        if (pred == null) {
-            {
-                if (true) {
-                    return d;
-                }
-            }
-        } else {
-            {
-                if (true) {
-                    return pred + d;
-                }
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void variable() throws ParseException {
-        String name;
-        LexicalUnitImpl exp = null;
-        boolean guarded = false;
-        String raw;
-        try {
-            name = variableName();
-            jj_consume_token(COLON);
-            label_66: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[101] = jj_gen;
-                    break label_66;
-                }
-                jj_consume_token(S);
-            }
-            exp = expr();
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case GUARDED_SYM:
-                guarded = guarded();
-                break;
-            default:
-                jj_la1[102] = jj_gen;
-                ;
-            }
-            label_67: while (true) {
-                jj_consume_token(SEMICOLON);
-                label_68: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[103] = jj_gen;
-                        break label_68;
-                    }
-                    jj_consume_token(S);
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case SEMICOLON:
-                    ;
-                    break;
-                default:
-                    jj_la1[104] = jj_gen;
-                    break label_67;
-                }
-            }
-            documentHandler.variable(name, exp, guarded);
-        } catch (JumpException e) {
-            skipAfterExpression();
-        } catch (NumberFormatException e) {
-            if (errorHandler != null) {
-                errorHandler.error(new CSSParseException("Invalid number "
-                        + e.getMessage(), getLocator(), e));
-            }
-            reportWarningSkipText(getLocator(), skipAfterExpression());
-        } catch (ParseException e) {
-            if (errorHandler != null) {
-                if (e.currentToken != null) {
-                    LocatorImpl li = new LocatorImpl(this,
-                            e.currentToken.next.beginLine,
-                            e.currentToken.next.beginColumn - 1);
-                    reportError(li, e);
-                } else {
-                    reportError(getLocator(), e);
-                }
-                skipAfterExpression();
-            } else {
-                skipAfterExpression();
-            }
-        }
-    }
-
-    final public void controlDirective() throws ParseException {
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case IF_SYM:
-            ifDirective();
-            break;
-        case EACH_SYM:
-            eachDirective();
-            break;
-        default:
-            jj_la1[105] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-    }
-
-    final public void ifContentStatement() throws ParseException {
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case CONTENT_SYM:
-            contentDirective();
-            break;
-        case INCLUDE_SYM:
-            includeDirective();
-            break;
-        case MEDIA_SYM:
-            media();
-            break;
-        case EXTEND_SYM:
-            extendDirective();
-            break;
-        case PLUS:
-        case PRECEDES:
-        case SIBLING:
-        case LBRACKET:
-        case ANY:
-        case PARENT:
-        case DOT:
-        case COLON:
-        case INTERPOLATION:
-        case DEBUG_SYM:
-        case WARN_SYM:
-        case IDENT:
-        case HASH:
-            styleRuleOrDeclarationOrNestedProperties();
-            break;
-        case KEY_FRAME_SYM:
-            keyframes();
-            break;
-        default:
-            jj_la1[106] = jj_gen;
-            if (jj_2_3(2147483647)) {
-                variable();
-            } else {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case VARIABLE:
-                    listModifyDirective();
-                    break;
-                case EACH_SYM:
-                case IF_SYM:
-                    controlDirective();
-                    break;
-                default:
-                    jj_la1[107] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-            }
-        }
-    }
-
-    final public void ifDirective() throws ParseException {
-        Token n = null;
-        String s = null;
-        String evaluator = "";
-        jj_consume_token(IF_SYM);
-        label_69: while (true) {
-            s = booleanExpressionToken();
-            evaluator += s;
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-            case EQ:
-            case PLUS:
-            case MINUS:
-            case PRECEDES:
-            case SUCCEEDS:
-            case DIV:
-            case ANY:
-            case LPARAN:
-            case RPARAN:
-            case COMPARE:
-            case OR:
-            case AND:
-            case NOT_EQ:
-            case IDENT:
-            case NUMBER:
-            case VARIABLE:
-            case CONTAINS:
-                ;
-                break;
-            default:
-                jj_la1[108] = jj_gen;
-                break label_69;
-            }
-        }
-        jj_consume_token(LBRACE);
-        label_70: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[109] = jj_gen;
-                break label_70;
-            }
-            jj_consume_token(S);
-        }
-        documentHandler.startIfElseDirective();
-        documentHandler.ifDirective(evaluator);
-        label_71: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case INCLUDE_SYM:
-            case DEBUG_SYM:
-            case WARN_SYM:
-            case EACH_SYM:
-            case IF_SYM:
-            case EXTEND_SYM:
-            case CONTENT_SYM:
-            case IDENT:
-            case VARIABLE:
-            case HASH:
-            case MEDIA_SYM:
-            case KEY_FRAME_SYM:
-                ;
-                break;
-            default:
-                jj_la1[110] = jj_gen;
-                break label_71;
-            }
-            ifContentStatement();
-        }
-        jj_consume_token(RBRACE);
-        label_72: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[111] = jj_gen;
-                break label_72;
-            }
-            jj_consume_token(S);
-        }
-        label_73: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case ELSE_SYM:
-                ;
-                break;
-            default:
-                jj_la1[112] = jj_gen;
-                break label_73;
-            }
-            elseDirective();
-        }
-        documentHandler.endIfElseDirective();
-    }
-
-    final public void elseDirective() throws ParseException {
-        String evaluator = "";
-        Token n = null;
-        String s = null;
-        jj_consume_token(ELSE_SYM);
-        label_74: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[113] = jj_gen;
-                break label_74;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case IF:
-            jj_consume_token(IF);
-            label_75: while (true) {
-                s = booleanExpressionToken();
-                evaluator += s;
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                case EQ:
-                case PLUS:
-                case MINUS:
-                case PRECEDES:
-                case SUCCEEDS:
-                case DIV:
-                case ANY:
-                case LPARAN:
-                case RPARAN:
-                case COMPARE:
-                case OR:
-                case AND:
-                case NOT_EQ:
-                case IDENT:
-                case NUMBER:
-                case VARIABLE:
-                case CONTAINS:
-                    ;
-                    break;
-                default:
-                    jj_la1[114] = jj_gen;
-                    break label_75;
-                }
-            }
-            break;
-        default:
-            jj_la1[115] = jj_gen;
-            ;
-        }
-        jj_consume_token(LBRACE);
-        label_76: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[116] = jj_gen;
-                break label_76;
-            }
-            jj_consume_token(S);
-        }
-        if (!evaluator.trim().equals("")) {
-            documentHandler.ifDirective(evaluator);
-        } else {
-            documentHandler.elseDirective();
-        }
-        label_77: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case INCLUDE_SYM:
-            case DEBUG_SYM:
-            case WARN_SYM:
-            case EACH_SYM:
-            case IF_SYM:
-            case EXTEND_SYM:
-            case CONTENT_SYM:
-            case IDENT:
-            case VARIABLE:
-            case HASH:
-            case MEDIA_SYM:
-            case KEY_FRAME_SYM:
-                ;
-                break;
-            default:
-                jj_la1[117] = jj_gen;
-                break label_77;
-            }
-            ifContentStatement();
-        }
-        jj_consume_token(RBRACE);
-        label_78: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[118] = jj_gen;
-                break label_78;
-            }
-            jj_consume_token(S);
-        }
-    }
-
-    final public String booleanExpressionToken() throws ParseException {
-        Token n = null;
-        String s = null;
-        if (jj_2_4(2147483647)) {
-            s = containsDirective();
-        } else {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case VARIABLE:
-                n = jj_consume_token(VARIABLE);
-                break;
-            case IDENT:
-                n = jj_consume_token(IDENT);
-                break;
-            case NUMBER:
-                n = jj_consume_token(NUMBER);
-                break;
-            case LPARAN:
-                n = jj_consume_token(LPARAN);
-                break;
-            case RPARAN:
-                n = jj_consume_token(RPARAN);
-                break;
-            case PLUS:
-                n = jj_consume_token(PLUS);
-                break;
-            case MINUS:
-                n = jj_consume_token(MINUS);
-                break;
-            case DIV:
-                n = jj_consume_token(DIV);
-                break;
-            case ANY:
-                n = jj_consume_token(ANY);
-                break;
-            case COMPARE:
-                n = jj_consume_token(COMPARE);
-                break;
-            case EQ:
-                n = jj_consume_token(EQ);
-                break;
-            case PRECEDES:
-                n = jj_consume_token(PRECEDES);
-                break;
-            case SUCCEEDS:
-                n = jj_consume_token(SUCCEEDS);
-                break;
-            case OR:
-                n = jj_consume_token(OR);
-                break;
-            case AND:
-                n = jj_consume_token(AND);
-                break;
-            case S:
-                n = jj_consume_token(S);
-                break;
-            case NOT_EQ:
-                n = jj_consume_token(NOT_EQ);
-                break;
-            default:
-                jj_la1[119] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-        }
-        if (n != null) {
-            {
-                if (true) {
-                    return n.image;
-                }
-            }
-        } else {
-            {
-                if (true) {
-                    return s;
-                }
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void eachDirective() throws ParseException {
-        Token var;
-        ArrayList<String> list = null;
-        String listVariable = null;
-        jj_consume_token(EACH_SYM);
-        label_79: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[120] = jj_gen;
-                break label_79;
-            }
-            jj_consume_token(S);
-        }
-        var = jj_consume_token(VARIABLE);
-        label_80: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[121] = jj_gen;
-                break label_80;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(EACH_IN);
-        label_81: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[122] = jj_gen;
-                break label_81;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case IDENT:
-            list = stringList();
-            documentHandler.startEachDirective(var.image, list);
-            break;
-        case VARIABLE:
-            listVariable = variableName();
-            documentHandler.startEachDirective(var.image, listVariable);
-            break;
-        default:
-            jj_la1[123] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        jj_consume_token(LBRACE);
-        label_82: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[124] = jj_gen;
-                break label_82;
-            }
-            jj_consume_token(S);
-        }
-        label_83: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case INCLUDE_SYM:
-            case DEBUG_SYM:
-            case WARN_SYM:
-            case EACH_SYM:
-            case IF_SYM:
-            case EXTEND_SYM:
-            case CONTENT_SYM:
-            case IDENT:
-            case VARIABLE:
-            case HASH:
-            case MEDIA_SYM:
-            case KEY_FRAME_SYM:
-                ;
-                break;
-            default:
-                jj_la1[125] = jj_gen;
-                break label_83;
-            }
-            ifContentStatement();
-        }
-        jj_consume_token(RBRACE);
-        label_84: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[126] = jj_gen;
-                break label_84;
-            }
-            jj_consume_token(S);
-        }
-        documentHandler.endEachDirective();
-    }
-
-    final public ArrayList<String> stringList() throws ParseException {
-        ArrayList<String> strings = new ArrayList<String>();
-        Token input;
-        input = jj_consume_token(IDENT);
-        label_85: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[127] = jj_gen;
-                break label_85;
-            }
-            jj_consume_token(S);
-        }
-        strings.add(input.image);
-        label_86: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COMMA:
-                ;
-                break;
-            default:
-                jj_la1[128] = jj_gen;
-                break label_86;
-            }
-            jj_consume_token(COMMA);
-            label_87: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[129] = jj_gen;
-                    break label_87;
-                }
-                jj_consume_token(S);
-            }
-            input = jj_consume_token(IDENT);
-            strings.add(input.image);
-            label_88: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[130] = jj_gen;
-                    break label_88;
-                }
-                jj_consume_token(S);
-            }
-        }
-        {
-            if (true) {
-                return strings;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void mixinDirective() throws ParseException {
-        String name;
-        ArrayList<VariableNode> args = null;
-        String body;
-        jj_consume_token(MIXIN_SYM);
-        label_89: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[131] = jj_gen;
-                break label_89;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case INTERPOLATION:
-        case IDENT:
-            name = property();
-            break;
-        case FUNCTION:
-            name = functionName();
-            args = arglist();
-            jj_consume_token(RPARAN);
-            label_90: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[132] = jj_gen;
-                    break label_90;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[133] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        jj_consume_token(LBRACE);
-        label_91: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[134] = jj_gen;
-                break label_91;
-            }
-            jj_consume_token(S);
-        }
-        documentHandler.startMixinDirective(name, args);
-        label_92: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case INCLUDE_SYM:
-            case DEBUG_SYM:
-            case WARN_SYM:
-            case EACH_SYM:
-            case IF_SYM:
-            case EXTEND_SYM:
-            case CONTENT_SYM:
-            case IDENT:
-            case VARIABLE:
-            case HASH:
-            case MEDIA_SYM:
-            case PAGE_SYM:
-            case FONT_FACE_SYM:
-            case KEY_FRAME_SYM:
-                ;
-                break;
-            default:
-                jj_la1[135] = jj_gen;
-                break label_92;
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case PRECEDES:
-            case SIBLING:
-            case LBRACKET:
-            case ANY:
-            case PARENT:
-            case DOT:
-            case COLON:
-            case INTERPOLATION:
-            case INCLUDE_SYM:
-            case DEBUG_SYM:
-            case WARN_SYM:
-            case EACH_SYM:
-            case IF_SYM:
-            case EXTEND_SYM:
-            case CONTENT_SYM:
-            case IDENT:
-            case VARIABLE:
-            case HASH:
-            case MEDIA_SYM:
-            case KEY_FRAME_SYM:
-                ifContentStatement();
-                break;
-            case FONT_FACE_SYM:
-                fontFace();
-                break;
-            case PAGE_SYM:
-                page();
-                break;
-            default:
-                jj_la1[136] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-        }
-        jj_consume_token(RBRACE);
-        label_93: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[137] = jj_gen;
-                break label_93;
-            }
-            jj_consume_token(S);
-        }
-        documentHandler.endMixinDirective(name, args);
-    }
-
-    final public ArrayList<VariableNode> arglist() throws ParseException {
-        ArrayList<VariableNode> args = new ArrayList<VariableNode>();
-        VariableNode arg;
-        boolean hasNonOptionalArgument = false;
-        arg = mixinArg();
-        label_94: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COMMA:
-                ;
-                break;
-            default:
-                jj_la1[138] = jj_gen;
-                break label_94;
-            }
-            jj_consume_token(COMMA);
-            label_95: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[139] = jj_gen;
-                    break label_95;
-                }
-                jj_consume_token(S);
-            }
-            hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg,
-                    hasNonOptionalArgument);
-            args.add(arg);
-            arg = mixinArg();
-        }
-        hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg,
-                hasNonOptionalArgument);
-        args.add(arg);
-        {
-            if (true) {
-                return args;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    boolean checkMixinForNonOptionalArguments(VariableNode arg,
-            boolean hasNonOptionalArguments) throws ParseException {
-        boolean currentArgHasArguments = arg.getExpr() != null
-                && arg.getExpr().getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE
-                && arg.getExpr().getNextLexicalUnit() != null;
-
-        if (currentArgHasArguments) {
-            if (hasNonOptionalArguments) {
-                throw new ParseException("Sass Error: Required argument $"
-                        + arg.getName()
-                        + " must come before any optional arguments.");
-            }
-            return hasNonOptionalArguments;
-        } else {
-            return true;
-        }
-    }
-
-    final public VariableNode mixinArg() throws ParseException {
-        String name;
-        Token variable = null;
-        LexicalUnitImpl first = null;
-        LexicalUnitImpl prev = null;
-        LexicalUnitImpl next = null;
-        name = variableName();
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COLON:
-        case VARIABLE:
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COLON:
-                jj_consume_token(COLON);
-                label_96: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[140] = jj_gen;
-                        break label_96;
-                    }
-                    jj_consume_token(S);
-                }
-                first = nonVariableTerm(null);
-                prev = first;
-                label_97: while (true) {
-                    if (jj_2_5(3)) {
-                        ;
-                    } else {
-                        break label_97;
-                    }
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case COMMA:
-                        jj_consume_token(COMMA);
-                        label_98: while (true) {
-                            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                            case S:
-                                ;
-                                break;
-                            default:
-                                jj_la1[141] = jj_gen;
-                                break label_98;
-                            }
-                            jj_consume_token(S);
-                        }
-                        break;
-                    default:
-                        jj_la1[142] = jj_gen;
-                        ;
-                    }
-                    prev = nonVariableTerm(prev);
-                }
-                break;
-            case VARIABLE:
-                variable = jj_consume_token(VARIABLE);
-                first = LexicalUnitImpl.createVariable(token.beginLine,
-                        token.beginColumn, prev, variable.image);
-                break;
-            default:
-                jj_la1[143] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            break;
-        default:
-            jj_la1[144] = jj_gen;
-            ;
-        }
-        VariableNode arg = new VariableNode(name, first, false);
-        {
-            if (true) {
-                return arg;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public ArrayList<LexicalUnitImpl> argValuelist()
-            throws ParseException {
-        ArrayList<LexicalUnitImpl> args = new ArrayList<LexicalUnitImpl>();
-        LexicalUnitImpl first = null;
-        LexicalUnitImpl next = null;
-        LexicalUnitImpl prev = null;
-        first = term(null);
-        args.add(first);
-        prev = first;
-        label_99: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case MINUS:
-            case DOT:
-            case COLON:
-            case TO:
-            case THROUGH:
-            case FROM:
-            case STRING:
-            case IDENT:
-            case NUMBER:
-            case URL:
-            case VARIABLE:
-            case PERCENTAGE:
-            case PT:
-            case MM:
-            case CM:
-            case PC:
-            case IN:
-            case PX:
-            case EMS:
-            case LEM:
-            case REM:
-            case EXS:
-            case DEG:
-            case RAD:
-            case GRAD:
-            case MS:
-            case SECOND:
-            case HZ:
-            case KHZ:
-            case DIMEN:
-            case HASH:
-            case UNICODERANGE:
-            case FUNCTION:
-                ;
-                break;
-            default:
-                jj_la1[145] = jj_gen;
-                break label_99;
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COLON:
-                jj_consume_token(COLON);
-                label_100: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[146] = jj_gen;
-                        break label_100;
-                    }
-                    jj_consume_token(S);
-                }
-                break;
-            default:
-                jj_la1[147] = jj_gen;
-                ;
-            }
-            next = term(prev);
-            prev.setNextLexicalUnit(next);
-            prev = next;
-        }
-        label_101: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case COMMA:
-                ;
-                break;
-            default:
-                jj_la1[148] = jj_gen;
-                break label_101;
-            }
-            jj_consume_token(COMMA);
-            label_102: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[149] = jj_gen;
-                    break label_102;
-                }
-                jj_consume_token(S);
-            }
-            first = term(null);
-            args.add(first);
-            prev = first;
-            label_103: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case PLUS:
-                case MINUS:
-                case DOT:
-                case COLON:
-                case TO:
-                case THROUGH:
-                case FROM:
-                case STRING:
-                case IDENT:
-                case NUMBER:
-                case URL:
-                case VARIABLE:
-                case PERCENTAGE:
-                case PT:
-                case MM:
-                case CM:
-                case PC:
-                case IN:
-                case PX:
-                case EMS:
-                case LEM:
-                case REM:
-                case EXS:
-                case DEG:
-                case RAD:
-                case GRAD:
-                case MS:
-                case SECOND:
-                case HZ:
-                case KHZ:
-                case DIMEN:
-                case HASH:
-                case UNICODERANGE:
-                case FUNCTION:
-                    ;
-                    break;
-                default:
-                    jj_la1[150] = jj_gen;
-                    break label_103;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case COLON:
-                    jj_consume_token(COLON);
-                    label_104: while (true) {
-                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                        case S:
-                            ;
-                            break;
-                        default:
-                            jj_la1[151] = jj_gen;
-                            break label_104;
-                        }
-                        jj_consume_token(S);
-                    }
-                    break;
-                default:
-                    jj_la1[152] = jj_gen;
-                    ;
-                }
-                next = term(prev);
-                prev.setNextLexicalUnit(next);
-                prev = next;
-            }
-        }
-        {
-            if (true) {
-                return args;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void includeDirective() throws ParseException {
-        String name;
-        ArrayList<LexicalUnitImpl> args = null;
-        jj_consume_token(INCLUDE_SYM);
-        label_105: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[153] = jj_gen;
-                break label_105;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case INTERPOLATION:
-        case IDENT:
-            name = property();
-            break;
-        case VARIABLE:
-            name = variableName();
-            name = "$" + name;
-            break;
-        case FUNCTION:
-            name = functionName();
-            args = argValuelist();
-            jj_consume_token(RPARAN);
-            break;
-        default:
-            jj_la1[154] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        label_106: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[155] = jj_gen;
-                break label_106;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case SEMICOLON:
-            label_107: while (true) {
-                jj_consume_token(SEMICOLON);
-                label_108: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[156] = jj_gen;
-                        break label_108;
-                    }
-                    jj_consume_token(S);
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case SEMICOLON:
-                    ;
-                    break;
-                default:
-                    jj_la1[157] = jj_gen;
-                    break label_107;
-                }
-            }
-            documentHandler.includeDirective(name, args);
-            break;
-        case LBRACE:
-            jj_consume_token(LBRACE);
-            label_109: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[158] = jj_gen;
-                    break label_109;
-                }
-                jj_consume_token(S);
-            }
-            documentHandler.startIncludeContentBlock(name);
-            label_110: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case PLUS:
-                case PRECEDES:
-                case SIBLING:
-                case LBRACKET:
-                case ANY:
-                case PARENT:
-                case DOT:
-                case COLON:
-                case INTERPOLATION:
-                case DEBUG_SYM:
-                case WARN_SYM:
-                case IDENT:
-                case HASH:
-                    ;
-                    break;
-                default:
-                    jj_la1[159] = jj_gen;
-                    break label_110;
-                }
-                styleRuleOrDeclarationOrNestedProperties();
-            }
-            jj_consume_token(RBRACE);
-            label_111: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[160] = jj_gen;
-                    break label_111;
-                }
-                jj_consume_token(S);
-            }
-            documentHandler.endIncludeContentBlock();
-            break;
-        default:
-            jj_la1[161] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-    }
-
-    final public String interpolation() throws ParseException {
-        Token n;
-        n = jj_consume_token(INTERPOLATION);
-        {
-            if (true) {
-                return n.image;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void listModifyDirective() throws ParseException {
-        String list = null;
-        String remove = null;
-        String separator = null;
-        String variable = null;
-        Token n = null;
-        Token type = null;
-        // refactor, remove those 3 LOOKAHEAD(5).
-        n = jj_consume_token(VARIABLE);
-        variable = n.image;
-        label_112: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[162] = jj_gen;
-                break label_112;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(COLON);
-        label_113: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[163] = jj_gen;
-                break label_113;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case APPEND:
-            type = jj_consume_token(APPEND);
-            break;
-        case REMOVE:
-            type = jj_consume_token(REMOVE);
-            break;
-        case CONTAINS:
-            type = jj_consume_token(CONTAINS);
-            break;
-        default:
-            jj_la1[164] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        label_114: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[165] = jj_gen;
-                break label_114;
-            }
-            jj_consume_token(S);
-        }
-        list = listModifyDirectiveArgs(0);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case RPARAN:
-            jj_consume_token(RPARAN);
-            break;
-        default:
-            jj_la1[166] = jj_gen;
-            ;
-        }
-        jj_consume_token(COMMA);
-        label_115: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[167] = jj_gen;
-                break label_115;
-            }
-            jj_consume_token(S);
-        }
-        remove = listModifyDirectiveArgs(1);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COMMA:
-            jj_consume_token(COMMA);
-            label_116: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[168] = jj_gen;
-                    break label_116;
-                }
-                jj_consume_token(S);
-            }
-            n = jj_consume_token(IDENT);
-            separator = n.image;
-            label_117: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[169] = jj_gen;
-                    break label_117;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[170] = jj_gen;
-            ;
-        }
-        jj_consume_token(RPARAN);
-        switch (type.kind) {
-        case APPEND:
-            documentHandler.appendDirective(variable, list, remove, separator);
-            break;
-        case REMOVE:
-            documentHandler.removeDirective(variable, list, remove, separator);
-            break;
-        case CONTAINS:
-            if (variable == null) {
-                variable = "$var_" + UUID.randomUUID();
-            }
-            documentHandler
-                    .containsDirective(variable, list, remove, separator);
-            break;
-        default:
-            break;
-        }
-        label_118: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[171] = jj_gen;
-                break label_118;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(SEMICOLON);
-        label_119: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[172] = jj_gen;
-                break label_119;
-            }
-            jj_consume_token(S);
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void appendDirective() throws ParseException {
-        String list = null;
-        String remove = null;
-        String separator = null;
-        String variable = null;
-        Token n = null;
-        n = jj_consume_token(VARIABLE);
-        variable = n.image;
-        label_120: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[173] = jj_gen;
-                break label_120;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(COLON);
-        label_121: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[174] = jj_gen;
-                break label_121;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(APPEND);
-        label_122: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[175] = jj_gen;
-                break label_122;
-            }
-            jj_consume_token(S);
-        }
-        list = listModifyDirectiveArgs(0);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case RPARAN:
-            jj_consume_token(RPARAN);
-            break;
-        default:
-            jj_la1[176] = jj_gen;
-            ;
-        }
-        jj_consume_token(COMMA);
-        label_123: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[177] = jj_gen;
-                break label_123;
-            }
-            jj_consume_token(S);
-        }
-        remove = listModifyDirectiveArgs(1);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COMMA:
-            jj_consume_token(COMMA);
-            label_124: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[178] = jj_gen;
-                    break label_124;
-                }
-                jj_consume_token(S);
-            }
-            n = jj_consume_token(IDENT);
-            separator = n.image;
-            label_125: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[179] = jj_gen;
-                    break label_125;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[180] = jj_gen;
-            ;
-        }
-        jj_consume_token(RPARAN);
-        documentHandler.appendDirective(variable, list, remove, separator);
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void removeDirective() throws ParseException {
-        String list = null;
-        String remove = null;
-        String separator = null;
-        String variable = null;
-        Token n = null;
-        n = jj_consume_token(VARIABLE);
-        variable = n.image;
-        label_126: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[181] = jj_gen;
-                break label_126;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(COLON);
-        label_127: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[182] = jj_gen;
-                break label_127;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(REMOVE);
-        label_128: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[183] = jj_gen;
-                break label_128;
-            }
-            jj_consume_token(S);
-        }
-        list = listModifyDirectiveArgs(0);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case RPARAN:
-            jj_consume_token(RPARAN);
-            break;
-        default:
-            jj_la1[184] = jj_gen;
-            ;
-        }
-        jj_consume_token(COMMA);
-        label_129: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[185] = jj_gen;
-                break label_129;
-            }
-            jj_consume_token(S);
-        }
-        remove = listModifyDirectiveArgs(1);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COMMA:
-            jj_consume_token(COMMA);
-            label_130: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[186] = jj_gen;
-                    break label_130;
-                }
-                jj_consume_token(S);
-            }
-            n = jj_consume_token(IDENT);
-            separator = n.image;
-            label_131: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[187] = jj_gen;
-                    break label_131;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[188] = jj_gen;
-            ;
-        }
-        jj_consume_token(RPARAN);
-        documentHandler.removeDirective(variable, list, remove, separator);
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public String containsDirective() throws ParseException {
-        String list = null;
-        String remove = null;
-        String separator = null;
-        String variable = null;
-        Token n = null;
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case VARIABLE:
-            n = jj_consume_token(VARIABLE);
-            variable = n.image;
-            label_132: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[189] = jj_gen;
-                    break label_132;
-                }
-                jj_consume_token(S);
-            }
-            jj_consume_token(COLON);
-            label_133: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[190] = jj_gen;
-                    break label_133;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[191] = jj_gen;
-            ;
-        }
-        jj_consume_token(CONTAINS);
-        label_134: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[192] = jj_gen;
-                break label_134;
-            }
-            jj_consume_token(S);
-        }
-        list = listModifyDirectiveArgs(0);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case RPARAN:
-            jj_consume_token(RPARAN);
-            break;
-        default:
-            jj_la1[193] = jj_gen;
-            ;
-        }
-        jj_consume_token(COMMA);
-        label_135: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[194] = jj_gen;
-                break label_135;
-            }
-            jj_consume_token(S);
-        }
-        remove = listModifyDirectiveArgs(1);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COMMA:
-            jj_consume_token(COMMA);
-            label_136: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[195] = jj_gen;
-                    break label_136;
-                }
-                jj_consume_token(S);
-            }
-            n = jj_consume_token(IDENT);
-            separator = n.image;
-            label_137: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[196] = jj_gen;
-                    break label_137;
-                }
-                jj_consume_token(S);
-            }
-            break;
-        default:
-            jj_la1[197] = jj_gen;
-            ;
-        }
-        jj_consume_token(RPARAN);
-        /*
-         * if it is not in the form like
-         * "$contains : contains($items, .v-button);"for example in @if, like
-         * "@if (contains(a b c, b))", then create a tempvariable for contains(a
-         * b c, b);
-         */
-        if (variable == null) {
-            variable = "$var_" + UUID.randomUUID();
-        }
-        documentHandler.containsDirective(variable, list, remove, separator);
-        {
-            if (true) {
-                return variable;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    String listModifyDirectiveArgs(int nest) throws ParseException {
-        String list = "";
-        int nesting = nest;
-        Token t = null;
-
-        while (true) {
-            t = getToken(1);
-            String s = t.image;
-            if (t.kind == VARIABLE || t.kind == IDENT) {
-                list += s;
-            } else if (s.toLowerCase().equals("auto")
-                    || s.toLowerCase().equals("space")
-                    || s.toLowerCase().equals("comma")) {
-                int i = 2;
-                Token temp = getToken(i);
-                boolean isLast = true;
-                while (temp.kind != SEMICOLON) {
-                    if (temp.kind != RPARAN || temp.kind != S) {
-                        isLast = false;
-                    }
-                    i++;
-                    temp = getToken(i);
-                }
-
-                if (isLast) {
-                    return list;
-                }
-            } else if (t.kind == STRING) {
-                list += s.substring(1, s.length()).substring(0, s.length() - 2);
-
-            } else if (t.kind == LPARAN) {
-                nesting++;
-                if (nesting > nest + 1) {
-                    throw new CSSParseException(
-                            "Only one ( ) pair per parameter allowed",
-                            getLocator());
-                }
-            } else if (t.kind == RPARAN) {
-                nesting--;
-                if (nesting == 0) {
-                    return list;
-                }
-            } else if (t.kind == COMMA) {
-                if (nesting == nest) {
-                    return list;
-                } else {
-                    list += ",";
-                }
-
-            } else if (t.kind == S) {
-                list += " ";
-            } else if (t.kind == LBRACE) {
-                throw new CSSParseException("Invalid token,'{' found",
-                        getLocator());
-            }
-
-            getNextToken();
-        }
-    }
-
-    final public Node returnDirective() throws ParseException {
-        String raw;
-        raw = skipStatement();
-        {
-            if (true) {
-                return null;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void debuggingDirective() throws ParseException {
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case DEBUG_SYM:
-            debugDirective();
-            break;
-        case WARN_SYM:
-            warnDirective();
-            break;
-        default:
-            jj_la1[198] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-    }
-
-    final public void debugDirective() throws ParseException {
-        jj_consume_token(DEBUG_SYM);
-        String content = skipStatementUntilSemiColon();
-        // TODO should evaluate the content expression, call
-        // documentHandler.debugDirective() etc.
-        System.out.println(content);
-        label_138: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[199] = jj_gen;
-                break label_138;
-            }
-            jj_consume_token(S);
-        }
-    }
-
-    final public void warnDirective() throws ParseException {
-        jj_consume_token(WARN_SYM);
-        String content = skipStatementUntilSemiColon();
-        // TODO should evaluate the content expression, call
-        // documentHandler.warnDirective() etc.
-        System.err.println(content);
-        label_139: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[200] = jj_gen;
-                break label_139;
-            }
-            jj_consume_token(S);
-        }
-    }
-
-    final public Node forDirective() throws ParseException {
-        String var;
-        String from;
-        String to;
-        boolean exclusive;
-        String body;
-        Token tok;
-        var = variableName();
-        int[] toThrough = { TO, THROUGH };
-        from = skipStatementUntil(toThrough);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case TO:
-            tok = jj_consume_token(TO);
-            exclusive = true;
-            break;
-        case THROUGH:
-            tok = jj_consume_token(THROUGH);
-            exclusive = false;
-            break;
-        default:
-            jj_la1[201] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        to = skipStatementUntilLeftBrace();
-        label_140: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[202] = jj_gen;
-                break label_140;
-            }
-            jj_consume_token(S);
-        }
-        body = skipStatement();
-        {
-            if (true) {
-                return documentHandler.forDirective(var, from, to, exclusive,
-                        body);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public Node whileDirective() throws ParseException {
-        String condition;
-        String body;
-        condition = skipStatementUntilLeftBrace();
-        body = skipStatement();
-        {
-            if (true) {
-                return documentHandler.whileDirective(condition, body);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public void extendDirective() throws ParseException {
-        ArrayList<String> list;
-        jj_consume_token(EXTEND_SYM);
-        label_141: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[203] = jj_gen;
-                break label_141;
-            }
-            jj_consume_token(S);
-        }
-        list = selectorList();
-        label_142: while (true) {
-            jj_consume_token(SEMICOLON);
-            label_143: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[204] = jj_gen;
-                    break label_143;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case SEMICOLON:
-                ;
-                break;
-            default:
-                jj_la1[205] = jj_gen;
-                break label_142;
-            }
-        }
-        documentHandler.extendDirective(list);
-    }
-
-    final public void contentDirective() throws ParseException {
-        jj_consume_token(CONTENT_SYM);
-        label_144: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[206] = jj_gen;
-                break label_144;
-            }
-            jj_consume_token(S);
-        }
-        label_145: while (true) {
-            jj_consume_token(SEMICOLON);
-            label_146: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[207] = jj_gen;
-                    break label_146;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case SEMICOLON:
-                ;
-                break;
-            default:
-                jj_la1[208] = jj_gen;
-                break label_145;
-            }
-        }
-        documentHandler.contentDirective();
-    }
-
-    Node importDirective() throws ParseException {
-        return null;
-    }
-
-    Node charsetDirective() throws ParseException {
-        return null;
-    }
-
-    Node mozDocumentDirective() throws ParseException {
-        return null;
-    }
-
-    Node supportsDirective() throws ParseException {
-        return null;
-    }
-
-    final public void nestedProperties() throws ParseException {
-        String name;
-        LexicalUnit exp;
-        name = property();
-        jj_consume_token(COLON);
-        label_147: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[209] = jj_gen;
-                break label_147;
-            }
-            jj_consume_token(S);
-        }
-        jj_consume_token(LBRACE);
-        label_148: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[210] = jj_gen;
-                break label_148;
-            }
-            jj_consume_token(S);
-        }
-        documentHandler.startNestedProperties(name);
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case INTERPOLATION:
-        case IDENT:
-            declaration();
-            break;
-        default:
-            jj_la1[211] = jj_gen;
-            ;
-        }
-        label_149: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case SEMICOLON:
-                ;
-                break;
-            default:
-                jj_la1[212] = jj_gen;
-                break label_149;
-            }
-            jj_consume_token(SEMICOLON);
-            label_150: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[213] = jj_gen;
-                    break label_150;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case INTERPOLATION:
-            case IDENT:
-                declaration();
-                break;
-            default:
-                jj_la1[214] = jj_gen;
-                ;
-            }
-        }
-        jj_consume_token(RBRACE);
-        documentHandler.endNestedProperties(name);
-        label_151: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[215] = jj_gen;
-                break label_151;
-            }
-            jj_consume_token(S);
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void styleRuleOrDeclarationOrNestedProperties()
-            throws ParseException {
-        try {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case DEBUG_SYM:
-            case WARN_SYM:
-                debuggingDirective();
-                break;
-            default:
-                jj_la1[216] = jj_gen;
-                if (jj_2_6(2147483647)) {
-                    styleRule();
-                } else if (jj_2_7(3)) {
-                    declarationOrNestedProperties();
-                } else {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case PLUS:
-                    case PRECEDES:
-                    case SIBLING:
-                    case LBRACKET:
-                    case ANY:
-                    case PARENT:
-                    case DOT:
-                    case COLON:
-                    case INTERPOLATION:
-                    case IDENT:
-                    case HASH:
-                        styleRule();
-                        break;
-                    default:
-                        jj_la1[217] = jj_gen;
-                        jj_consume_token(-1);
-                        throw new ParseException();
-                    }
-                }
-            }
-        } catch (JumpException e) {
-            skipAfterExpression();
-            // reportWarningSkipText(getLocator(), skipAfterExpression());
-
-        } catch (ParseException e) {
-            if (errorHandler != null) {
-                if (e.currentToken != null) {
-                    LocatorImpl li = new LocatorImpl(this,
-                            e.currentToken.next.beginLine,
-                            e.currentToken.next.beginColumn - 1);
-                    reportError(li, e);
-                } else {
-                    reportError(getLocator(), e);
-                }
-                skipAfterExpression();
-                /*
-                 * LocatorImpl loc = (LocatorImpl) getLocator(); loc.column--;
-                 * reportWarningSkipText(loc, skipAfterExpression());
-                 */
-            } else {
-                skipAfterExpression();
-            }
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void declarationOrNestedProperties() throws ParseException {
-        boolean important = false;
-        String name;
-        LexicalUnitImpl exp;
-        Token save;
-        String comment = null;
-        try {
-            name = property();
-            save = token;
-            jj_consume_token(COLON);
-            label_152: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[218] = jj_gen;
-                    break label_152;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case MINUS:
-            case DOT:
-            case TO:
-            case THROUGH:
-            case FROM:
-            case STRING:
-            case IDENT:
-            case NUMBER:
-            case URL:
-            case VARIABLE:
-            case PERCENTAGE:
-            case PT:
-            case MM:
-            case CM:
-            case PC:
-            case IN:
-            case PX:
-            case EMS:
-            case LEM:
-            case REM:
-            case EXS:
-            case DEG:
-            case RAD:
-            case GRAD:
-            case MS:
-            case SECOND:
-            case HZ:
-            case KHZ:
-            case DIMEN:
-            case HASH:
-            case UNICODERANGE:
-            case FUNCTION:
-                exp = expr();
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case IMPORTANT_SYM:
-                    important = prio();
-                    break;
-                default:
-                    jj_la1[219] = jj_gen;
-                    ;
-                }
-                Token next = getToken(1);
-                if (next.kind == SEMICOLON || next.kind == RBRACE) {
-                    while (next.kind == SEMICOLON) {
-                        skipStatement();
-                        next = getToken(1);
-                    }
-                    // only add special token kept for sprites '/**'
-                    if (token.specialToken != null
-                            && token.specialToken != null
-                            && token.specialToken.image.startsWith("/**")) {
-                        documentHandler.property(name, exp, important,
-                                token.specialToken.image);
-                    } else {
-                        documentHandler.property(name, exp, important, null);
-                    }
-                }
-                break;
-            case LBRACE:
-                jj_consume_token(LBRACE);
-                label_153: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[220] = jj_gen;
-                        break label_153;
-                    }
-                    jj_consume_token(S);
-                }
-                documentHandler.startNestedProperties(name);
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case INTERPOLATION:
-                case IDENT:
-                    declaration();
-                    break;
-                default:
-                    jj_la1[221] = jj_gen;
-                    ;
-                }
-                label_154: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case SEMICOLON:
-                        ;
-                        break;
-                    default:
-                        jj_la1[222] = jj_gen;
-                        break label_154;
-                    }
-                    jj_consume_token(SEMICOLON);
-                    label_155: while (true) {
-                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                        case S:
-                            ;
-                            break;
-                        default:
-                            jj_la1[223] = jj_gen;
-                            break label_155;
-                        }
-                        jj_consume_token(S);
-                    }
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case INTERPOLATION:
-                    case IDENT:
-                        declaration();
-                        break;
-                    default:
-                        jj_la1[224] = jj_gen;
-                        ;
-                    }
-                }
-                jj_consume_token(RBRACE);
-                label_156: while (true) {
-                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                    case S:
-                        ;
-                        break;
-                    default:
-                        jj_la1[225] = jj_gen;
-                        break label_156;
-                    }
-                    jj_consume_token(S);
-                }
-                documentHandler.endNestedProperties(name);
-                break;
-            default:
-                jj_la1[226] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-        } catch (JumpException e) {
-            skipAfterExpression();
-            // reportWarningSkipText(getLocator(), skipAfterExpression());
-
-        } catch (NumberFormatException e) {
-            if (errorHandler != null) {
-                errorHandler.error(new CSSParseException("Invalid number "
-                        + e.getMessage(), getLocator(), e));
-            }
-            reportWarningSkipText(getLocator(), skipAfterExpression());
-        } catch (ParseException e) {
-            if (errorHandler != null) {
-                if (e.currentToken != null) {
-                    LocatorImpl li = new LocatorImpl(this,
-                            e.currentToken.next.beginLine,
-                            e.currentToken.next.beginColumn - 1);
-                    reportError(li, e);
-                } else {
-                    reportError(getLocator(), e);
-                }
-                skipAfterExpression();
-                /*
-                 * LocatorImpl loc = (LocatorImpl) getLocator(); loc.column--;
-                 * reportWarningSkipText(loc, skipAfterExpression());
-                 */
-            } else {
-                skipAfterExpression();
-            }
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public void declaration() throws ParseException {
-        boolean important = false;
-        String name;
-        LexicalUnit exp;
-        Token save;
-        try {
-            name = property();
-            save = token;
-            jj_consume_token(COLON);
-            label_157: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[227] = jj_gen;
-                    break label_157;
-                }
-                jj_consume_token(S);
-            }
-            exp = expr();
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case IMPORTANT_SYM:
-                important = prio();
-                break;
-            default:
-                jj_la1[228] = jj_gen;
-                ;
-            }
-            documentHandler.property(name, exp, important);
-        } catch (JumpException e) {
-            skipAfterExpression();
-            // reportWarningSkipText(getLocator(), skipAfterExpression());
-
-        } catch (NumberFormatException e) {
-            if (errorHandler != null) {
-                errorHandler.error(new CSSParseException("Invalid number "
-                        + e.getMessage(), getLocator(), e));
-            }
-            reportWarningSkipText(getLocator(), skipAfterExpression());
-        } catch (ParseException e) {
-            if (errorHandler != null) {
-                if (e.currentToken != null) {
-                    LocatorImpl li = new LocatorImpl(this,
-                            e.currentToken.next.beginLine,
-                            e.currentToken.next.beginColumn - 1);
-                    reportError(li, e);
-                } else {
-                    reportError(getLocator(), e);
-                }
-                skipAfterExpression();
-                /*
-                 * LocatorImpl loc = (LocatorImpl) getLocator(); loc.column--;
-                 * reportWarningSkipText(loc, skipAfterExpression());
-                 */
-            } else {
-                skipAfterExpression();
-            }
-        }
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public boolean prio() throws ParseException {
-        jj_consume_token(IMPORTANT_SYM);
-        label_158: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[229] = jj_gen;
-                break label_158;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return true;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public boolean guarded() throws ParseException {
-        jj_consume_token(GUARDED_SYM);
-        label_159: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[230] = jj_gen;
-                break label_159;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return true;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public LexicalUnitImpl operator(LexicalUnitImpl prev)
-            throws ParseException {
-        Token n;
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case COMMA:
-            /*
-             * (comments copied from basic_arithmetics.scss)supports: 1.
-             * standard arithmetic operations (+, -, *, /, %) 2. / is treated as
-             * css operator, unless one of its operands is variable or there is
-             * another binary arithmetic operatorlimits: 1. cannot mix
-             * arithmetic and css operations, e.g. "margin: 1px + 3px 2px" will
-             * fail 2. space between add and minus operator and their following
-             * operand is mandatory. e.g. "1 + 2" is valid, "1+2" is not 3.
-             * parenthesis is not supported now.
-             */
-            n = jj_consume_token(COMMA);
-            label_160: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[231] = jj_gen;
-                    break label_160;
-                }
-                jj_consume_token(S);
-            }
-            {
-                if (true) {
-                    return LexicalUnitImpl.createComma(n.beginLine,
-                            n.beginColumn, prev);
-                }
-            }
-            break;
-        case DIV:
-            n = jj_consume_token(DIV);
-            label_161: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[232] = jj_gen;
-                    break label_161;
-                }
-                jj_consume_token(S);
-            }
-            {
-                if (true) {
-                    return LexicalUnitImpl.createSlash(n.beginLine,
-                            n.beginColumn, prev);
-                }
-            }
-            break;
-        case ANY:
-            n = jj_consume_token(ANY);
-            label_162: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[233] = jj_gen;
-                    break label_162;
-                }
-                jj_consume_token(S);
-            }
-            {
-                if (true) {
-                    return LexicalUnitImpl.createMultiply(n.beginLine,
-                            n.beginColumn, prev);
-                }
-            }
-            break;
-        case MOD:
-            n = jj_consume_token(MOD);
-            label_163: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[234] = jj_gen;
-                    break label_163;
-                }
-                jj_consume_token(S);
-            }
-            {
-                if (true) {
-                    return LexicalUnitImpl.createModulo(n.beginLine,
-                            n.beginColumn, prev);
-                }
-            }
-            break;
-        case PLUS:
-            n = jj_consume_token(PLUS);
-            label_164: while (true) {
-                jj_consume_token(S);
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[235] = jj_gen;
-                    break label_164;
-                }
-            }
-            {
-                if (true) {
-                    return LexicalUnitImpl.createAdd(n.beginLine,
-                            n.beginColumn, prev);
-                }
-            }
-            break;
-        case MINUS:
-            n = jj_consume_token(MINUS);
-            label_165: while (true) {
-                jj_consume_token(S);
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[236] = jj_gen;
-                    break label_165;
-                }
-            }
-            {
-                if (true) {
-                    return LexicalUnitImpl.createMinus(n.beginLine,
-                            n.beginColumn, prev);
-                }
-            }
-            break;
-        default:
-            jj_la1[237] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public LexicalUnitImpl expr() throws ParseException {
-        LexicalUnitImpl first, res;
-        char op;
-        first = term(null);
-        res = first;
-        label_166: while (true) {
-            if (jj_2_8(2)) {
-                ;
-            } else {
-                break label_166;
-            }
-            if (jj_2_9(2)) {
-                res = operator(res);
-            } else {
-                ;
-            }
-            res = term(res);
-        }
-        {
-            if (true) {
-                return first;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public char unaryOperator() throws ParseException {
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case MINUS:
-            jj_consume_token(MINUS);
-            {
-                if (true) {
-                    return '-';
-                }
-            }
-            break;
-        case PLUS:
-            jj_consume_token(PLUS);
-            {
-                if (true) {
-                    return '+';
-                }
-            }
-            break;
-        default:
-            jj_la1[238] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public LexicalUnitImpl term(LexicalUnitImpl prev)
-            throws ParseException {
-        LexicalUnitImpl result = null;
-        Token n = null;
-        char op = ' ';
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case PLUS:
-        case MINUS:
-        case DOT:
-        case TO:
-        case THROUGH:
-        case FROM:
-        case STRING:
-        case IDENT:
-        case NUMBER:
-        case URL:
-        case PERCENTAGE:
-        case PT:
-        case MM:
-        case CM:
-        case PC:
-        case IN:
-        case PX:
-        case EMS:
-        case LEM:
-        case REM:
-        case EXS:
-        case DEG:
-        case RAD:
-        case GRAD:
-        case MS:
-        case SECOND:
-        case HZ:
-        case KHZ:
-        case DIMEN:
-        case HASH:
-        case UNICODERANGE:
-        case FUNCTION:
-            result = nonVariableTerm(prev);
-            break;
-        case VARIABLE:
-            result = variableTerm(prev);
-            break;
-        default:
-            jj_la1[239] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        {
-            if (true) {
-                return result;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public LexicalUnitImpl variableTerm(LexicalUnitImpl prev)
-            throws ParseException {
-        LexicalUnitImpl result = null;
-        String varName = "";
-        varName = variableName();
-        result = LexicalUnitImpl.createVariable(token.beginLine,
-                token.beginColumn, prev, varName);
-        {
-            if (true) {
-                return result;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public LexicalUnitImpl nonVariableTerm(LexicalUnitImpl prev)
-            throws ParseException {
-        LexicalUnitImpl result = null;
-        Token n = null;
-        char op = ' ';
-        String varName;
-        String s = "";
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case PLUS:
-        case MINUS:
-        case NUMBER:
-        case PERCENTAGE:
-        case PT:
-        case MM:
-        case CM:
-        case PC:
-        case IN:
-        case PX:
-        case EMS:
-        case LEM:
-        case REM:
-        case EXS:
-        case DEG:
-        case RAD:
-        case GRAD:
-        case MS:
-        case SECOND:
-        case HZ:
-        case KHZ:
-        case DIMEN:
-        case FUNCTION:
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case PLUS:
-            case MINUS:
-                op = unaryOperator();
-                break;
-            default:
-                jj_la1[240] = jj_gen;
-                ;
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case NUMBER:
-                n = jj_consume_token(NUMBER);
-                result = LexicalUnitImpl.createNumber(n.beginLine,
-                        n.beginColumn, prev, number(op, n, 0));
-                break;
-            case PERCENTAGE:
-                n = jj_consume_token(PERCENTAGE);
-                result = LexicalUnitImpl.createPercentage(n.beginLine,
-                        n.beginColumn, prev, number(op, n, 1));
-                break;
-            case PT:
-                n = jj_consume_token(PT);
-                result = LexicalUnitImpl.createPT(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case CM:
-                n = jj_consume_token(CM);
-                result = LexicalUnitImpl.createCM(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case MM:
-                n = jj_consume_token(MM);
-                result = LexicalUnitImpl.createMM(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case PC:
-                n = jj_consume_token(PC);
-                result = LexicalUnitImpl.createPC(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case IN:
-                n = jj_consume_token(IN);
-                result = LexicalUnitImpl.createIN(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case PX:
-                n = jj_consume_token(PX);
-                result = LexicalUnitImpl.createPX(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case EMS:
-                n = jj_consume_token(EMS);
-                result = LexicalUnitImpl.createEMS(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case LEM:
-                n = jj_consume_token(LEM);
-                result = LexicalUnitImpl.createLEM(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 3));
-                break;
-            case REM:
-                n = jj_consume_token(REM);
-                result = LexicalUnitImpl.createREM(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 3));
-                break;
-            case EXS:
-                n = jj_consume_token(EXS);
-                result = LexicalUnitImpl.createEXS(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case DEG:
-                n = jj_consume_token(DEG);
-                result = LexicalUnitImpl.createDEG(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 3));
-                break;
-            case RAD:
-                n = jj_consume_token(RAD);
-                result = LexicalUnitImpl.createRAD(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 3));
-                break;
-            case GRAD:
-                n = jj_consume_token(GRAD);
-                result = LexicalUnitImpl.createGRAD(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 3));
-                break;
-            case SECOND:
-                n = jj_consume_token(SECOND);
-                result = LexicalUnitImpl.createS(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 1));
-                break;
-            case MS:
-                n = jj_consume_token(MS);
-                result = LexicalUnitImpl.createMS(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case HZ:
-                n = jj_consume_token(HZ);
-                result = LexicalUnitImpl.createHZ(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 2));
-                break;
-            case KHZ:
-                n = jj_consume_token(KHZ);
-                result = LexicalUnitImpl.createKHZ(n.beginLine, n.beginColumn,
-                        prev, number(op, n, 3));
-                break;
-            case DIMEN:
-                n = jj_consume_token(DIMEN);
-                s = n.image;
-                int i = 0;
-                while (i < s.length()
-                        && (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.'))) {
-                    i++;
-                }
-                result = LexicalUnitImpl.createDimen(n.beginLine,
-                        n.beginColumn, prev, Float.valueOf(s.substring(0, i))
-                                .floatValue(), s.substring(i));
-                break;
-            case FUNCTION:
-                result = function(op, prev);
-                break;
-            default:
-                jj_la1[241] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            break;
-        case DOT:
-        case TO:
-        case THROUGH:
-        case FROM:
-        case STRING:
-        case IDENT:
-        case URL:
-        case HASH:
-        case UNICODERANGE:
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case STRING:
-                n = jj_consume_token(STRING);
-                result = LexicalUnitImpl.createString(n.beginLine,
-                        n.beginColumn, prev,
-                        convertStringIndex(n.image, 1, n.image.length() - 1));
-                break;
-            case DOT:
-            case TO:
-            case THROUGH:
-            case FROM:
-            case IDENT:
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case DOT:
-                    jj_consume_token(DOT);
-                    s += ".";
-                    break;
-                default:
-                    jj_la1[242] = jj_gen;
-                    ;
-                }
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case IDENT:
-                    n = jj_consume_token(IDENT);
-                    break;
-                case TO:
-                    n = jj_consume_token(TO);
-                    break;
-                case THROUGH:
-                    n = jj_consume_token(THROUGH);
-                    break;
-                case FROM:
-                    n = jj_consume_token(FROM);
-                    break;
-                default:
-                    jj_la1[243] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                }
-                s += convertIdent(n.image);
-                if ("inherit".equals(s)) {
-                    result = LexicalUnitImpl.createInherit(n.beginLine,
-                            n.beginColumn, prev);
-                } else {
-                    result = LexicalUnitImpl.createIdent(n.beginLine,
-                            n.beginColumn, prev, convertIdent(n.image));
-                }
-
-                /*
-                 * / Auto correction code used in the CSS Validator but must not
-                 * be used by a conformant CSS2 parser. Common error : H1 {
-                 * color : black background : white }
-                 * 
-                 * Token t = getToken(1); Token semicolon = new Token();
-                 * semicolon.kind = SEMICOLON; semicolon.image = ";"; if (t.kind
-                 * == COLON) { // @@SEEME. (generate a warning?) // @@SEEME if
-                 * expression is a single ident, generate an error ?
-                 * rejectToken(semicolon);
-                 * 
-                 * result = prev; } /
-                 */
-
-                break;
-            case HASH:
-                result = hexcolor(prev);
-                break;
-            case URL:
-                result = url(prev);
-                break;
-            case UNICODERANGE:
-                result = unicode(prev);
-                break;
-            default:
-                jj_la1[244] = jj_gen;
-                jj_consume_token(-1);
-                throw new ParseException();
-            }
-            break;
-        default:
-            jj_la1[245] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-        }
-        label_167: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[246] = jj_gen;
-                break label_167;
-            }
-            jj_consume_token(S);
-        }
-        {
-            if (true) {
-                return result;
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * Handle all CSS2 functions.
-     * 
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public LexicalUnitImpl function(char operator, LexicalUnitImpl prev)
-            throws ParseException {
-        Token n;
-        LexicalUnit params = null;
-        n = jj_consume_token(FUNCTION);
-        label_168: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[247] = jj_gen;
-                break label_168;
-            }
-            jj_consume_token(S);
-        }
-        String fname = convertIdent(n.image);
-        if ("alpha(".equals(fname)) {
-            String body = skipStatementUntilSemiColon();
-            {
-                if (true) {
-                    return LexicalUnitImpl.createIdent(n.beginLine,
-                            n.beginColumn, null, "alpha(" + body);
-                }
-            }
-        } else if ("expression(".equals(fname)) {
-            String body = skipStatementUntilSemiColon();
-            {
-                if (true) {
-                    return LexicalUnitImpl.createIdent(n.beginLine,
-                            n.beginColumn, null, "expression(" + body);
-                }
-            }
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case PLUS:
-        case MINUS:
-        case DOT:
-        case TO:
-        case THROUGH:
-        case FROM:
-        case STRING:
-        case IDENT:
-        case NUMBER:
-        case URL:
-        case VARIABLE:
-        case PERCENTAGE:
-        case PT:
-        case MM:
-        case CM:
-        case PC:
-        case IN:
-        case PX:
-        case EMS:
-        case LEM:
-        case REM:
-        case EXS:
-        case DEG:
-        case RAD:
-        case GRAD:
-        case MS:
-        case SECOND:
-        case HZ:
-        case KHZ:
-        case DIMEN:
-        case HASH:
-        case UNICODERANGE:
-        case FUNCTION:
-            params = expr();
-            break;
-        default:
-            jj_la1[248] = jj_gen;
-            ;
-        }
-        jj_consume_token(RPARAN);
-        if (operator != ' ') {
-            {
-                if (true) {
-                    throw new CSSParseException(
-                            "invalid operator before a function.", getLocator());
-                }
-            }
-        }
-        String f = convertIdent(n.image);
-        LexicalUnitImpl l = (LexicalUnitImpl) params;
-        boolean loop = true;
-        if ("rgb(".equals(f)) {
-            // this is a RGB declaration (e.g. rgb(255, 50%, 0) )
-            int i = 0;
-            while (loop && l != null && i < 5) {
-                switch (i) {
-                case 0:
-                case 2:
-                case 4:
-                    if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER)
-                            && (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) {
-                        loop = false;
-                    }
-                    break;
-                case 1:
-                case 3:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
-                        loop = false;
-                    }
-                    break;
-                default: {
-                    if (true) {
-                        throw new ParseException("implementation error");
-                    }
-                }
-                }
-                if (loop) {
-                    l = l.getNextLexicalUnit();
-                    i++;
-                }
-            }
-            if ((i == 5) && loop && (l == null)) {
-                {
-                    if (true) {
-                        return LexicalUnitImpl.createRGBColor(n.beginLine,
-                                n.beginColumn, prev, params);
-                    }
-                }
-            } else {
-                if (errorHandler != null) {
-                    String errorText;
-                    Locator loc;
-                    if (i < 5) {
-                        if (params == null) {
-                            loc = new LocatorImpl(this, n.beginLine,
-                                    n.beginColumn - 1);
-                            errorText = "not enough parameters.";
-                        } else if (l == null) {
-                            loc = new LocatorImpl(this, n.beginLine,
-                                    n.beginColumn - 1);
-                            errorText = "not enough parameters: "
-                                    + params.toString();
-                        } else {
-                            loc = new LocatorImpl(this, l.getLineNumber(),
-                                    l.getColumnNumber());
-                            errorText = "invalid parameter: " + l.toString();
-                        }
-                    } else {
-                        loc = new LocatorImpl(this, l.getLineNumber(),
-                                l.getColumnNumber());
-                        errorText = "too many parameters: " + l.toString();
-                    }
-                    errorHandler.error(new CSSParseException(errorText, loc));
-                }
-
-                {
-                    if (true) {
-                        throw new JumpException();
-                    }
-                }
-            }
-        } else if ("counter".equals(f)) {
-            int i = 0;
-            while (loop && l != null && i < 3) {
-                switch (i) {
-                case 0:
-                case 2:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
-                        loop = false;
-                    }
-                    break;
-                case 1:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
-                        loop = false;
-                    }
-                    break;
-                default: {
-                    if (true) {
-                        throw new ParseException("implementation error");
-                    }
-                }
-                }
-                l = l.getNextLexicalUnit();
-                i++;
-            }
-            if (((i == 1) || (i == 3)) && loop && (l == null)) {
-                {
-                    if (true) {
-                        return LexicalUnitImpl.createCounter(n.beginLine,
-                                n.beginColumn, prev, params);
-                    }
-                }
-            }
-
-        } else if ("counters(".equals(f)) {
-
-            int i = 0;
-            while (loop && l != null && i < 5) {
-                switch (i) {
-                case 0:
-                case 4:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
-                        loop = false;
-                    }
-                    break;
-                case 2:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_STRING_VALUE) {
-                        loop = false;
-                    }
-                    break;
-                case 1:
-                case 3:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
-                        loop = false;
-                    }
-                    break;
-                default: {
-                    if (true) {
-                        throw new ParseException("implementation error");
-                    }
-                }
-                }
-                l = l.getNextLexicalUnit();
-                i++;
-            }
-            if (((i == 3) || (i == 5)) && loop && (l == null)) {
-                {
-                    if (true) {
-                        return LexicalUnitImpl.createCounters(n.beginLine,
-                                n.beginColumn, prev, params);
-                    }
-                }
-            }
-        } else if ("attr(".equals(f)) {
-            if ((l != null) && (l.getNextLexicalUnit() == null)
-                    && (l.getLexicalUnitType() == LexicalUnit.SAC_IDENT)) {
-                {
-                    if (true) {
-                        return LexicalUnitImpl.createAttr(l.getLineNumber(),
-                                l.getColumnNumber(), prev, l.getStringValue());
-                    }
-                }
-            }
-        } else if ("rect(".equals(f)) {
-            int i = 0;
-            while (loop && l != null && i < 7) {
-                switch (i) {
-                case 0:
-                case 2:
-                case 4:
-                case 6:
-                    switch (l.getLexicalUnitType()) {
-                    case LexicalUnit.SAC_INTEGER:
-                        if (l.getIntegerValue() != 0) {
-                            loop = false;
-                        }
-                        break;
-                    case LexicalUnit.SAC_IDENT:
-                        if (!l.getStringValue().equals("auto")) {
-                            loop = false;
-                        }
-                        break;
-                    case LexicalUnit.SAC_EM:
-                    case LexicalUnit.SAC_EX:
-                    case LexicalUnit.SAC_PIXEL:
-                    case LexicalUnit.SAC_CENTIMETER:
-                    case LexicalUnit.SAC_MILLIMETER:
-                    case LexicalUnit.SAC_INCH:
-                    case LexicalUnit.SAC_POINT:
-                    case LexicalUnit.SAC_PICA:
-                        // nothing
-                        break;
-                    default:
-                        loop = false;
-                    }
-                    break;
-                case 1:
-                case 3:
-                case 5:
-                    if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
-                        loop = false;
-                    }
-                    break;
-                default: {
-                    if (true) {
-                        throw new ParseException("implementation error");
-                    }
-                }
-                }
-                l = l.getNextLexicalUnit();
-                i++;
-            }
-            if ((i == 7) && loop && (l == null)) {
-                {
-                    if (true) {
-                        return LexicalUnitImpl.createRect(n.beginLine,
-                                n.beginColumn, prev, params);
-                    }
-                }
-            }
-        }
-        {
-            if (true) {
-                return LexicalUnitImpl.createFunction(n.beginLine,
-                        n.beginColumn, prev, f.substring(0, f.length() - 1),
-                        params);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public LexicalUnitImpl unicode(LexicalUnitImpl prev)
-            throws ParseException {
-        Token n;
-        n = jj_consume_token(UNICODERANGE);
-        LexicalUnitImpl params = null;
-        String s = n.image.substring(2);
-        int index = s.indexOf('-');
-        if (index == -1) {
-            params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
-                    params, Integer.parseInt(s, 16));
-        } else {
-            String s1 = s.substring(0, index);
-            String s2 = s.substring(index);
-
-            params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
-                    params, Integer.parseInt(s1, 16));
-            params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
-                    params, Integer.parseInt(s2, 16));
-        }
-
-        {
-            if (true) {
-                return LexicalUnitImpl.createUnicodeRange(n.beginLine,
-                        n.beginColumn, prev, params);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    final public LexicalUnitImpl url(LexicalUnitImpl prev)
-            throws ParseException {
-        Token n;
-        n = jj_consume_token(URL);
-        String urlname = n.image.substring(4, n.image.length() - 1).trim();
-        {
-            if (true) {
-                return LexicalUnitImpl.createURL(n.beginLine, n.beginColumn,
-                        prev, urlname);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    /**
-     * @exception ParseException
-     *                exception during the parse
-     */
-    final public LexicalUnitImpl hexcolor(LexicalUnitImpl prev)
-            throws ParseException {
-        Token n;
-        n = jj_consume_token(HASH);
-        int r;
-        LexicalUnitImpl first, params = null;
-        String s = n.image.substring(1);
-
-        if (s.length() != 3 && s.length() != 6) {
-            first = null;
-            {
-                if (true) {
-                    throw new CSSParseException(
-                            "invalid hexadecimal notation for RGB: " + s,
-                            getLocator());
-                }
-            }
-        }
-        {
-            if (true) {
-                return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
-                        prev, n.image);
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    float number(char operator, Token n, int lengthUnit) throws ParseException {
-        String image = n.image;
-        float f = 0;
-
-        if (lengthUnit != 0) {
-            image = image.substring(0, image.length() - lengthUnit);
-        }
-        f = Float.valueOf(image).floatValue();
-        return (operator == '-') ? -f : f;
-    }
-
-    String skipStatementUntilSemiColon() throws ParseException {
-        int[] semicolon = { SEMICOLON };
-        return skipStatementUntil(semicolon);
-    }
-
-    String skipStatementUntilLeftBrace() throws ParseException {
-        int[] lBrace = { LBRACE };
-        return skipStatementUntil(lBrace);
-    }
-
-    String skipStatementUntilRightParan() throws ParseException {
-        int[] rParan = { RPARAN };
-        return skipStatementUntil(rParan);
-    }
-
-    String skipStatementUntil(int[] symbols) throws ParseException {
-        StringBuffer s = new StringBuffer();
-        boolean stop = false;
-        Token tok;
-        while (!stop) {
-            tok = getToken(1);
-            if (tok.kind == EOF) {
-                return null;
-            }
-            for (int sym : symbols) {
-                if (tok.kind == sym) {
-                    stop = true;
-                    break;
-                }
-            }
-            if (!stop) {
-                if (tok.image != null) {
-                    s.append(tok.image);
-                }
-                getNextToken();
-            }
-        }
-        return s.toString().trim();
-    }
-
-    String skipStatement() throws ParseException {
-        StringBuffer s = new StringBuffer();
-        Token tok = getToken(0);
-        if (tok.image != null) {
-            s.append(tok.image);
-        }
-        while (true) {
-            tok = getToken(1);
-            if (tok.kind == EOF) {
-                return null;
-            }
-            s.append(tok.image);
-            if (tok.kind == LBRACE) {
-                getNextToken();
-                s.append(skip_to_matching_brace());
-                getNextToken();
-                tok = getToken(1);
-                break;
-            } else if (tok.kind == RBRACE) {
-                getNextToken();
-                tok = getToken(1);
-                break;
-            } else if (tok.kind == SEMICOLON) {
-                getNextToken();
-                tok = getToken(1);
-                break;
-            }
-            getNextToken();
-        }
-
-        // skip white space
-        while (true) {
-            if (tok.kind != S) {
-                break;
-            }
-            tok = getNextToken();
-            tok = getToken(1);
-        }
-
-        return s.toString().trim();
-    }
-
-    String skip_to_matching_brace() throws ParseException {
-        StringBuffer s = new StringBuffer();
-        Token tok;
-        int nesting = 1;
-        while (true) {
-            tok = getToken(1);
-            if (tok.kind == EOF) {
-                break;
-            }
-            s.append(tok.image);
-            if (tok.kind == LBRACE) {
-                nesting++;
-            } else if (tok.kind == RBRACE) {
-                nesting--;
-                if (nesting == 0) {
-                    break;
-                }
-            }
-            getNextToken();
-        }
-        return s.toString();
-    }
-
-    String convertStringIndex(String s, int start, int len)
-            throws ParseException {
-        StringBuffer buf = new StringBuffer(len);
-        int index = start;
-
-        while (index < len) {
-            char c = s.charAt(index);
-            if (c == '\u005c\u005c') {
-                if (++index < len) {
-                    c = s.charAt(index);
-                    switch (c) {
-                    case '0':
-                    case '1':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9':
-                    case 'a':
-                    case 'b':
-                    case 'c':
-                    case 'd':
-                    case 'e':
-                    case 'f':
-                    case 'A':
-                    case 'B':
-                    case 'C':
-                    case 'D':
-                    case 'E':
-                    case 'F':
-                        buf.append('\u005c\u005c');
-                        while (index < len) {
-                            buf.append(s.charAt(index++));
-                        }
-                        break;
-                    case '\u005cn':
-                    case '\u005cf':
-                        break;
-                    case '\u005cr':
-                        if (index + 1 < len) {
-                            if (s.charAt(index + 1) == '\u005cn') {
-                                index++;
-                            }
-                        }
-                        break;
-                    default:
-                        buf.append(c);
-                    }
-                } else {
-                    throw new CSSParseException("invalid string " + s,
-                            getLocator());
-                }
-            } else {
-                buf.append(c);
-            }
-            index++;
-        }
-
-        return buf.toString();
-    }
-
-    String convertIdent(String s) throws ParseException {
-        return convertStringIndex(s, 0, s.length());
-    }
-
-    String convertString(String s) throws ParseException {
-        return convertStringIndex(s, 0, s.length());
-    }
-
-    void comments() throws ParseException {
-        /*
-         * keeps only the multiple line comments, single line comments are
-         * skipped
-         */
-        if (token.specialToken != null && token.specialToken.image != null
-                && token.specialToken.image.startsWith("/*")) {
-            Token tmp_t = token.specialToken;
-            while (tmp_t.specialToken != null) {
-                tmp_t = tmp_t.specialToken;
-            }
-            while (tmp_t != null) {
-                documentHandler.comment(tmp_t.image);
-                tmp_t = tmp_t.next;
-            }
-        }
-    }
-
-    void rejectToken(Token t) throws ParseException {
-        Token fakeToken = new Token();
-        t.next = token;
-        fakeToken.next = t;
-        token = fakeToken;
-    }
-
-    String skipAfterExpression() throws ParseException {
-        Token t = getToken(1);
-        StringBuffer s = new StringBuffer();
-        s.append(getToken(0).image);
-
-        while ((t.kind != RBRACE) && (t.kind != SEMICOLON) && (t.kind != EOF)) {
-            s.append(t.image);
-            getNextToken();
-            t = getToken(1);
-        }
-
-        return s.toString();
-    }
-
-    /**
-     * The following functions are useful for a DOM CSS implementation only and
-     * are not part of the general CSS2 parser.
-     */
-    // TODO required by original parser but not used by Vaadin?
-    final public void _parseRule() throws ParseException {
-        String ret = null;
-        label_169: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[249] = jj_gen;
-                break label_169;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case IMPORT_SYM:
-            importDeclaration();
-            break;
-        case DEBUG_SYM:
-        case WARN_SYM:
-            debuggingDirective();
-            break;
-        case PLUS:
-        case PRECEDES:
-        case SIBLING:
-        case LBRACKET:
-        case ANY:
-        case PARENT:
-        case DOT:
-        case COLON:
-        case INTERPOLATION:
-        case IDENT:
-        case HASH:
-            styleRule();
-            break;
-        case MEDIA_SYM:
-            media();
-            break;
-        case PAGE_SYM:
-            page();
-            break;
-        case FONT_FACE_SYM:
-            fontFace();
-            break;
-        default:
-            jj_la1[250] = jj_gen;
-            ret = skipStatement();
-            if ((ret == null) || (ret.length() == 0)) {
-                {
-                    if (true) {
-                        return;
-                    }
-                }
-            }
-            if (ret.charAt(0) == '@') {
-                documentHandler.unrecognizedRule(ret);
-            } else {
-                {
-                    if (true) {
-                        throw new CSSParseException("unrecognize rule: " + ret,
-                                getLocator());
-                    }
-                }
-            }
-        }
-    }
-
-    final public void _parseImportRule() throws ParseException {
-        label_170: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[251] = jj_gen;
-                break label_170;
-            }
-            jj_consume_token(S);
-        }
-        importDeclaration();
-    }
-
-    final public void _parseMediaRule() throws ParseException {
-        label_171: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[252] = jj_gen;
-                break label_171;
-            }
-            jj_consume_token(S);
-        }
-        media();
-    }
-
-    final public void _parseDeclarationBlock() throws ParseException {
-        label_172: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case S:
-                ;
-                break;
-            default:
-                jj_la1[253] = jj_gen;
-                break label_172;
-            }
-            jj_consume_token(S);
-        }
-        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-        case INTERPOLATION:
-        case IDENT:
-            declaration();
-            break;
-        default:
-            jj_la1[254] = jj_gen;
-            ;
-        }
-        label_173: while (true) {
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case SEMICOLON:
-                ;
-                break;
-            default:
-                jj_la1[255] = jj_gen;
-                break label_173;
-            }
-            jj_consume_token(SEMICOLON);
-            label_174: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[256] = jj_gen;
-                    break label_174;
-                }
-                jj_consume_token(S);
-            }
-            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-            case INTERPOLATION:
-            case IDENT:
-                declaration();
-                break;
-            default:
-                jj_la1[257] = jj_gen;
-                ;
-            }
-        }
-    }
-
-    final public ArrayList<String> _parseSelectors() throws ParseException {
-        ArrayList<String> p = null;
-        try {
-            label_175: while (true) {
-                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
-                case S:
-                    ;
-                    break;
-                default:
-                    jj_la1[258] = jj_gen;
-                    break label_175;
-                }
-                jj_consume_token(S);
-            }
-            p = selectorList();
-            {
-                if (true) {
-                    return p;
-                }
-            }
-        } catch (ThrowedParseException e) {
-            {
-                if (true) {
-                    throw (ParseException) e.e.fillInStackTrace();
-                }
-            }
-        }
-        throw new Error("Missing return statement in function");
-    }
-
-    private boolean jj_2_1(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_1();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(0, xla);
-        }
-    }
-
-    private boolean jj_2_2(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_2();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(1, xla);
-        }
-    }
-
-    private boolean jj_2_3(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_3();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(2, xla);
-        }
-    }
-
-    private boolean jj_2_4(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_4();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(3, xla);
-        }
-    }
-
-    private boolean jj_2_5(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_5();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(4, xla);
-        }
-    }
-
-    private boolean jj_2_6(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_6();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(5, xla);
-        }
-    }
-
-    private boolean jj_2_7(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_7();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(6, xla);
-        }
-    }
-
-    private boolean jj_2_8(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_8();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(7, xla);
-        }
-    }
-
-    private boolean jj_2_9(int xla) {
-        jj_la = xla;
-        jj_lastpos = jj_scanpos = token;
-        try {
-            return !jj_3_9();
-        } catch (LookaheadSuccess ls) {
-            return true;
-        } finally {
-            jj_save(8, xla);
-        }
-    }
-
-    private boolean jj_3R_188() {
-        if (jj_3R_213()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_210() {
-        if (jj_scan_token(MOD)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_209() {
-        if (jj_scan_token(ANY)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_208() {
-        if (jj_scan_token(DIV)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_207() {
-        if (jj_scan_token(COMMA)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_185() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_207()) {
-            jj_scanpos = xsp;
-            if (jj_3R_208()) {
-                jj_scanpos = xsp;
-                if (jj_3R_209()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_210()) {
-                        jj_scanpos = xsp;
-                        if (jj_3R_211()) {
-                            jj_scanpos = xsp;
-                            if (jj_3R_212()) {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_215() {
-        if (jj_3R_214()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_213() {
-        if (jj_scan_token(GUARDED_SYM)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_214() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_scan_token(18)) {
-            jj_scanpos = xsp;
-            if (jj_scan_token(22)) {
-                jj_scanpos = xsp;
-                if (jj_scan_token(23)) {
-                    return true;
-                }
-            }
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_176() {
-        if (jj_3R_186()) {
-            return true;
-        }
-        if (jj_scan_token(COLON)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        if (jj_3R_187()) {
-            return true;
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_188()) {
-            jj_scanpos = xsp;
-        }
-        if (jj_3R_189()) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_189()) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_191() {
-        if (jj_scan_token(S)) {
-            return true;
-        }
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_215()) {
-            jj_scanpos = xsp;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_190() {
-        if (jj_3R_214()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_177() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_190()) {
-            jj_scanpos = xsp;
-            if (jj_3R_191()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_197() {
-        if (jj_scan_token(VARIABLE)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        if (jj_scan_token(COLON)) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_179() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_197()) {
-            jj_scanpos = xsp;
-        }
-        if (jj_scan_token(CONTAINS)) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        if (true) {
-            jj_la = 0;
-            jj_scanpos = jj_lastpos;
-            return false;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_217() {
-        if (jj_scan_token(HASH)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_287() {
-        if (jj_scan_token(IDENT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_288() {
-        if (jj_scan_token(FUNCTION)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        if (true) {
-            jj_la = 0;
-            jj_scanpos = jj_lastpos;
-            return false;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_286() {
-        if (jj_scan_token(COLON)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_219() {
-        if (jj_scan_token(COLON)) {
-            return true;
-        }
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_286()) {
-            jj_scanpos = xsp;
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_287()) {
-            jj_scanpos = xsp;
-            if (jj_3R_288()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3_7() {
-        if (jj_3R_183()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_204() {
-        if (jj_scan_token(LBRACE)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_307() {
-        if (jj_scan_token(STRING)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_305() {
-        if (jj_scan_token(STARMATCH)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_306() {
-        if (jj_scan_token(IDENT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_304() {
-        if (jj_scan_token(DOLLARMATCH)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_303() {
-        if (jj_scan_token(CARETMATCH)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_302() {
-        if (jj_scan_token(DASHMATCH)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_301() {
-        if (jj_scan_token(INCLUDES)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_268() {
-        if (jj_scan_token(INTERPOLATION)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_300() {
-        if (jj_scan_token(EQ)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_203() {
-        if (jj_3R_187()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_293() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_300()) {
-            jj_scanpos = xsp;
-            if (jj_3R_301()) {
-                jj_scanpos = xsp;
-                if (jj_3R_302()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_303()) {
-                        jj_scanpos = xsp;
-                        if (jj_3R_304()) {
-                            jj_scanpos = xsp;
-                            if (jj_3R_305()) {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_306()) {
-            jj_scanpos = xsp;
-            if (jj_3R_307()) {
-                return true;
-            }
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3_6() {
-        if (jj_3R_182()) {
-            return true;
-        }
-        if (jj_scan_token(LBRACE)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_220() {
-        if (jj_scan_token(LBRACKET)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        if (jj_scan_token(IDENT)) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_293()) {
-            jj_scanpos = xsp;
-        }
-        if (jj_scan_token(RBRACKET)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_183() {
-        if (jj_3R_202()) {
-            return true;
-        }
-        if (jj_scan_token(COLON)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_203()) {
-            jj_scanpos = xsp;
-            if (jj_3R_204()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_299() {
-        if (jj_scan_token(INTERPOLATION)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_266() {
-        if (jj_3R_187()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_254() {
-        if (jj_scan_token(PARENT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_253() {
-        if (jj_scan_token(ANY)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_263() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_267()) {
-            jj_scanpos = xsp;
-            if (jj_3R_268()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_267() {
-        if (jj_scan_token(IDENT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_216() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_252()) {
-            jj_scanpos = xsp;
-            if (jj_3R_253()) {
-                jj_scanpos = xsp;
-                if (jj_3R_254()) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_252() {
-        Token xsp;
-        if (jj_3R_263()) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_263()) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_256() {
-        if (jj_scan_token(FUNCTION)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_266()) {
-            jj_scanpos = xsp;
-        }
-        if (jj_scan_token(RPARAN)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_180() {
-        if (jj_scan_token(COMMA)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_247() {
-        if (jj_3R_260()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_298() {
-        if (jj_scan_token(IDENT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_246() {
-        if (jj_3R_259()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_281() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_298()) {
-            jj_scanpos = xsp;
-            if (jj_3R_299()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_245() {
-        if (jj_3R_258()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_297() {
-        if (jj_3R_219()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3_5() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_180()) {
-            jj_scanpos = xsp;
-        }
-        if (jj_3R_181()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_218() {
-        if (jj_scan_token(DOT)) {
-            return true;
-        }
-        Token xsp;
-        if (jj_3R_281()) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_281()) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_295() {
-        if (jj_3R_218()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_290() {
-        if (jj_3R_218()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_292() {
-        if (jj_3R_219()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_280() {
-        if (jj_3R_219()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_283() {
-        if (jj_3R_218()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_285() {
-        if (jj_3R_219()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_296() {
-        if (jj_3R_220()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_273() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_294()) {
-            jj_scanpos = xsp;
-            if (jj_3R_295()) {
-                jj_scanpos = xsp;
-                if (jj_3R_296()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_297()) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_294() {
-        if (jj_3R_217()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_272() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_289()) {
-            jj_scanpos = xsp;
-            if (jj_3R_290()) {
-                jj_scanpos = xsp;
-                if (jj_3R_291()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_292()) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_289() {
-        if (jj_3R_217()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_277() {
-        if (jj_3R_219()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_271() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_282()) {
-            jj_scanpos = xsp;
-            if (jj_3R_283()) {
-                jj_scanpos = xsp;
-                if (jj_3R_284()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_285()) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_282() {
-        if (jj_3R_217()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_291() {
-        if (jj_3R_220()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_279() {
-        if (jj_3R_220()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_284() {
-        if (jj_3R_220()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_270() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_278()) {
-            jj_scanpos = xsp;
-            if (jj_3R_279()) {
-                jj_scanpos = xsp;
-                if (jj_3R_280()) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_275() {
-        if (jj_3R_218()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_278() {
-        if (jj_3R_218()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_257() {
-        if (jj_scan_token(DOT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_244() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_257()) {
-            jj_scanpos = xsp;
-        }
-        xsp = jj_scanpos;
-        if (jj_scan_token(72)) {
-            jj_scanpos = xsp;
-            if (jj_scan_token(49)) {
-                jj_scanpos = xsp;
-                if (jj_scan_token(50)) {
-                    jj_scanpos = xsp;
-                    if (jj_scan_token(52)) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_243() {
-        if (jj_scan_token(STRING)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_242() {
-        if (jj_3R_256()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_196() {
-        if (jj_3R_220()) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_273()) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_199() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_243()) {
-            jj_scanpos = xsp;
-            if (jj_3R_244()) {
-                jj_scanpos = xsp;
-                if (jj_3R_245()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_246()) {
-                        jj_scanpos = xsp;
-                        if (jj_3R_247()) {
-                            return true;
-                        }
-                    }
-                }
-            }
+/**
+ * @exception ParseException exception during the parse
+ */
+/* see http://www.w3.org/TR/css3-mediaqueries/ */
+  final public void media() throws ParseException {
+    boolean start = false;
+    String ret;
+    MediaListImpl ml = new MediaListImpl();
+    try {
+      jj_consume_token(MEDIA_SYM);
+      label_23:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[30] = jj_gen;
+          break label_23;
+        }
+        jj_consume_token(S);
+      }
+      mediaStatement(ml);
+     start = true; documentHandler.startMedia(ml);
+      jj_consume_token(LBRACE);
+      label_24:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[31] = jj_gen;
+          break label_24;
+        }
+        jj_consume_token(S);
+      }
+      label_25:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case CDO:
+        case LBRACE:
+        case DASHMATCH:
+        case INCLUDES:
+        case PLUS:
+        case MINUS:
+        case COMMA:
+        case SEMICOLON:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case NONASCII:
+        case DEBUG_SYM:
+        case WARN_SYM:
+        case STRING:
+        case IDENT:
+        case NUMBER:
+        case URL:
+        case PERCENTAGE:
+        case HASH:
+        case IMPORT_SYM:
+        case MEDIA_SYM:
+        case CHARSET_SYM:
+        case PAGE_SYM:
+        case FONT_FACE_SYM:
+        case ATKEYWORD:
+        case IMPORTANT_SYM:
+        case UNICODERANGE:
+        case FUNCTION:
+        case UNKNOWN:
+          ;
+          break;
+        default:
+          jj_la1[32] = jj_gen;
+          break label_25;
         }
-        return false;
-    }
-
-    private boolean jj_3R_195() {
-        if (jj_3R_219()) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case DEBUG_SYM:
+        case WARN_SYM:
+          debuggingDirective();
+          break;
+        case PLUS:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case IDENT:
+        case HASH:
+          styleRule();
+          break;
+        case CDO:
+        case LBRACE:
+        case DASHMATCH:
+        case INCLUDES:
+        case MINUS:
+        case COMMA:
+        case SEMICOLON:
+        case NONASCII:
+        case STRING:
+        case NUMBER:
+        case URL:
+        case PERCENTAGE:
+        case IMPORT_SYM:
+        case MEDIA_SYM:
+        case CHARSET_SYM:
+        case PAGE_SYM:
+        case FONT_FACE_SYM:
+        case ATKEYWORD:
+        case IMPORTANT_SYM:
+        case UNICODERANGE:
+        case FUNCTION:
+        case UNKNOWN:
+          skipUnknownRule();
+          break;
+        default:
+          jj_la1[33] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+      jj_consume_token(RBRACE);
+      label_26:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[34] = jj_gen;
+          break label_26;
+        }
+        jj_consume_token(S);
+      }
+    } catch (ParseException e) {
+     reportError(getLocator(), e);
+     skipStatement();
+     // reportWarningSkipText(getLocator(), skipStatement());
+
+    } finally {
+     if (start) {
+         documentHandler.endMedia(ml);
+     }
+    }
+  }
+
+  final public void mediaStatement(MediaListImpl ml) throws ParseException {
+  Token t;
+      t = getToken(1);
+      // loop over comma separated parts, add each to ml
+      while ((t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
+        StringBuffer s = new StringBuffer();
+        s.append(getToken(0).image);
+        while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
+              s.append(t.image);
+              getNextToken();
+          t = getToken(1);
         }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_272()) {
-                jj_scanpos = xsp;
-                break;
-            }
+        if (t.kind == COMMA) {
+          // skip the comma and the token before it that is still the active token
+          getNextToken();
+          getNextToken();
+          t = getToken(1);
         }
-        return false;
-    }
-
-    private boolean jj_3R_276() {
-        if (jj_3R_220()) {
-            return true;
+        String str = s.toString().trim();
+        if (str.length() > 0) {
+          ml.addItem(str);
         }
-        return false;
-    }
+      }
+  }
 
-    private boolean jj_3R_194() {
-        if (jj_3R_218()) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_271()) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String medium() throws ParseException {
+ Token n;
+    n = jj_consume_token(IDENT);
+                {if (true) return convertIdent(n.image);}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_193() {
-        if (jj_3R_217()) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void page() throws ParseException {
+ boolean start = false;
+ Token n = null;
+ String page = null;
+ String pseudo = null;
+    try {
+      jj_consume_token(PAGE_SYM);
+      label_27:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[35] = jj_gen;
+          break label_27;
         }
-        Token xsp;
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        n = jj_consume_token(IDENT);
+        label_28:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_270()) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_269() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_274()) {
-            jj_scanpos = xsp;
-            if (jj_3R_275()) {
-                jj_scanpos = xsp;
-                if (jj_3R_276()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_277()) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_274() {
-        if (jj_3R_217()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_192() {
-        if (jj_3R_216()) {
-            return true;
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[36] = jj_gen;
+            break label_28;
+          }
+          jj_consume_token(S);
+        }
+        break;
+      default:
+        jj_la1[37] = jj_gen;
+        ;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COLON:
+        pseudo = pseudo_page();
+        break;
+      default:
+        jj_la1[38] = jj_gen;
+        ;
+      }
+          if (n != null) {
+              page = convertIdent(n.image);
+          }
+      jj_consume_token(LBRACE);
+      label_29:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[39] = jj_gen;
+          break label_29;
+        }
+        jj_consume_token(S);
+      }
+          start = true;
+          documentHandler.startPage(page, pseudo);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTERPOLATION:
+      case IDENT:
+        declaration();
+        break;
+      default:
+        jj_la1[40] = jj_gen;
+        ;
+      }
+      label_30:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case SEMICOLON:
+          ;
+          break;
+        default:
+          jj_la1[41] = jj_gen;
+          break label_30;
         }
-        Token xsp;
+        jj_consume_token(SEMICOLON);
+        label_31:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_269()) {
-                jj_scanpos = xsp;
-                break;
-            }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[42] = jj_gen;
+            break label_31;
+          }
+          jj_consume_token(S);
         }
-        return false;
-    }
-
-    private boolean jj_3R_241() {
-        if (jj_scan_token(DIMEN)) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case INTERPOLATION:
+        case IDENT:
+          declaration();
+          break;
+        default:
+          jj_la1[43] = jj_gen;
+          ;
+        }
+      }
+      jj_consume_token(RBRACE);
+      label_32:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[44] = jj_gen;
+          break label_32;
+        }
+        jj_consume_token(S);
+      }
+    } catch (ParseException e) {
+     if (errorHandler != null) {
+         LocatorImpl li = new LocatorImpl(this,
+                                          e.currentToken.next.beginLine,
+                                          e.currentToken.next.beginColumn-1);
+         reportError(li, e);
+         skipStatement();
+         // reportWarningSkipText(li, skipStatement());
+     } else {
+         skipStatement();
+     }
+    } finally {
+     if (start) {
+         documentHandler.endPage(page, pseudo);
+     }
+    }
+  }
+
+  final public String pseudo_page() throws ParseException {
+  Token n;
+    jj_consume_token(COLON);
+    n = jj_consume_token(IDENT);
+    label_33:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[45] = jj_gen;
+        break label_33;
+      }
+      jj_consume_token(S);
+    }
+                             {if (true) return convertIdent(n.image);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void fontFace() throws ParseException {
+    boolean start = false;
+    try {
+      jj_consume_token(FONT_FACE_SYM);
+      label_34:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[46] = jj_gen;
+          break label_34;
+        }
+        jj_consume_token(S);
+      }
+      jj_consume_token(LBRACE);
+      label_35:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[47] = jj_gen;
+          break label_35;
+        }
+        jj_consume_token(S);
+      }
+        start = true; documentHandler.startFontFace();
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTERPOLATION:
+      case IDENT:
+        declaration();
+        break;
+      default:
+        jj_la1[48] = jj_gen;
+        ;
+      }
+      label_36:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case SEMICOLON:
+          ;
+          break;
+        default:
+          jj_la1[49] = jj_gen;
+          break label_36;
         }
-        return false;
-    }
-
-    private boolean jj_3R_178() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_192()) {
-            jj_scanpos = xsp;
-            if (jj_3R_193()) {
-                jj_scanpos = xsp;
-                if (jj_3R_194()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_195()) {
-                        jj_scanpos = xsp;
-                        if (jj_3R_196()) {
-                            return true;
-                        }
-                    }
-                }
-            }
+        jj_consume_token(SEMICOLON);
+        label_37:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[50] = jj_gen;
+            break label_37;
+          }
+          jj_consume_token(S);
         }
-        return false;
-    }
-
-    private boolean jj_3R_240() {
-        if (jj_scan_token(KHZ)) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case INTERPOLATION:
+        case IDENT:
+          declaration();
+          break;
+        default:
+          jj_la1[51] = jj_gen;
+          ;
+        }
+      }
+      jj_consume_token(RBRACE);
+      label_38:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[52] = jj_gen;
+          break label_38;
         }
-        return false;
-    }
+        jj_consume_token(S);
+      }
+    } catch (ParseException e) {
+     reportError(getLocator(), e);
+     skipStatement();
+     // reportWarningSkipText(getLocator(), skipStatement());
 
-    private boolean jj_3R_249() {
-        if (jj_3R_214()) {
-            return true;
-        }
-        if (jj_3R_178()) {
-            return true;
-        }
-        return false;
+    } finally {
+     if (start) {
+         documentHandler.endFontFace();
+     }
     }
+  }
 
-    private boolean jj_3R_239() {
-        if (jj_scan_token(HZ)) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void atRuleDeclaration() throws ParseException {
+ Token n;
+ String ret;
+    n = jj_consume_token(ATKEYWORD);
+        ret=skipStatement();
+        if ((ret != null) && (ret.charAt(0) == '@')) {
+            documentHandler.unrecognizedRule(ret);
+        } else {
+            reportWarningSkipText(getLocator(), ret);
         }
-        return false;
-    }
+  }
+
+  final public void skipUnknownRule() throws ParseException {
+  Token n;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ATKEYWORD:
+      n = jj_consume_token(ATKEYWORD);
+      break;
+    case CDO:
+      n = jj_consume_token(CDO);
+      break;
+    case CHARSET_SYM:
+      n = jj_consume_token(CHARSET_SYM);
+      break;
+    case COMMA:
+      n = jj_consume_token(COMMA);
+      break;
+    case DASHMATCH:
+      n = jj_consume_token(DASHMATCH);
+      break;
+    case FONT_FACE_SYM:
+      n = jj_consume_token(FONT_FACE_SYM);
+      break;
+    case FUNCTION:
+      n = jj_consume_token(FUNCTION);
+      break;
+    case IMPORTANT_SYM:
+      n = jj_consume_token(IMPORTANT_SYM);
+      break;
+    case IMPORT_SYM:
+      n = jj_consume_token(IMPORT_SYM);
+      break;
+    case INCLUDES:
+      n = jj_consume_token(INCLUDES);
+      break;
+    case LBRACE:
+      n = jj_consume_token(LBRACE);
+      break;
+    case MEDIA_SYM:
+      n = jj_consume_token(MEDIA_SYM);
+      break;
+    case NONASCII:
+      n = jj_consume_token(NONASCII);
+      break;
+    case NUMBER:
+      n = jj_consume_token(NUMBER);
+      break;
+    case PAGE_SYM:
+      n = jj_consume_token(PAGE_SYM);
+      break;
+    case PERCENTAGE:
+      n = jj_consume_token(PERCENTAGE);
+      break;
+    case STRING:
+      n = jj_consume_token(STRING);
+      break;
+    case UNICODERANGE:
+      n = jj_consume_token(UNICODERANGE);
+      break;
+    case URL:
+      n = jj_consume_token(URL);
+      break;
+    case SEMICOLON:
+      n = jj_consume_token(SEMICOLON);
+      break;
+    case MINUS:
+      n = jj_consume_token(MINUS);
+      break;
+    case UNKNOWN:
+      n = jj_consume_token(UNKNOWN);
+      break;
+    default:
+      jj_la1[53] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     String ret;
+     Locator loc = getLocator();
+     ret=skipStatement();
+     if ((ret != null) && (n.image.charAt(0) == '@')) {
+         documentHandler.unrecognizedRule(ret);
+     } else {
+     reportWarningSkipText(loc, ret);
+     }
+  }
 
-    private boolean jj_3R_238() {
-        if (jj_scan_token(MS)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public char combinator() throws ParseException {
+char connector = ' ';
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case PRECEDES:
+    case SIBLING:
+      connector = combinatorChar();
+      break;
+    case S:
+      jj_consume_token(S);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+        connector = combinatorChar();
+        break;
+      default:
+        jj_la1[54] = jj_gen;
+        ;
+      }
+      break;
+    default:
+      jj_la1[55] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+                                               {if (true) return connector;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**to refactor combinator and reuse in selector().*/
+  final public char combinatorChar() throws ParseException {
+ Token t;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+      t = jj_consume_token(PLUS);
+      break;
+    case PRECEDES:
+      t = jj_consume_token(PRECEDES);
+      break;
+    case SIBLING:
+      t = jj_consume_token(SIBLING);
+      break;
+    default:
+      jj_la1[56] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    label_39:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[57] = jj_gen;
+        break label_39;
+      }
+      jj_consume_token(S);
+    }
+        {if (true) return t.image.charAt(0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void microsoftExtension() throws ParseException {
+  Token n;
+  String name = "";
+  String value = "";
+    // This is not really taking the syntax of filter rules into account
+      n = jj_consume_token(MICROSOFT_RULE);
+    label_40:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[58] = jj_gen;
+        break label_40;
+      }
+      jj_consume_token(S);
+    }
+                                    name = n.image;
+    jj_consume_token(COLON);
+    label_41:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        n = jj_consume_token(IDENT);
+                          value += n.image;
+        break;
+      case NUMBER:
+        n = jj_consume_token(NUMBER);
+                            value += n.image;
+        break;
+      case STRING:
+        n = jj_consume_token(STRING);
+                            value += n.image;
+        break;
+      case COMMA:
+        n = jj_consume_token(COMMA);
+                           value += n.image;
+        break;
+      case INTERPOLATION:
+        n = jj_consume_token(INTERPOLATION);
+                                   value += n.image;
+        break;
+      case COLON:
+        n = jj_consume_token(COLON);
+                           value += n.image;
+        break;
+      case FUNCTION:
+        n = jj_consume_token(FUNCTION);
+                              value += n.image;
+        break;
+      case RPARAN:
+        n = jj_consume_token(RPARAN);
+                            value += n.image;
+        break;
+      case EQ:
+        n = jj_consume_token(EQ);
+                        value += n.image;
+        break;
+      case DOT:
+        n = jj_consume_token(DOT);
+                         value += n.image;
+        break;
+      case S:
+        n = jj_consume_token(S);
+                       if(value.lastIndexOf(' ') != value.length()-1)
+        { value += n.image; }
+        break;
+      default:
+        jj_la1[59] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+      case EQ:
+      case COMMA:
+      case DOT:
+      case RPARAN:
+      case COLON:
+      case INTERPOLATION:
+      case STRING:
+      case IDENT:
+      case NUMBER:
+      case FUNCTION:
+        ;
+        break;
+      default:
+        jj_la1[60] = jj_gen;
+        break label_41;
+      }
+    }
+    jj_consume_token(SEMICOLON);
+    label_42:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[61] = jj_gen;
+        break label_42;
+      }
+      jj_consume_token(S);
+    }
+          documentHandler.microsoftDirective(name, value);
+  }
 
-    private boolean jj_3R_237() {
-        if (jj_scan_token(SECOND)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String property() throws ParseException {
+ Token t;String s = "";
+    label_43:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        t = jj_consume_token(IDENT);
+                 s += t.image;
+        break;
+      case INTERPOLATION:
+        t = jj_consume_token(INTERPOLATION);
+                                                        s += t.image;
+        break;
+      default:
+        jj_la1[62] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTERPOLATION:
+      case IDENT:
+        ;
+        break;
+      default:
+        jj_la1[63] = jj_gen;
+        break label_43;
+      }
+    }
+    label_44:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[64] = jj_gen;
+        break label_44;
+      }
+      jj_consume_token(S);
+    }
+        {if (true) return s;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public String variableName() throws ParseException {
+ Token n;
+    n = jj_consume_token(VARIABLE);
+    label_45:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[65] = jj_gen;
+        break label_45;
+      }
+      jj_consume_token(S);
+    }
+                         {if (true) return convertIdent(n.image.substring(1));}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public String functionName() throws ParseException {
+ Token n;
+    n = jj_consume_token(FUNCTION);
+    label_46:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[66] = jj_gen;
+        break label_46;
+      }
+      jj_consume_token(S);
+    }
+                           {if (true) return convertIdent(n.image.substring(0, n.image.length()-1));}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_236() {
-        if (jj_scan_token(GRAD)) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void styleRule() throws ParseException {
+    boolean start = false;
+    ArrayList<String> l = null;
+    Token save;
+    Locator loc;
+    try {
+      l = selectorList();
+                        save = token;
+      jj_consume_token(LBRACE);
+      label_47:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[67] = jj_gen;
+          break label_47;
+        }
+        jj_consume_token(S);
+      }
+         start = true;
+         documentHandler.startSelector(l);
+      label_48:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case PLUS:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case INCLUDE_SYM:
+        case DEBUG_SYM:
+        case WARN_SYM:
+        case EACH_SYM:
+        case IF_SYM:
+        case EXTEND_SYM:
+        case CONTENT_SYM:
+        case MICROSOFT_RULE:
+        case IDENT:
+        case VARIABLE:
+        case HASH:
+        case IMPORT_SYM:
+        case MEDIA_SYM:
+        case KEY_FRAME_SYM:
+          ;
+          break;
+        default:
+          jj_la1[68] = jj_gen;
+          break label_48;
         }
-        return false;
-    }
-
-    private boolean jj_3R_235() {
-        if (jj_scan_token(RAD)) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case PLUS:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case INCLUDE_SYM:
+        case DEBUG_SYM:
+        case WARN_SYM:
+        case EACH_SYM:
+        case IF_SYM:
+        case EXTEND_SYM:
+        case CONTENT_SYM:
+        case IDENT:
+        case VARIABLE:
+        case HASH:
+        case MEDIA_SYM:
+        case KEY_FRAME_SYM:
+          ifContentStatement();
+          break;
+        case MICROSOFT_RULE:
+          microsoftExtension();
+          break;
+        case IMPORT_SYM:
+          importDeclaration();
+          break;
+        default:
+          jj_la1[69] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+      jj_consume_token(RBRACE);
+      label_49:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[70] = jj_gen;
+          break label_49;
+        }
+        jj_consume_token(S);
+      }
+    } catch (ThrowedParseException e) {
+     if (errorHandler != null) {
+         LocatorImpl li = new LocatorImpl(this,
+                                          e.e.currentToken.next.beginLine,
+                                          e.e.currentToken.next.beginColumn-1);
+         reportError(li, e.e);
+     }
+    } catch (ParseException e) {
+     reportError(getLocator(), e);
+     skipStatement();
+     // reportWarningSkipText(getLocator(), skipStatement());
+
+    } catch (TokenMgrError e) {
+     reportWarningSkipText(getLocator(), skipStatement());
+    } finally {
+     if (start) {
+         documentHandler.endSelector();
+     }
+    }
+  }
+
+  final public ArrayList<String> selectorList() throws ParseException {
+     ArrayList<String> selectors = new  ArrayList<String>();
+     String selector;
+    selector = selector();
+    label_50:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[71] = jj_gen;
+        break label_50;
+      }
+      jj_consume_token(COMMA);
+      label_51:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[72] = jj_gen;
+          break label_51;
         }
-        return false;
+        jj_consume_token(S);
+      }
+                                        selectors.add(selector);
+      selector = selector();
     }
+    selectors.add(selector);
+    {if (true) return selectors;}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_234() {
-        if (jj_scan_token(DEG)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String selector() throws ParseException {
+    String selector = null;
+    char    comb;
+    try {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case IDENT:
+      case HASH:
+        selector = simple_selector(null, ' ');
+        break;
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+        comb = combinatorChar();
+        selector = simple_selector(selector, comb);
+        break;
+      default:
+        jj_la1[73] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_52:
+      while (true) {
+        if (jj_2_2(2)) {
+          ;
+        } else {
+          break label_52;
+        }
+        comb = combinator();
+        selector = simple_selector(selector, comb);
+      }
+      label_53:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[74] = jj_gen;
+          break label_53;
+        }
+        jj_consume_token(S);
+      }
+       {if (true) return selector;}
+    } catch (ParseException e) {
+     /*
+     Token t = getToken(1);
+     StringBuffer s = new StringBuffer();
+     s.append(getToken(0).image);
+     while ((t.kind != COMMA) && (t.kind != SEMICOLON) 
+           && (t.kind != LBRACE) && (t.kind != EOF)) {
+        s.append(t.image);
+        getNextToken();
+        t = getToken(1);
+     }
+     reportWarningSkipText(getLocator(), s.toString());
+     */
+     Token t = getToken(1);
+     while ((t.kind != COMMA) && (t.kind != SEMICOLON)
+            && (t.kind != LBRACE) && (t.kind != EOF)) {
+         getNextToken();
+         t = getToken(1);
+     }
 
-    private boolean jj_3R_233() {
-        if (jj_scan_token(EXS)) {
-            return true;
-        }
-        return false;
+     {if (true) throw new ThrowedParseException(e);}
     }
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_232() {
-        if (jj_scan_token(REM)) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String simple_selector(String selector, char comb) throws ParseException {
+    String simple_current = null;
+    String cond = null;
+
+    pseudoElt = null;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ANY:
+    case PARENT:
+    case INTERPOLATION:
+    case IDENT:
+      simple_current = element_name();
+      label_54:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case LBRACKET:
+        case DOT:
+        case COLON:
+        case HASH:
+          ;
+          break;
+        default:
+          jj_la1[75] = jj_gen;
+          break label_54;
         }
-        return false;
-    }
-
-    private boolean jj_3R_231() {
-        if (jj_scan_token(LEM)) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HASH:
+          cond = hash(cond);
+          break;
+        case DOT:
+          cond = _class(cond);
+          break;
+        case LBRACKET:
+          cond = attrib(cond);
+          break;
+        case COLON:
+          cond = pseudo(cond);
+          break;
+        default:
+          jj_la1[76] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+      break;
+    case LBRACKET:
+    case DOT:
+    case COLON:
+    case HASH:
+      label_55:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HASH:
+          cond = hash(cond);
+          break;
+        case DOT:
+          cond = _class(cond);
+          break;
+        case LBRACKET:
+          cond = attrib(cond);
+          break;
+        case COLON:
+          cond = pseudo(cond);
+          break;
+        default:
+          jj_la1[77] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
         }
-        return false;
-    }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case LBRACKET:
+        case DOT:
+        case COLON:
+        case HASH:
+          ;
+          break;
+        default:
+          jj_la1[78] = jj_gen;
+          break label_55;
+        }
+      }
+      break;
+    default:
+      jj_la1[79] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+            if (simple_current == null) {
+                simple_current = "";
+            }
+            if (cond != null) {
+                simple_current = simple_current + cond;
+            }
+            StringBuilder builder = new StringBuilder();
+            switch (comb) {
+                case ' ':
+                    if(selector!=null){
+                        builder.append(selector).append(" ");
+                    }
+                    break;
+                case '+':
+                case '>':
+                case '~':
+                    if(selector!=null){
+                        builder.append(selector).append(" ");
+                    }
+                    builder.append(comb).append(" ");
+                    break;
+                default:
+                    {if (true) throw new ParseException("invalid state. send a bug report");}
+            }
+            builder.append(simple_current);
+            selector = builder.toString();
 
-    private boolean jj_3R_230() {
-        if (jj_scan_token(EMS)) {
-            return true;
-        }
-        return false;
-    }
+            if (pseudoElt != null) {
+                selector = selector + pseudoElt;
+            }
+            {if (true) return selector;}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_229() {
-        if (jj_scan_token(PX)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String _class(String pred) throws ParseException {
+ Token t;
+String s = ".";
+    jj_consume_token(DOT);
+    label_56:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        t = jj_consume_token(IDENT);
+                   s += t.image;
+        break;
+      case INTERPOLATION:
+        t = jj_consume_token(INTERPOLATION);
+                                                           s += t.image;
+        break;
+      default:
+        jj_la1[80] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTERPOLATION:
+      case IDENT:
+        ;
+        break;
+      default:
+        jj_la1[81] = jj_gen;
+        break label_56;
+      }
+    }
+          if (pred == null) {
+              {if (true) return s;}
+          } else {
+              {if (true) return pred + s;}
+          }
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3_2() {
-        if (jj_3R_177()) {
-            return true;
-        }
-        if (jj_3R_178()) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String element_name() throws ParseException {
+ Token t; String s = "";
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INTERPOLATION:
+    case IDENT:
+      label_57:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IDENT:
+          t = jj_consume_token(IDENT);
+                 s += t.image;
+          break;
+        case INTERPOLATION:
+          t = jj_consume_token(INTERPOLATION);
+                                                        s += t.image;
+          break;
+        default:
+          jj_la1[82] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
         }
-        return false;
-    }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case INTERPOLATION:
+        case IDENT:
+          ;
+          break;
+        default:
+          jj_la1[83] = jj_gen;
+          break label_57;
+        }
+      }
+      {if (true) return s;}
+      break;
+    case ANY:
+      jj_consume_token(ANY);
+      {if (true) return "*";}
+      break;
+    case PARENT:
+      jj_consume_token(PARENT);
+      {if (true) return "&";}
+      break;
+    default:
+      jj_la1[84] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_228() {
-        if (jj_scan_token(IN)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String attrib(String pred) throws ParseException {
+    int cases = 0;
+    Token att = null;
+    Token val = null;
+    String attValue = null;
+    jj_consume_token(LBRACKET);
+    label_58:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[85] = jj_gen;
+        break label_58;
+      }
+      jj_consume_token(S);
+    }
+    att = jj_consume_token(IDENT);
+    label_59:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[86] = jj_gen;
+        break label_59;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case DASHMATCH:
+    case CARETMATCH:
+    case DOLLARMATCH:
+    case STARMATCH:
+    case INCLUDES:
+    case EQ:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case EQ:
+        jj_consume_token(EQ);
+                          cases = 1;
+        break;
+      case INCLUDES:
+        jj_consume_token(INCLUDES);
+                          cases = 2;
+        break;
+      case DASHMATCH:
+        jj_consume_token(DASHMATCH);
+                          cases = 3;
+        break;
+      case CARETMATCH:
+        jj_consume_token(CARETMATCH);
+                           cases = 4;
+        break;
+      case DOLLARMATCH:
+        jj_consume_token(DOLLARMATCH);
+                            cases = 5;
+        break;
+      case STARMATCH:
+        jj_consume_token(STARMATCH);
+                          cases = 6;
+        break;
+      default:
+        jj_la1[87] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_60:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[88] = jj_gen;
+          break label_60;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        val = jj_consume_token(IDENT);
+                        attValue = val.image;
+        break;
+      case STRING:
+        val = jj_consume_token(STRING);
+                           attValue = val.image;
+        break;
+      default:
+        jj_la1[89] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_61:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[90] = jj_gen;
+          break label_61;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[91] = jj_gen;
+      ;
+    }
+    jj_consume_token(RBRACKET);
+      String name = convertIdent(att.image);
+      String c;
+      switch (cases) {
+          case 0:
+          c = name;
+          break;
+          case 1:
+          c = name + "=" + attValue;
+          break;
+          case 2:
+          c = name + "~=" + attValue;
+          break;
+          case 3:
+          c = name + "|=" +attValue;
+          break;
+          case 4:
+          c = name + "^=" +attValue;
+          break;
+          case 5:
+          c = name + "$=" +attValue;
+          break;
+          case 6:
+          c = name + "*=" +attValue;
+          break;
+          default:
+          // never reached.
+          c = null;
+      }
+      c = "[" + c + "]";
+      if (pred == null) {
+          {if (true) return c;}
+      } else {
+          {if (true) return pred + c;}
+      }
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_227() {
-        if (jj_scan_token(PC)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String pseudo(String pred) throws ParseException {
+ Token n;
+Token param;
+String d;
+boolean isPseudoElement = false;
+    jj_consume_token(COLON);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COLON:
+      jj_consume_token(COLON);
+             isPseudoElement=true;
+      break;
+    default:
+      jj_la1[92] = jj_gen;
+      ;
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+      n = jj_consume_token(IDENT);
+            String s = ":" + convertIdent(n.image);
+            if (isPseudoElement) {
+                if (pseudoElt != null) {
+                    {if (true) throw new CSSParseException("duplicate pseudo element definition "
+                                                + s, getLocator());}
+                } else {
+                    pseudoElt = ":"+s;
+                    {if (true) return pred;}
+                }
+            } else {
+                String c = s;
+                if (pred == null) {
+                    {if (true) return c;}
+                } else {
+                    {if (true) return pred + c;}
+                }
+            }
+      break;
+    case FUNCTION:
+      n = jj_consume_token(FUNCTION);
+      label_62:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[93] = jj_gen;
+          break label_62;
+        }
+        jj_consume_token(S);
+      }
+      d = skipStatementUntilRightParan();
+      jj_consume_token(RPARAN);
+                  // accept anything between function and a right parenthesis
+                  String f = convertIdent(n.image);
+                  String colons = isPseudoElement ? "::" : ":";
+                  String pseudofn = colons + f + d + ")";
+                      if (pred == null) {
+                          {if (true) return pseudofn;}
+                      } else {
+                          {if (true) return pred + pseudofn;}
+                  }
+      break;
+    default:
+      jj_la1[94] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_201() {
-        if (jj_scan_token(COMMA)) {
-            return true;
-        }
-        Token xsp;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String hash(String pred) throws ParseException {
+ Token n;
+    n = jj_consume_token(HASH);
+      String d = n.image;
+      if (pred == null) {
+          {if (true) return d;}
+      } else {
+          {if (true) return pred + d;}
+      }
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void variable() throws ParseException {
+        String name;
+        LexicalUnitImpl exp = null;
+        boolean guarded = false;
+        String raw;
+    try {
+      name = variableName();
+      jj_consume_token(COLON);
+      label_63:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[95] = jj_gen;
+          break label_63;
+        }
+        jj_consume_token(S);
+      }
+      exp = expr();
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case GUARDED_SYM:
+        guarded = guarded();
+        break;
+      default:
+        jj_la1[96] = jj_gen;
+        ;
+      }
+      label_64:
+      while (true) {
+        jj_consume_token(SEMICOLON);
+        label_65:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        if (jj_3R_200()) {
-            return true;
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[97] = jj_gen;
+            break label_65;
+          }
+          jj_consume_token(S);
         }
-        return false;
-    }
-
-    private boolean jj_3R_248() {
-        if (jj_3R_178()) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case SEMICOLON:
+          ;
+          break;
+        default:
+          jj_la1[98] = jj_gen;
+          break label_64;
         }
-        return false;
+      }
+                    documentHandler.variable(name, exp, guarded);
+    } catch (JumpException e) {
+            skipAfterExpression();
+    } catch (NumberFormatException e) {
+            if (errorHandler != null) {
+                errorHandler.error(new CSSParseException("Invalid number "
+                                                  + e.getMessage(),
+                                                  getLocator(),
+                                                  e));
+            }
+            reportWarningSkipText(getLocator(), skipAfterExpression());
+    } catch (ParseException e) {
+            if (errorHandler != null) {
+                if (e.currentToken != null) {
+                        LocatorImpl li = new LocatorImpl(this,
+                                                      e.currentToken.next.beginLine,
+                                                      e.currentToken.next.beginColumn-1);
+                        reportError(li, e);
+                } else {
+                        reportError(getLocator(), e);
+            }
+                skipAfterExpression();
+            } else {
+                skipAfterExpression();
+            }
     }
-
-    private boolean jj_3R_226() {
-        if (jj_scan_token(MM)) {
-            return true;
+  }
+
+  final public void controlDirective() throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IF_SYM:
+      ifDirective();
+      break;
+    case EACH_SYM:
+      eachDirective();
+      break;
+    default:
+      jj_la1[99] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+  final public void ifContentStatement() throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case CONTENT_SYM:
+      contentDirective();
+      break;
+    case INCLUDE_SYM:
+      includeDirective();
+      break;
+    case MEDIA_SYM:
+      media();
+      break;
+    case EXTEND_SYM:
+      extendDirective();
+      break;
+    case PLUS:
+    case PRECEDES:
+    case SIBLING:
+    case LBRACKET:
+    case ANY:
+    case PARENT:
+    case DOT:
+    case COLON:
+    case INTERPOLATION:
+    case DEBUG_SYM:
+    case WARN_SYM:
+    case IDENT:
+    case HASH:
+      styleRuleOrDeclarationOrNestedProperties();
+      break;
+    case KEY_FRAME_SYM:
+      keyframes();
+      break;
+    default:
+      jj_la1[100] = jj_gen;
+      if (jj_2_3(2147483647)) {
+        variable();
+      } else {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case VARIABLE:
+          listModifyDirective();
+          break;
+        case EACH_SYM:
+        case IF_SYM:
+          controlDirective();
+          break;
+        default:
+          jj_la1[101] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+    }
+  }
+
+  final public void ifDirective() throws ParseException {
+  Token n = null;
+  String s = null;
+  String evaluator = "";
+    jj_consume_token(IF_SYM);
+    label_66:
+    while (true) {
+      s = booleanExpressionToken();
+                                   evaluator += s;
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+      case EQ:
+      case PLUS:
+      case MINUS:
+      case PRECEDES:
+      case SUCCEEDS:
+      case DIV:
+      case ANY:
+      case LPARAN:
+      case RPARAN:
+      case COMPARE:
+      case OR:
+      case AND:
+      case NOT_EQ:
+      case IDENT:
+      case NUMBER:
+      case VARIABLE:
+      case CONTAINS:
+        ;
+        break;
+      default:
+        jj_la1[102] = jj_gen;
+        break label_66;
+      }
+    }
+    jj_consume_token(LBRACE);
+    label_67:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[103] = jj_gen;
+        break label_67;
+      }
+      jj_consume_token(S);
+    }
+    documentHandler.startIfElseDirective();
+    documentHandler.ifDirective(evaluator);
+    label_68:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case INCLUDE_SYM:
+      case DEBUG_SYM:
+      case WARN_SYM:
+      case EACH_SYM:
+      case IF_SYM:
+      case EXTEND_SYM:
+      case CONTENT_SYM:
+      case IDENT:
+      case VARIABLE:
+      case HASH:
+      case MEDIA_SYM:
+      case KEY_FRAME_SYM:
+        ;
+        break;
+      default:
+        jj_la1[104] = jj_gen;
+        break label_68;
+      }
+      ifContentStatement();
+    }
+    jj_consume_token(RBRACE);
+    label_69:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[105] = jj_gen;
+        break label_69;
+      }
+      jj_consume_token(S);
+    }
+    label_70:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ELSE_SYM:
+        ;
+        break;
+      default:
+        jj_la1[106] = jj_gen;
+        break label_70;
+      }
+      elseDirective();
+    }
+    documentHandler.endIfElseDirective();
+  }
+
+  final public void elseDirective() throws ParseException {
+  String evaluator = "";
+  Token n = null;
+  String s = null;
+    jj_consume_token(ELSE_SYM);
+    label_71:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[107] = jj_gen;
+        break label_71;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IF:
+      jj_consume_token(IF);
+      label_72:
+      while (true) {
+        s = booleanExpressionToken();
+                                            evaluator += s;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+        case EQ:
+        case PLUS:
+        case MINUS:
+        case PRECEDES:
+        case SUCCEEDS:
+        case DIV:
+        case ANY:
+        case LPARAN:
+        case RPARAN:
+        case COMPARE:
+        case OR:
+        case AND:
+        case NOT_EQ:
+        case IDENT:
+        case NUMBER:
+        case VARIABLE:
+        case CONTAINS:
+          ;
+          break;
+        default:
+          jj_la1[108] = jj_gen;
+          break label_72;
+        }
+      }
+      break;
+    default:
+      jj_la1[109] = jj_gen;
+      ;
+    }
+    jj_consume_token(LBRACE);
+    label_73:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[110] = jj_gen;
+        break label_73;
+      }
+      jj_consume_token(S);
+    }
+    if(!evaluator.trim().equals("")){ documentHandler.ifDirective(evaluator); }
+    else{ documentHandler.elseDirective(); }
+    label_74:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case INCLUDE_SYM:
+      case DEBUG_SYM:
+      case WARN_SYM:
+      case EACH_SYM:
+      case IF_SYM:
+      case EXTEND_SYM:
+      case CONTENT_SYM:
+      case IDENT:
+      case VARIABLE:
+      case HASH:
+      case MEDIA_SYM:
+      case KEY_FRAME_SYM:
+        ;
+        break;
+      default:
+        jj_la1[111] = jj_gen;
+        break label_74;
+      }
+      ifContentStatement();
+    }
+    jj_consume_token(RBRACE);
+    label_75:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[112] = jj_gen;
+        break label_75;
+      }
+      jj_consume_token(S);
+    }
+  }
+
+  final public String booleanExpressionToken() throws ParseException {
+  Token n = null;
+  String s = null;
+    if (jj_2_4(2147483647)) {
+      s = containsDirective();
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case VARIABLE:
+        n = jj_consume_token(VARIABLE);
+        break;
+      case IDENT:
+        n = jj_consume_token(IDENT);
+        break;
+      case NUMBER:
+        n = jj_consume_token(NUMBER);
+        break;
+      case LPARAN:
+        n = jj_consume_token(LPARAN);
+        break;
+      case RPARAN:
+        n = jj_consume_token(RPARAN);
+        break;
+      case PLUS:
+        n = jj_consume_token(PLUS);
+        break;
+      case MINUS:
+        n = jj_consume_token(MINUS);
+        break;
+      case DIV:
+        n = jj_consume_token(DIV);
+        break;
+      case ANY:
+        n = jj_consume_token(ANY);
+        break;
+      case COMPARE:
+        n = jj_consume_token(COMPARE);
+        break;
+      case EQ:
+        n = jj_consume_token(EQ);
+        break;
+      case PRECEDES:
+        n = jj_consume_token(PRECEDES);
+        break;
+      case SUCCEEDS:
+        n = jj_consume_token(SUCCEEDS);
+        break;
+      case OR:
+        n = jj_consume_token(OR);
+        break;
+      case AND:
+        n = jj_consume_token(AND);
+        break;
+      case S:
+        n = jj_consume_token(S);
+        break;
+      case NOT_EQ:
+        n = jj_consume_token(NOT_EQ);
+        break;
+      default:
+        jj_la1[113] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+   if(n!=null){{if (true) return n.image;}}
+   else{{if (true) return s;}}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void eachDirective() throws ParseException {
+  Token var;
+  ArrayList<String> list = null;
+  String listVariable = null;
+    jj_consume_token(EACH_SYM);
+    label_76:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[114] = jj_gen;
+        break label_76;
+      }
+      jj_consume_token(S);
+    }
+    var = jj_consume_token(VARIABLE);
+    label_77:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[115] = jj_gen;
+        break label_77;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(EACH_IN);
+    label_78:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[116] = jj_gen;
+        break label_78;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+      list = stringList();
+   documentHandler.startEachDirective(var.image, list);
+      break;
+    case VARIABLE:
+      listVariable = variableName();
+   documentHandler.startEachDirective(var.image, listVariable);
+      break;
+    default:
+      jj_la1[117] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    jj_consume_token(LBRACE);
+    label_79:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[118] = jj_gen;
+        break label_79;
+      }
+      jj_consume_token(S);
+    }
+    label_80:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case INCLUDE_SYM:
+      case DEBUG_SYM:
+      case WARN_SYM:
+      case EACH_SYM:
+      case IF_SYM:
+      case EXTEND_SYM:
+      case CONTENT_SYM:
+      case IDENT:
+      case VARIABLE:
+      case HASH:
+      case MEDIA_SYM:
+      case KEY_FRAME_SYM:
+        ;
+        break;
+      default:
+        jj_la1[119] = jj_gen;
+        break label_80;
+      }
+      ifContentStatement();
+    }
+    jj_consume_token(RBRACE);
+    label_81:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[120] = jj_gen;
+        break label_81;
+      }
+      jj_consume_token(S);
+    }
+    documentHandler.endEachDirective();
+  }
+
+  final public ArrayList<String > stringList() throws ParseException {
+        ArrayList<String > strings = new ArrayList<String >();
+        Token input;
+    input = jj_consume_token(IDENT);
+    label_82:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[121] = jj_gen;
+        break label_82;
+      }
+      jj_consume_token(S);
+    }
+          strings.add(input.image);
+    label_83:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[122] = jj_gen;
+        break label_83;
+      }
+      jj_consume_token(COMMA);
+      label_84:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[123] = jj_gen;
+          break label_84;
+        }
+        jj_consume_token(S);
+      }
+      input = jj_consume_token(IDENT);
+                                               strings.add(input.image);
+      label_85:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[124] = jj_gen;
+          break label_85;
+        }
+        jj_consume_token(S);
+      }
+    }
+          {if (true) return strings;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void mixinDirective() throws ParseException {
+    String name;
+    ArrayList<VariableNode> args = null;
+    String body;
+    jj_consume_token(MIXIN_SYM);
+    label_86:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[125] = jj_gen;
+        break label_86;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INTERPOLATION:
+    case IDENT:
+      name = property();
+      break;
+    case FUNCTION:
+      name = functionName();
+      args = arglist();
+      jj_consume_token(RPARAN);
+      label_87:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[126] = jj_gen;
+          break label_87;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[127] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    jj_consume_token(LBRACE);
+    label_88:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[128] = jj_gen;
+        break label_88;
+      }
+      jj_consume_token(S);
+    }
+     documentHandler.startMixinDirective(name, args);
+    label_89:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case INCLUDE_SYM:
+      case DEBUG_SYM:
+      case WARN_SYM:
+      case EACH_SYM:
+      case IF_SYM:
+      case EXTEND_SYM:
+      case CONTENT_SYM:
+      case IDENT:
+      case VARIABLE:
+      case HASH:
+      case MEDIA_SYM:
+      case PAGE_SYM:
+      case FONT_FACE_SYM:
+      case KEY_FRAME_SYM:
+        ;
+        break;
+      default:
+        jj_la1[129] = jj_gen;
+        break label_89;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case PRECEDES:
+      case SIBLING:
+      case LBRACKET:
+      case ANY:
+      case PARENT:
+      case DOT:
+      case COLON:
+      case INTERPOLATION:
+      case INCLUDE_SYM:
+      case DEBUG_SYM:
+      case WARN_SYM:
+      case EACH_SYM:
+      case IF_SYM:
+      case EXTEND_SYM:
+      case CONTENT_SYM:
+      case IDENT:
+      case VARIABLE:
+      case HASH:
+      case MEDIA_SYM:
+      case KEY_FRAME_SYM:
+        ifContentStatement();
+        break;
+      case FONT_FACE_SYM:
+        fontFace();
+        break;
+      case PAGE_SYM:
+        page();
+        break;
+      default:
+        jj_la1[130] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+    jj_consume_token(RBRACE);
+    label_90:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[131] = jj_gen;
+        break label_90;
+      }
+      jj_consume_token(S);
+    }
+     documentHandler.endMixinDirective(name, args);
+  }
+
+  final public ArrayList<VariableNode> arglist() throws ParseException {
+    ArrayList<VariableNode> args = new ArrayList<VariableNode>();
+    VariableNode arg;
+    boolean hasNonOptionalArgument = false;
+    arg = mixinArg();
+    label_91:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[132] = jj_gen;
+        break label_91;
+      }
+      jj_consume_token(COMMA);
+      label_92:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[133] = jj_gen;
+          break label_92;
         }
-        return false;
+        jj_consume_token(S);
+      }
+                                      hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg, hasNonOptionalArgument); args.add(arg);
+      arg = mixinArg();
     }
+      hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg, hasNonOptionalArgument); args.add(arg);
+        {if (true) return args;}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_225() {
-        if (jj_scan_token(CM)) {
-            return true;
-        }
-        return false;
-    }
+  boolean checkMixinForNonOptionalArguments(VariableNode arg, boolean hasNonOptionalArguments) throws ParseException {
+        boolean currentArgHasArguments = arg.getExpr() != null && arg.getExpr().getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE && arg.getExpr().getNextLexicalUnit() != null;
 
-    private boolean jj_3R_200() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_248()) {
-            jj_scanpos = xsp;
-            if (jj_3R_249()) {
-                return true;
-            }
-        }
+        if(currentArgHasArguments)
+        {
+                if(hasNonOptionalArguments)
+                {
+                        throw new ParseException("Sass Error: Required argument $"+ arg.getName() +" must come before any optional arguments.");
+                }
+                return hasNonOptionalArguments;
+        }else
+        {
+        return true;
+        }
+  }
+
+  final public VariableNode mixinArg() throws ParseException {
+    String name;
+    Token variable = null;
+    LexicalUnitImpl first = null;
+    LexicalUnitImpl prev = null;
+    LexicalUnitImpl next = null;
+    name = variableName();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COLON:
+    case VARIABLE:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COLON:
+        jj_consume_token(COLON);
+        label_93:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_3_2()) {
-                jj_scanpos = xsp;
-                break;
-            }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[134] = jj_gen;
+            break label_93;
+          }
+          jj_consume_token(S);
         }
+        first = nonVariableTerm(null);
+        prev = first;
+        label_94:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
+          if (jj_2_5(3)) {
+            ;
+          } else {
+            break label_94;
+          }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case COMMA:
+            jj_consume_token(COMMA);
+            label_95:
+            while (true) {
+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+              case S:
+                ;
                 break;
+              default:
+                jj_la1[135] = jj_gen;
+                break label_95;
+              }
+              jj_consume_token(S);
             }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_224() {
-        if (jj_scan_token(PT)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_223() {
-        if (jj_scan_token(PERCENTAGE)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_206() {
-        if (jj_3R_251()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_222() {
-        if (jj_scan_token(NUMBER)) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_221() {
-        if (jj_3R_255()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3_1() {
-        if (jj_3R_176()) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean jj_3R_198() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_221()) {
-            jj_scanpos = xsp;
-        }
-        xsp = jj_scanpos;
-        if (jj_3R_222()) {
-            jj_scanpos = xsp;
-            if (jj_3R_223()) {
-                jj_scanpos = xsp;
-                if (jj_3R_224()) {
-                    jj_scanpos = xsp;
-                    if (jj_3R_225()) {
-                        jj_scanpos = xsp;
-                        if (jj_3R_226()) {
-                            jj_scanpos = xsp;
-                            if (jj_3R_227()) {
-                                jj_scanpos = xsp;
-                                if (jj_3R_228()) {
-                                    jj_scanpos = xsp;
-                                    if (jj_3R_229()) {
-                                        jj_scanpos = xsp;
-                                        if (jj_3R_230()) {
-                                            jj_scanpos = xsp;
-                                            if (jj_3R_231()) {
-                                                jj_scanpos = xsp;
-                                                if (jj_3R_232()) {
-                                                    jj_scanpos = xsp;
-                                                    if (jj_3R_233()) {
-                                                        jj_scanpos = xsp;
-                                                        if (jj_3R_234()) {
-                                                            jj_scanpos = xsp;
-                                                            if (jj_3R_235()) {
-                                                                jj_scanpos = xsp;
-                                                                if (jj_3R_236()) {
-                                                                    jj_scanpos = xsp;
-                                                                    if (jj_3R_237()) {
-                                                                        jj_scanpos = xsp;
-                                                                        if (jj_3R_238()) {
-                                                                            jj_scanpos = xsp;
-                                                                            if (jj_3R_239()) {
-                                                                                jj_scanpos = xsp;
-                                                                                if (jj_3R_240()) {
-                                                                                    jj_scanpos = xsp;
-                                                                                    if (jj_3R_241()) {
-                                                                                        jj_scanpos = xsp;
-                                                                                        if (jj_3R_242()) {
-                                                                                            return true;
-                                                                                        }
-                                                                                    }
-                                                                                }
-                                                                            }
-                                                                        }
-                                                                    }
-                                                                }
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        return false;
+            break;
+          default:
+            jj_la1[136] = jj_gen;
+            ;
+          }
+          prev = nonVariableTerm(prev);
+        }
+        break;
+      case VARIABLE:
+        variable = jj_consume_token(VARIABLE);
+                                    first = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn,
+                 prev, variable.image);
+        break;
+      default:
+        jj_la1[137] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      break;
+    default:
+      jj_la1[138] = jj_gen;
+      ;
     }
-
-    private boolean jj_3R_182() {
-        if (jj_3R_200()) {
-            return true;
-        }
-        Token xsp;
+        VariableNode arg = new VariableNode(name, first, false);
+        {if (true) return arg;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ArrayList<LexicalUnitImpl> argValuelist() throws ParseException {
+    ArrayList<LexicalUnitImpl> args = new ArrayList<LexicalUnitImpl>();
+    LexicalUnitImpl first = null;
+    LexicalUnitImpl next = null;
+    LexicalUnitImpl prev = null;
+    first = term(null);
+                         args.add(first); prev = first;
+    label_96:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case MINUS:
+      case DOT:
+      case COLON:
+      case TO:
+      case THROUGH:
+      case FROM:
+      case STRING:
+      case IDENT:
+      case NUMBER:
+      case URL:
+      case VARIABLE:
+      case PERCENTAGE:
+      case PT:
+      case MM:
+      case CM:
+      case PC:
+      case IN:
+      case PX:
+      case EMS:
+      case LEM:
+      case REM:
+      case EXS:
+      case DEG:
+      case RAD:
+      case GRAD:
+      case MS:
+      case SECOND:
+      case HZ:
+      case KHZ:
+      case DIMEN:
+      case HASH:
+      case UNICODERANGE:
+      case FUNCTION:
+        ;
+        break;
+      default:
+        jj_la1[139] = jj_gen;
+        break label_96;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COLON:
+        jj_consume_token(COLON);
+        label_97:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_201()) {
-                jj_scanpos = xsp;
-                break;
-            }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[140] = jj_gen;
+            break label_97;
+          }
+          jj_consume_token(S);
+        }
+        break;
+      default:
+        jj_la1[141] = jj_gen;
+        ;
+      }
+      next = term(prev);
+                                                                                              prev.setNextLexicalUnit(next); prev = next;
+    }
+    label_98:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[142] = jj_gen;
+        break label_98;
+      }
+      jj_consume_token(COMMA);
+      label_99:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[143] = jj_gen;
+          break label_99;
+        }
+        jj_consume_token(S);
+      }
+      first = term(null);
+                         args.add(first); prev = first;
+      label_100:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case PLUS:
+        case MINUS:
+        case DOT:
+        case COLON:
+        case TO:
+        case THROUGH:
+        case FROM:
+        case STRING:
+        case IDENT:
+        case NUMBER:
+        case URL:
+        case VARIABLE:
+        case PERCENTAGE:
+        case PT:
+        case MM:
+        case CM:
+        case PC:
+        case IN:
+        case PX:
+        case EMS:
+        case LEM:
+        case REM:
+        case EXS:
+        case DEG:
+        case RAD:
+        case GRAD:
+        case MS:
+        case SECOND:
+        case HZ:
+        case KHZ:
+        case DIMEN:
+        case HASH:
+        case UNICODERANGE:
+        case FUNCTION:
+          ;
+          break;
+        default:
+          jj_la1[144] = jj_gen;
+          break label_100;
         }
-        return false;
-    }
-
-    private boolean jj_3R_181() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_198()) {
-            jj_scanpos = xsp;
-            if (jj_3R_199()) {
-                return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case COLON:
+          jj_consume_token(COLON);
+          label_101:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
+            default:
+              jj_la1[145] = jj_gen;
+              break label_101;
             }
-        }
+            jj_consume_token(S);
+          }
+          break;
+        default:
+          jj_la1[146] = jj_gen;
+          ;
+        }
+        next = term(prev);
+                                                                                              prev.setNextLexicalUnit(next); prev = next;
+      }
+    }
+     {if (true) return args;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void includeDirective() throws ParseException {
+    String name;
+    ArrayList<LexicalUnitImpl> args=null;
+    jj_consume_token(INCLUDE_SYM);
+    label_102:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[147] = jj_gen;
+        break label_102;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INTERPOLATION:
+    case IDENT:
+      name = property();
+      break;
+    case VARIABLE:
+      name = variableName();
+                                              name = "$"+name;
+      break;
+    case FUNCTION:
+      name = functionName();
+      args = argValuelist();
+      jj_consume_token(RPARAN);
+      label_103:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[148] = jj_gen;
+          break label_103;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[149] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case SEMICOLON:
+      label_104:
+      while (true) {
+        jj_consume_token(SEMICOLON);
+        label_105:
         while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[150] = jj_gen;
+            break label_105;
+          }
+          jj_consume_token(S);
         }
-        return false;
-    }
-
-    private boolean jj_3R_258() {
-        if (jj_scan_token(HASH)) {
-            return true;
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case SEMICOLON:
+          ;
+          break;
+        default:
+          jj_la1[151] = jj_gen;
+          break label_104;
         }
-        return false;
-    }
+      }
+            documentHandler.includeDirective(name, args);
+      break;
+    case LBRACE:
+      jj_consume_token(LBRACE);
+      label_106:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[152] = jj_gen;
+          break label_106;
+        }
+        jj_consume_token(S);
+      }
+                       documentHandler.startIncludeContentBlock(name);
+      label_107:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case PLUS:
+        case PRECEDES:
+        case SIBLING:
+        case LBRACKET:
+        case ANY:
+        case PARENT:
+        case DOT:
+        case COLON:
+        case INTERPOLATION:
+        case DEBUG_SYM:
+        case WARN_SYM:
+        case IDENT:
+        case HASH:
+          ;
+          break;
+        default:
+          jj_la1[153] = jj_gen;
+          break label_107;
+        }
+        styleRuleOrDeclarationOrNestedProperties();
+      }
+      jj_consume_token(RBRACE);
+      label_108:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[154] = jj_gen;
+          break label_108;
+        }
+        jj_consume_token(S);
+      }
+                       documentHandler.endIncludeContentBlock();
+      break;
+    default:
+      jj_la1[155] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+  final public String interpolation() throws ParseException {
+  Token n;
+    n = jj_consume_token(INTERPOLATION);
+    {if (true) return n.image;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void listModifyDirective() throws ParseException {
+    String list = null;
+    String remove = null;
+    String separator = null;
+    String variable = null;
+    Token n = null;
+    Token type = null;
+    //refactor, remove those 3 LOOKAHEAD(5).
+      n = jj_consume_token(VARIABLE);
+                    variable = n.image;
+    label_109:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[156] = jj_gen;
+        break label_109;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(COLON);
+    label_110:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[157] = jj_gen;
+        break label_110;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case APPEND:
+      type = jj_consume_token(APPEND);
+      break;
+    case REMOVE:
+      type = jj_consume_token(REMOVE);
+      break;
+    case CONTAINS:
+      type = jj_consume_token(CONTAINS);
+      break;
+    default:
+      jj_la1[158] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    label_111:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[159] = jj_gen;
+        break label_111;
+      }
+      jj_consume_token(S);
+    }
+    list = listModifyDirectiveArgs(0);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case RPARAN:
+      jj_consume_token(RPARAN);
+      break;
+    default:
+      jj_la1[160] = jj_gen;
+      ;
+    }
+    jj_consume_token(COMMA);
+    label_112:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[161] = jj_gen;
+        break label_112;
+      }
+      jj_consume_token(S);
+    }
+    remove = listModifyDirectiveArgs(1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+      jj_consume_token(COMMA);
+      label_113:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[162] = jj_gen;
+          break label_113;
+        }
+        jj_consume_token(S);
+      }
+      n = jj_consume_token(IDENT);
+                                     separator = n.image;
+      label_114:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[163] = jj_gen;
+          break label_114;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[164] = jj_gen;
+      ;
+    }
+    jj_consume_token(RPARAN);
+      switch (type.kind) {
+      case APPEND:
+          documentHandler.appendDirective(variable,list,remove,separator);
+          break;
+      case REMOVE:
+          documentHandler.removeDirective(variable,list,remove,separator);
+          break;
+      case CONTAINS:
+          if(variable == null){
+              variable = "$var_"+UUID.randomUUID();
+          }
+          documentHandler.containsDirective(variable,list,remove,separator);
+          break;
+      default:
+          break;
+      }
+    label_115:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[165] = jj_gen;
+        break label_115;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(SEMICOLON);
+    label_116:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[166] = jj_gen;
+        break label_116;
+      }
+      jj_consume_token(S);
+    }
+  }
 
-    private boolean jj_3_4() {
-        if (jj_3R_179()) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void appendDirective() throws ParseException {
+        String list = null;
+        String remove = null;
+        String separator = null;
+        String variable = null;
+        Token n = null;
+    n = jj_consume_token(VARIABLE);
+                    variable = n.image;
+    label_117:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[167] = jj_gen;
+        break label_117;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(COLON);
+    label_118:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[168] = jj_gen;
+        break label_118;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(APPEND);
+    label_119:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[169] = jj_gen;
+        break label_119;
+      }
+      jj_consume_token(S);
+    }
+    list = listModifyDirectiveArgs(0);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case RPARAN:
+      jj_consume_token(RPARAN);
+      break;
+    default:
+      jj_la1[170] = jj_gen;
+      ;
+    }
+    jj_consume_token(COMMA);
+    label_120:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[171] = jj_gen;
+        break label_120;
+      }
+      jj_consume_token(S);
+    }
+    remove = listModifyDirectiveArgs(1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+      jj_consume_token(COMMA);
+      label_121:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[172] = jj_gen;
+          break label_121;
+        }
+        jj_consume_token(S);
+      }
+      n = jj_consume_token(IDENT);
+                                     separator = n.image;
+      label_122:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[173] = jj_gen;
+          break label_122;
         }
-        return false;
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[174] = jj_gen;
+      ;
     }
+    jj_consume_token(RPARAN);
+    documentHandler.appendDirective(variable,list,remove,separator);
+  }
 
-    private boolean jj_3R_251() {
-        if (jj_3R_186()) {
-            return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void removeDirective() throws ParseException {
+    String list = null;
+    String remove = null;
+    String separator = null;
+    String variable = null;
+    Token n = null;
+    n = jj_consume_token(VARIABLE);
+                    variable = n.image;
+    label_123:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[175] = jj_gen;
+        break label_123;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(COLON);
+    label_124:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[176] = jj_gen;
+        break label_124;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(REMOVE);
+    label_125:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[177] = jj_gen;
+        break label_125;
+      }
+      jj_consume_token(S);
+    }
+    list = listModifyDirectiveArgs(0);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case RPARAN:
+      jj_consume_token(RPARAN);
+      break;
+    default:
+      jj_la1[178] = jj_gen;
+      ;
+    }
+    jj_consume_token(COMMA);
+    label_126:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[179] = jj_gen;
+        break label_126;
+      }
+      jj_consume_token(S);
+    }
+    remove = listModifyDirectiveArgs(1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+      jj_consume_token(COMMA);
+      label_127:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[180] = jj_gen;
+          break label_127;
+        }
+        jj_consume_token(S);
+      }
+      n = jj_consume_token(IDENT);
+                                     separator = n.image;
+      label_128:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[181] = jj_gen;
+          break label_128;
         }
-        return false;
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[182] = jj_gen;
+      ;
     }
+    jj_consume_token(RPARAN);
+    documentHandler.removeDirective(variable,list,remove,separator);
+  }
 
-    private boolean jj_3R_259() {
-        if (jj_scan_token(URL)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String containsDirective() throws ParseException {
+        String list = null;
+        String remove = null;
+        String separator = null;
+        String variable = null;
+        Token n = null;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case VARIABLE:
+      n = jj_consume_token(VARIABLE);
+                     variable = n.image;
+      label_129:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[183] = jj_gen;
+          break label_129;
+        }
+        jj_consume_token(S);
+      }
+      jj_consume_token(COLON);
+      label_130:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[184] = jj_gen;
+          break label_130;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[185] = jj_gen;
+      ;
+    }
+    jj_consume_token(CONTAINS);
+    label_131:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[186] = jj_gen;
+        break label_131;
+      }
+      jj_consume_token(S);
+    }
+    list = listModifyDirectiveArgs(0);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case RPARAN:
+      jj_consume_token(RPARAN);
+      break;
+    default:
+      jj_la1[187] = jj_gen;
+      ;
+    }
+    jj_consume_token(COMMA);
+    label_132:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[188] = jj_gen;
+        break label_132;
+      }
+      jj_consume_token(S);
+    }
+    remove = listModifyDirectiveArgs(1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+      jj_consume_token(COMMA);
+      label_133:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[189] = jj_gen;
+          break label_133;
+        }
+        jj_consume_token(S);
+      }
+      n = jj_consume_token(IDENT);
+                                     separator = n.image;
+      label_134:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[190] = jj_gen;
+          break label_134;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[191] = jj_gen;
+      ;
+    }
+    jj_consume_token(RPARAN);
+      /*
+       *if it is not in the form like "$contains : contains($items, .v-button);"
+       *for example in @if, like "@if (contains(a b c, b))", then create a temp
+       *variable for contains(a b c, b);
+       */
+      if(variable == null){
+          variable = "$var_"+UUID.randomUUID();
+      }
+      documentHandler.containsDirective(variable,list,remove,separator);
+      {if (true) return variable;}
+    throw new Error("Missing return statement in function");
+  }
+
+  String listModifyDirectiveArgs(int nest) throws ParseException {
+        String list = "";
+        int nesting = nest;
+        Token t = null;
 
-    private boolean jj_3R_205() {
-        if (jj_3R_181()) {
-            return true;
-        }
-        return false;
-    }
+        while(true)
+        {
+                t = getToken(1);
+                String s = t.image;
+                if(t.kind == VARIABLE||t.kind == IDENT)
+                {
+                  list += s;
+                }else if(s.toLowerCase().equals("auto")||s.toLowerCase().equals("space")||s.toLowerCase().equals("comma"))
+                {
+                        int i = 2;
+                        Token temp = getToken(i);
+                        boolean isLast = true;
+                        while(temp.kind != SEMICOLON)
+                        {
+                                if(temp.kind != RPARAN || temp.kind != S)
+                                {
+                                  isLast = false;
+                                }
+                                i++;
+                                temp = getToken(i);
+                        }
 
-    private boolean jj_3R_184() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_205()) {
-            jj_scanpos = xsp;
-            if (jj_3R_206()) {
-                return true;
-            }
-        }
-        return false;
-    }
+                        if(isLast)
+                        {
+                        return list;
+                        }
+                }
+                else if(t.kind == STRING)
+                {
+                        list += s.substring(1,s.length()).substring(0,s.length()-2);
 
-    private boolean jj_3_9() {
-        if (jj_3R_185()) {
-            return true;
-        }
-        return false;
-    }
+                }else if(t.kind == LPARAN)
+                {
+                        nesting++;
+                        if(nesting > nest+1)
+                        {
+                                throw new CSSParseException("Only one ( ) pair per parameter allowed", getLocator());
+                        }
+                }else if(t.kind == RPARAN)
+                {
+                        nesting--;
+                        if(nesting == 0)
+                        {
+                                return list;
+                        }
+                } else if(t.kind == COMMA)
+                {
+                        if(nesting == nest)
+                        {
+                          return list;
+                        }else
+                        {
+                          list += ",";
+                        }
 
-    private boolean jj_3R_262() {
-        if (jj_scan_token(INTERPOLATION)) {
-            return true;
-        }
-        return false;
-    }
+                }else if(t.kind == S)
+                {
+                  list += " ";
+                } else if(t.kind == LBRACE)
+                {
+                  throw new CSSParseException("Invalid token,'{' found", getLocator());
+                }
 
-    private boolean jj_3_3() {
-        if (jj_3R_176()) {
-            return true;
+                getNextToken();
         }
-        return false;
-    }
+  }
+
+  final public Node returnDirective() throws ParseException {
+    String raw;
+    raw = skipStatement();
+         {if (true) return null;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void debuggingDirective() throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case DEBUG_SYM:
+      debugDirective();
+      break;
+    case WARN_SYM:
+      warnDirective();
+      break;
+    default:
+      jj_la1[192] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+  final public void debugDirective() throws ParseException {
+    jj_consume_token(DEBUG_SYM);
+    String content = skipStatementUntilSemiColon();
+    // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
+    System.out.println(content);
+    label_135:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[193] = jj_gen;
+        break label_135;
+      }
+      jj_consume_token(S);
+    }
+  }
+
+  final public void warnDirective() throws ParseException {
+    jj_consume_token(WARN_SYM);
+    String content = skipStatementUntilSemiColon();
+    // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
+    System.err.println(content);
+    label_136:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[194] = jj_gen;
+        break label_136;
+      }
+      jj_consume_token(S);
+    }
+  }
+
+  final public Node forDirective() throws ParseException {
+    String var;
+    String from;
+    String to;
+    boolean exclusive;
+    String body;
+    Token tok;
+    var = variableName();
+        int[] toThrough = {TO, THROUGH};
+        from = skipStatementUntil(toThrough);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case TO:
+      tok = jj_consume_token(TO);
+                 exclusive = true;
+      break;
+    case THROUGH:
+      tok = jj_consume_token(THROUGH);
+                       exclusive = false;
+      break;
+    default:
+      jj_la1[195] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    to = skipStatementUntilLeftBrace();
+    label_137:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[196] = jj_gen;
+        break label_137;
+      }
+      jj_consume_token(S);
+    }
+    body = skipStatement();
+     {if (true) return documentHandler.forDirective(var, from, to, exclusive, body);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Node whileDirective() throws ParseException {
+    String condition;
+    String body;
+    condition = skipStatementUntilLeftBrace();
+    body = skipStatement();
+        {if (true) return documentHandler.whileDirective(condition, body);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void extendDirective() throws ParseException {
+ ArrayList<String> list;
+    jj_consume_token(EXTEND_SYM);
+    label_138:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[197] = jj_gen;
+        break label_138;
+      }
+      jj_consume_token(S);
+    }
+    list = selectorList();
+    label_139:
+    while (true) {
+      jj_consume_token(SEMICOLON);
+      label_140:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[198] = jj_gen;
+          break label_140;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SEMICOLON:
+        ;
+        break;
+      default:
+        jj_la1[199] = jj_gen;
+        break label_139;
+      }
+    }
+     documentHandler.extendDirective(list);
+  }
+
+  final public void contentDirective() throws ParseException {
+    jj_consume_token(CONTENT_SYM);
+    label_141:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[200] = jj_gen;
+        break label_141;
+      }
+      jj_consume_token(S);
+    }
+    label_142:
+    while (true) {
+      jj_consume_token(SEMICOLON);
+      label_143:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[201] = jj_gen;
+          break label_143;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SEMICOLON:
+        ;
+        break;
+      default:
+        jj_la1[202] = jj_gen;
+        break label_142;
+      }
+    }
+     documentHandler.contentDirective();
+  }
+
+  Node importDirective() throws ParseException {
+    return null;
+  }
+
+  Node charsetDirective() throws ParseException {
+    return null;
+  }
+
+  Node mozDocumentDirective() throws ParseException {
+    return null;
+  }
+
+  Node supportsDirective() throws ParseException {
+    return null;
+  }
+
+  final public void nestedProperties() throws ParseException {
+ String name;
+LexicalUnit exp;
+    name = property();
+    jj_consume_token(COLON);
+    label_144:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[203] = jj_gen;
+        break label_144;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(LBRACE);
+    label_145:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[204] = jj_gen;
+        break label_145;
+      }
+      jj_consume_token(S);
+    }
+      documentHandler.startNestedProperties(name);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INTERPOLATION:
+    case IDENT:
+      declaration();
+      break;
+    default:
+      jj_la1[205] = jj_gen;
+      ;
+    }
+    label_146:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SEMICOLON:
+        ;
+        break;
+      default:
+        jj_la1[206] = jj_gen;
+        break label_146;
+      }
+      jj_consume_token(SEMICOLON);
+      label_147:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[207] = jj_gen;
+          break label_147;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTERPOLATION:
+      case IDENT:
+        declaration();
+        break;
+      default:
+        jj_la1[208] = jj_gen;
+        ;
+      }
+    }
+    jj_consume_token(RBRACE);
+      documentHandler.endNestedProperties(name);
+    label_148:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[209] = jj_gen;
+        break label_148;
+      }
+      jj_consume_token(S);
+    }
+  }
 
-    private boolean jj_3R_265() {
-        if (jj_scan_token(PLUS)) {
-            return true;
-        }
-        return false;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void styleRuleOrDeclarationOrNestedProperties() throws ParseException {
+    try {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DEBUG_SYM:
+      case WARN_SYM:
+        debuggingDirective();
+        break;
+      default:
+        jj_la1[210] = jj_gen;
+        if (jj_2_6(2147483647)) {
+          styleRule();
+        } else if (jj_2_7(3)) {
+          declarationOrNestedProperties();
+        } else {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case PLUS:
+          case PRECEDES:
+          case SIBLING:
+          case LBRACKET:
+          case ANY:
+          case PARENT:
+          case DOT:
+          case COLON:
+          case INTERPOLATION:
+          case IDENT:
+          case HASH:
+            styleRule();
+            break;
+          default:
+            jj_la1[211] = jj_gen;
+            jj_consume_token(-1);
+            throw new ParseException();
+          }
+        }
+      }
+    } catch (JumpException e) {
+     skipAfterExpression();
+     // reportWarningSkipText(getLocator(), skipAfterExpression());
+
+    } catch (ParseException e) {
+     if (errorHandler != null) {
+         if (e.currentToken != null) {
+             LocatorImpl li = new LocatorImpl(this,
+                                              e.currentToken.next.beginLine,
+                                              e.currentToken.next.beginColumn-1);
+             reportError(li, e);
+         } else {
+             reportError(getLocator(), e);
+         }
+         skipAfterExpression();
+         /*
+         LocatorImpl loc = (LocatorImpl) getLocator();
+         loc.column--;
+         reportWarningSkipText(loc, skipAfterExpression());
+         */
+     } else {
+         skipAfterExpression();
+     }
     }
+  }
 
-    private boolean jj_3R_255() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_264()) {
-            jj_scanpos = xsp;
-            if (jj_3R_265()) {
-                return true;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void declarationOrNestedProperties() throws ParseException {
+  boolean important = false;
+  String name;
+  LexicalUnitImpl exp;
+  Token save;
+  String comment = null;
+    try {
+      name = property();
+       save = token;
+      jj_consume_token(COLON);
+      label_149:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[212] = jj_gen;
+          break label_149;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case MINUS:
+      case DOT:
+      case TO:
+      case THROUGH:
+      case FROM:
+      case STRING:
+      case IDENT:
+      case NUMBER:
+      case URL:
+      case VARIABLE:
+      case PERCENTAGE:
+      case PT:
+      case MM:
+      case CM:
+      case PC:
+      case IN:
+      case PX:
+      case EMS:
+      case LEM:
+      case REM:
+      case EXS:
+      case DEG:
+      case RAD:
+      case GRAD:
+      case MS:
+      case SECOND:
+      case HZ:
+      case KHZ:
+      case DIMEN:
+      case HASH:
+      case UNICODERANGE:
+      case FUNCTION:
+        exp = expr();
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IMPORTANT_SYM:
+          important = prio();
+          break;
+        default:
+          jj_la1[213] = jj_gen;
+          ;
+        }
+         Token next = getToken(1);
+         if(next.kind == SEMICOLON || next.kind == RBRACE){
+             while(next.kind == SEMICOLON){
+                 skipStatement();
+                 next = getToken(1);
+             }
+             //only add special token kept for sprites '/**'
+             if(token.specialToken!=null && token.specialToken!=null && token.specialToken.image.startsWith("/**")){
+                 documentHandler.property(name, exp, important, token.specialToken.image);
+             }else{
+                 documentHandler.property(name, exp, important, null);
+             }
+         }
+        break;
+      case LBRACE:
+        jj_consume_token(LBRACE);
+        label_150:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[214] = jj_gen;
+            break label_150;
+          }
+          jj_consume_token(S);
+        }
+         documentHandler.startNestedProperties(name);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case INTERPOLATION:
+        case IDENT:
+          declaration();
+          break;
+        default:
+          jj_la1[215] = jj_gen;
+          ;
+        }
+        label_151:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case SEMICOLON:
+            ;
+            break;
+          default:
+            jj_la1[216] = jj_gen;
+            break label_151;
+          }
+          jj_consume_token(SEMICOLON);
+          label_152:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
+            default:
+              jj_la1[217] = jj_gen;
+              break label_152;
             }
+            jj_consume_token(S);
+          }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case INTERPOLATION:
+          case IDENT:
+            declaration();
+            break;
+          default:
+            jj_la1[218] = jj_gen;
+            ;
+          }
         }
-        return false;
+        jj_consume_token(RBRACE);
+        label_153:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[219] = jj_gen;
+            break label_153;
+          }
+          jj_consume_token(S);
+        }
+         documentHandler.endNestedProperties(name);
+        break;
+      default:
+        jj_la1[220] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    } catch (JumpException e) {
+     skipAfterExpression();
+     // reportWarningSkipText(getLocator(), skipAfterExpression());
+
+    } catch (NumberFormatException e) {
+     if (errorHandler != null) {
+         errorHandler.error(new CSSParseException("Invalid number "
+                                                  + e.getMessage(),
+                                                  getLocator(),
+                                                  e));
+     }
+     reportWarningSkipText(getLocator(), skipAfterExpression());
+    } catch (ParseException e) {
+     if (errorHandler != null) {
+         if (e.currentToken != null) {
+             LocatorImpl li = new LocatorImpl(this,
+                                              e.currentToken.next.beginLine,
+                                              e.currentToken.next.beginColumn-1);
+             reportError(li, e);
+         } else {
+             reportError(getLocator(), e);
+         }
+         skipAfterExpression();
+         /*
+         LocatorImpl loc = (LocatorImpl) getLocator();
+         loc.column--;
+         reportWarningSkipText(loc, skipAfterExpression());
+         */
+     } else {
+         skipAfterExpression();
+     }
     }
+  }
 
-    private boolean jj_3R_264() {
-        if (jj_scan_token(MINUS)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void declaration() throws ParseException {
+  boolean important = false;
+  String name;
+  LexicalUnit exp;
+  Token save;
+    try {
+      name = property();
+       save = token;
+      jj_consume_token(COLON);
+      label_154:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[221] = jj_gen;
+          break label_154;
+        }
+        jj_consume_token(S);
+      }
+      exp = expr();
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IMPORTANT_SYM:
+        important = prio();
+        break;
+      default:
+        jj_la1[222] = jj_gen;
+        ;
+      }
+         documentHandler.property(name, exp, important);
+    } catch (JumpException e) {
+     skipAfterExpression();
+     // reportWarningSkipText(getLocator(), skipAfterExpression());
+
+    } catch (NumberFormatException e) {
+     if (errorHandler != null) {
+         errorHandler.error(new CSSParseException("Invalid number "
+                                                  + e.getMessage(),
+                                                  getLocator(),
+                                                  e));
+     }
+     reportWarningSkipText(getLocator(), skipAfterExpression());
+    } catch (ParseException e) {
+     if (errorHandler != null) {
+         if (e.currentToken != null) {
+             LocatorImpl li = new LocatorImpl(this,
+                                              e.currentToken.next.beginLine,
+                                              e.currentToken.next.beginColumn-1);
+             reportError(li, e);
+         } else {
+             reportError(getLocator(), e);
+         }
+         skipAfterExpression();
+         /*
+        LocatorImpl loc = (LocatorImpl) getLocator();
+        loc.column--;
+        reportWarningSkipText(loc, skipAfterExpression());
+        */
+     } else {
+         skipAfterExpression();
+     }
+    }
+  }
 
-    private boolean jj_3R_260() {
-        if (jj_scan_token(UNICODERANGE)) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public boolean prio() throws ParseException {
+    jj_consume_token(IMPORTANT_SYM);
+    label_155:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[223] = jj_gen;
+        break label_155;
+      }
+      jj_consume_token(S);
+    }
+                             {if (true) return true;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public boolean guarded() throws ParseException {
+    jj_consume_token(GUARDED_SYM);
+    label_156:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[224] = jj_gen;
+        break label_156;
+      }
+      jj_consume_token(S);
+    }
+                          {if (true) return true;}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3_8() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3_9()) {
-            jj_scanpos = xsp;
-        }
-        if (jj_3R_184()) {
-            return true;
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public LexicalUnitImpl operator(LexicalUnitImpl prev) throws ParseException {
+ Token n;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+      /* (comments copied from basic_arithmetics.scss)
+      *supports:
+      * 1. standard arithmetic operations (+, -, *, /, %)
+      * 2. / is treated as css operator, unless one of its operands is variable or there is another binary arithmetic operator
+      *limits:
+      * 1. cannot mix arithmetic and css operations, e.g. "margin: 1px + 3px 2px" will fail
+      * 2. space between add and minus operator and their following operand is mandatory. e.g. "1 + 2" is valid, "1+2" is not
+      * 3. parenthesis is not supported now.  
+      */
+      n = jj_consume_token(COMMA);
+      label_157:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[225] = jj_gen;
+          break label_157;
+        }
+        jj_consume_token(S);
+      }
+                 {if (true) return LexicalUnitImpl.createComma(n.beginLine,
+            n.beginColumn,
+            prev);}
+      break;
+    case DIV:
+      n = jj_consume_token(DIV);
+      label_158:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[226] = jj_gen;
+          break label_158;
+        }
+        jj_consume_token(S);
+      }
+                  {if (true) return LexicalUnitImpl.createSlash(n.beginLine,
+            n.beginColumn,
+            prev);}
+      break;
+    case ANY:
+      n = jj_consume_token(ANY);
+      label_159:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[227] = jj_gen;
+          break label_159;
+        }
+        jj_consume_token(S);
+      }
+                   {if (true) return LexicalUnitImpl.createMultiply(n.beginLine,
+            n.beginColumn,
+            prev);}
+      break;
+    case MOD:
+      n = jj_consume_token(MOD);
+      label_160:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[228] = jj_gen;
+          break label_160;
+        }
+        jj_consume_token(S);
+      }
+                   {if (true) return LexicalUnitImpl.createModulo(n.beginLine,
+            n.beginColumn,
+            prev);}
+      break;
+    case PLUS:
+      n = jj_consume_token(PLUS);
+      label_161:
+      while (true) {
+        jj_consume_token(S);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[229] = jj_gen;
+          break label_161;
+        }
+      }
+                  {if (true) return LexicalUnitImpl.createAdd(n.beginLine,
+        n.beginColumn,
+        prev);}
+      break;
+    case MINUS:
+      n = jj_consume_token(MINUS);
+      label_162:
+      while (true) {
+        jj_consume_token(S);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[230] = jj_gen;
+          break label_162;
+        }
+      }
+                  {if (true) return LexicalUnitImpl.createMinus(n.beginLine,
+        n.beginColumn,
+        prev);}
+      break;
+    default:
+      jj_la1[231] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public LexicalUnitImpl expr() throws ParseException {
+    LexicalUnitImpl first, res;
+    char op;
+    first = term(null);
+                      res = first;
+    label_163:
+    while (true) {
+      if (jj_2_8(2)) {
+        ;
+      } else {
+        break label_163;
+      }
+      if (jj_2_9(2)) {
+        res = operator(res);
+      } else {
+        ;
+      }
+      res = term(res);
+    }
+    {if (true) return first;}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_189() {
-        if (jj_scan_token(SEMICOLON)) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
-            }
-        }
-        return false;
-    }
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public char unaryOperator() throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case MINUS:
+      jj_consume_token(MINUS);
+        {if (true) return '-';}
+      break;
+    case PLUS:
+      jj_consume_token(PLUS);
+        {if (true) return '+';}
+      break;
+    default:
+      jj_la1[232] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_187() {
-        if (jj_3R_184()) {
-            return true;
-        }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3_8()) {
-                jj_scanpos = xsp;
-                break;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public LexicalUnitImpl term(LexicalUnitImpl prev) throws ParseException {
+  LexicalUnitImpl result = null;
+  Token n = null;
+  char op = ' ';
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case MINUS:
+    case DOT:
+    case TO:
+    case THROUGH:
+    case FROM:
+    case STRING:
+    case IDENT:
+    case NUMBER:
+    case URL:
+    case PERCENTAGE:
+    case PT:
+    case MM:
+    case CM:
+    case PC:
+    case IN:
+    case PX:
+    case EMS:
+    case LEM:
+    case REM:
+    case EXS:
+    case DEG:
+    case RAD:
+    case GRAD:
+    case MS:
+    case SECOND:
+    case HZ:
+    case KHZ:
+    case DIMEN:
+    case HASH:
+    case UNICODERANGE:
+    case FUNCTION:
+      result = nonVariableTerm(prev);
+      break;
+    case VARIABLE:
+      result = variableTerm(prev);
+      break;
+    default:
+      jj_la1[233] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+          {if (true) return result;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public LexicalUnitImpl variableTerm(LexicalUnitImpl prev) throws ParseException {
+  LexicalUnitImpl result = null;
+  String varName = "";
+    varName = variableName();
+          result = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn,
+                 prev, varName); {if (true) return result;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public LexicalUnitImpl nonVariableTerm(LexicalUnitImpl prev) throws ParseException {
+LexicalUnitImpl result = null;
+  Token n = null;
+  char op = ' ';
+  String varName;
+  String s = "";
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case MINUS:
+    case NUMBER:
+    case PERCENTAGE:
+    case PT:
+    case MM:
+    case CM:
+    case PC:
+    case IN:
+    case PX:
+    case EMS:
+    case LEM:
+    case REM:
+    case EXS:
+    case DEG:
+    case RAD:
+    case GRAD:
+    case MS:
+    case SECOND:
+    case HZ:
+    case KHZ:
+    case DIMEN:
+    case FUNCTION:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case MINUS:
+        op = unaryOperator();
+        break;
+      default:
+        jj_la1[234] = jj_gen;
+        ;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case NUMBER:
+        n = jj_consume_token(NUMBER);
+          result = LexicalUnitImpl.createNumber(n.beginLine, n.beginColumn,
+                                                prev, number(op, n, 0));
+        break;
+      case PERCENTAGE:
+        n = jj_consume_token(PERCENTAGE);
+          result = LexicalUnitImpl.createPercentage(n.beginLine, n.beginColumn,
+                                                    prev, number(op, n, 1));
+        break;
+      case PT:
+        n = jj_consume_token(PT);
+          result = LexicalUnitImpl.createPT(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case CM:
+        n = jj_consume_token(CM);
+          result = LexicalUnitImpl.createCM(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case MM:
+        n = jj_consume_token(MM);
+          result = LexicalUnitImpl.createMM(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case PC:
+        n = jj_consume_token(PC);
+          result = LexicalUnitImpl.createPC(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case IN:
+        n = jj_consume_token(IN);
+          result = LexicalUnitImpl.createIN(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case PX:
+        n = jj_consume_token(PX);
+          result = LexicalUnitImpl.createPX(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case EMS:
+        n = jj_consume_token(EMS);
+          result = LexicalUnitImpl.createEMS(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 2));
+        break;
+      case LEM:
+        n = jj_consume_token(LEM);
+          result = LexicalUnitImpl.createLEM(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 3));
+        break;
+      case REM:
+        n = jj_consume_token(REM);
+          result = LexicalUnitImpl.createREM(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 3));
+        break;
+      case EXS:
+        n = jj_consume_token(EXS);
+          result = LexicalUnitImpl.createEXS(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 2));
+        break;
+      case DEG:
+        n = jj_consume_token(DEG);
+          result = LexicalUnitImpl.createDEG(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 3));
+        break;
+      case RAD:
+        n = jj_consume_token(RAD);
+          result = LexicalUnitImpl.createRAD(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 3));
+        break;
+      case GRAD:
+        n = jj_consume_token(GRAD);
+          result = LexicalUnitImpl.createGRAD(n.beginLine, n.beginColumn,
+                                              prev, number(op, n, 3));
+        break;
+      case SECOND:
+        n = jj_consume_token(SECOND);
+          result = LexicalUnitImpl.createS(n.beginLine, n.beginColumn,
+                                           prev, number(op, n, 1));
+        break;
+      case MS:
+        n = jj_consume_token(MS);
+          result = LexicalUnitImpl.createMS(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case HZ:
+        n = jj_consume_token(HZ);
+          result = LexicalUnitImpl.createHZ(n.beginLine, n.beginColumn,
+                                            prev, number(op, n, 2));
+        break;
+      case KHZ:
+        n = jj_consume_token(KHZ);
+          result = LexicalUnitImpl.createKHZ(n.beginLine, n.beginColumn,
+                                             prev, number(op, n, 3));
+        break;
+      case DIMEN:
+        n = jj_consume_token(DIMEN);
+            s = n.image;
+            int i = 0;
+            while (i < s.length()
+                   && (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.'))) {
+                i++;
             }
+            result = LexicalUnitImpl.createDimen(n.beginLine, n.beginColumn, prev,
+                                                 Float.valueOf(s.substring(0, i)).floatValue(),
+                                                 s.substring(i));
+        break;
+      case FUNCTION:
+        result = function(op, prev);
+        break;
+      default:
+        jj_la1[235] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      break;
+    case DOT:
+    case TO:
+    case THROUGH:
+    case FROM:
+    case STRING:
+    case IDENT:
+    case URL:
+    case HASH:
+    case UNICODERANGE:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STRING:
+        n = jj_consume_token(STRING);
+          result =
+          LexicalUnitImpl.createString(n.beginLine, n.beginColumn, prev,
+                                       convertStringIndex(n.image, 1,
+                                                          n.image.length() -1));
+        break;
+      case DOT:
+      case TO:
+      case THROUGH:
+      case FROM:
+      case IDENT:
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case DOT:
+          jj_consume_token(DOT);
+              s+=".";
+          break;
+        default:
+          jj_la1[236] = jj_gen;
+          ;
         }
-        return false;
-    }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IDENT:
+          n = jj_consume_token(IDENT);
+          break;
+        case TO:
+          n = jj_consume_token(TO);
+          break;
+        case THROUGH:
+          n = jj_consume_token(THROUGH);
+          break;
+        case FROM:
+          n = jj_consume_token(FROM);
+          break;
+        default:
+          jj_la1[237] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        s += convertIdent(n.image);
+        if ("inherit".equals(s)) {
+            result = LexicalUnitImpl.createInherit(n.beginLine, n.beginColumn,
+                                               prev);
+        } else {
+            result = LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
+                                               prev, convertIdent(n.image));
+        }
+
+          /* /
+         Auto correction code used in the CSS Validator but must not
+          be used by a conformant CSS2 parser.
+        * Common error :
+        * H1 {
+        *   color : black
+        *   background : white
+        * }
+        *
+       Token t = getToken(1);
+       Token semicolon = new Token();
+       semicolon.kind = SEMICOLON;
+       semicolon.image = ";";
+       if (t.kind == COLON) {
+           // @@SEEME. (generate a warning?)
+           // @@SEEME if expression is a single ident, 
+              generate an error ?
+           rejectToken(semicolon);
+           
+           result = prev;
+       }
+       / */
+
+        break;
+      case HASH:
+        result = hexcolor(prev);
+        break;
+      case URL:
+        result = url(prev);
+        break;
+      case UNICODERANGE:
+        result = unicode(prev);
+        break;
+      default:
+        jj_la1[238] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      break;
+    default:
+      jj_la1[239] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    label_164:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[240] = jj_gen;
+        break label_164;
+      }
+      jj_consume_token(S);
+    }
+    {if (true) return result;}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_186() {
-        if (jj_scan_token(VARIABLE)) {
-            return true;
+/**
+ * Handle all CSS2 functions.
+ * @exception ParseException exception during the parse
+ */
+  final public LexicalUnitImpl function(char operator, LexicalUnitImpl prev) throws ParseException {
+ Token n;
+ LexicalUnit params = null;
+    n = jj_consume_token(FUNCTION);
+    label_165:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[241] = jj_gen;
+        break label_165;
+      }
+      jj_consume_token(S);
+    }
+        String fname = convertIdent(n.image);
+        if("alpha(".equals(fname)){
+            String body = skipStatementUntilSemiColon();
+            {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
+                 null, "alpha("+body);}
+        }else if("expression(".equals(fname)){
+            String body = skipStatementUntilSemiColon();
+            {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
+                 null, "expression("+body);}
+        }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case MINUS:
+    case DOT:
+    case TO:
+    case THROUGH:
+    case FROM:
+    case STRING:
+    case IDENT:
+    case NUMBER:
+    case URL:
+    case VARIABLE:
+    case PERCENTAGE:
+    case PT:
+    case MM:
+    case CM:
+    case PC:
+    case IN:
+    case PX:
+    case EMS:
+    case LEM:
+    case REM:
+    case EXS:
+    case DEG:
+    case RAD:
+    case GRAD:
+    case MS:
+    case SECOND:
+    case HZ:
+    case KHZ:
+    case DIMEN:
+    case HASH:
+    case UNICODERANGE:
+    case FUNCTION:
+      params = expr();
+      break;
+    default:
+      jj_la1[242] = jj_gen;
+      ;
+    }
+    jj_consume_token(RPARAN);
+        if (operator != ' ') {
+            {if (true) throw new CSSParseException("invalid operator before a function.",
+                                        getLocator());}
         }
-        Token xsp;
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
+        String f = convertIdent(n.image);
+        LexicalUnitImpl l = (LexicalUnitImpl) params;
+        boolean loop = true;
+        if ("rgb(".equals(f)) {
+            // this is a RGB declaration (e.g. rgb(255, 50%, 0) )
+            int i = 0;
+            while (loop && l != null && i < 5) {
+                switch (i) {
+                    case 0:
+                    case 2:
+                    case 4:
+                        if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER)
+                            && (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) {
+                            loop = false;
+                        }
+                        break;
+                    case 1:
+                    case 3:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
+                            loop = false;
+                        }
+                        break;
+                    default:
+                        {if (true) throw new ParseException("implementation error");}
+                }
+                if (loop) {
+                    l = (LexicalUnitImpl) l.getNextLexicalUnit();
+                    i ++;
+                }
             }
-        }
-        return false;
-    }
+            if ((i == 5) && loop && (l == null)) {
+                {if (true) return LexicalUnitImpl.createRGBColor(n.beginLine,
+                                                      n.beginColumn,
+                                                      prev, params);}
+            } else {
+                if (errorHandler != null) {
+                    String errorText;
+                    Locator loc;
+                    if (i < 5) {
+                        if (params == null) {
+                            loc = new LocatorImpl(this, n.beginLine,
+                                                  n.beginColumn-1);
+                            errorText = "not enough parameters.";
+                        } else if (l == null) {
+                            loc = new LocatorImpl(this, n.beginLine,
+                                                  n.beginColumn-1);
+                            errorText = "not enough parameters: "
+                                + params.toString();
+                        } else {
+                            loc = new LocatorImpl(this, l.getLineNumber(),
+                                                  l.getColumnNumber());
+                            errorText = "invalid parameter: "
+                                + l.toString();
+                        }
+                    } else {
+                        loc = new LocatorImpl(this, l.getLineNumber(),
+                                              l.getColumnNumber());
+                        errorText = "too many parameters: "
+                            + l.toString();
+                    }
+                    errorHandler.error(new CSSParseException(errorText, loc));
+                }
 
-    private boolean jj_3R_250() {
-        Token xsp;
-        xsp = jj_scanpos;
-        if (jj_3R_261()) {
-            jj_scanpos = xsp;
-            if (jj_3R_262()) {
-                return true;
+                {if (true) throw new JumpException();}
+            }
+        } else if ("counter".equals(f)) {
+            int i = 0;
+            while (loop && l != null && i < 3) {
+                switch (i) {
+                    case 0:
+                    case 2:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
+                            loop = false;
+                        }
+                        break;
+                    case 1:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
+                            loop = false;
+                        }
+                        break;
+                    default:
+                        {if (true) throw new ParseException("implementation error");}
+                }
+                l = (LexicalUnitImpl) l.getNextLexicalUnit();
+                i ++;
+            }
+            if (((i == 1) || (i == 3)) && loop && (l == null)) {
+                {if (true) return LexicalUnitImpl.createCounter(n.beginLine, n.beginColumn,
+                                                     prev, params);}
             }
-        }
-        return false;
-    }
 
-    private boolean jj_3R_261() {
-        if (jj_scan_token(IDENT)) {
-            return true;
-        }
-        return false;
-    }
+        } else if ("counters(".equals(f)) {
 
-    private boolean jj_3R_202() {
-        Token xsp;
-        if (jj_3R_250()) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_3R_250()) {
-                jj_scanpos = xsp;
-                break;
+            int i = 0;
+            while (loop && l != null && i < 5) {
+                switch (i) {
+                    case 0:
+                    case 4:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
+                            loop = false;
+                        }
+                        break;
+                    case 2:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_STRING_VALUE) {
+                            loop = false;
+                        }
+                        break;
+                    case 1:
+                    case 3:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
+                            loop = false;
+                        }
+                        break;
+                    default:
+                        {if (true) throw new ParseException("implementation error");}
+                }
+                l = (LexicalUnitImpl) l.getNextLexicalUnit();
+                i ++;
             }
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
+            if (((i == 3) || (i == 5)) && loop && (l == null)) {
+                {if (true) return LexicalUnitImpl.createCounters(n.beginLine, n.beginColumn,
+                                                      prev, params);}
             }
-        }
-        return false;
-    }
-
-    private boolean jj_3R_212() {
-        if (jj_scan_token(MINUS)) {
-            return true;
-        }
-        Token xsp;
-        if (jj_scan_token(1)) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
+        } else if ("attr(".equals(f)) {
+            if ((l != null)
+                && (l.getNextLexicalUnit() == null)
+                && (l.getLexicalUnitType() == LexicalUnit.SAC_IDENT)) {
+                {if (true) return LexicalUnitImpl.createAttr(l.getLineNumber(),
+                                                  l.getColumnNumber(),
+                                                  prev, l.getStringValue());}
             }
-        }
-        return false;
-    }
+        } else if ("rect(".equals(f)) {
+            int i = 0;
+            while (loop && l != null && i < 7) {
+                switch (i) {
+                    case 0:
+                    case 2:
+                    case 4:
+                    case 6:
+                        switch (l.getLexicalUnitType()) {
+                        case LexicalUnit.SAC_INTEGER:
+                            if (l.getIntegerValue() != 0) {
+                                loop = false;
+                            }
+                            break;
+                        case LexicalUnit.SAC_IDENT:
+                            if (!l.getStringValue().equals("auto")) {
+                                loop = false;
+                            }
+                            break;
+                        case LexicalUnit.SAC_EM:
+                        case LexicalUnit.SAC_EX:
+                        case LexicalUnit.SAC_PIXEL:
+                        case LexicalUnit.SAC_CENTIMETER:
+                        case LexicalUnit.SAC_MILLIMETER:
+                        case LexicalUnit.SAC_INCH:
+                        case LexicalUnit.SAC_POINT:
+                        case LexicalUnit.SAC_PICA:
+                            // nothing
+                            break;
+                        default:
+                            loop = false;
+                        }
+                        break;
+                    case 1:
+                    case 3:
+                    case 5:
+                        if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
+                            loop = false;
+                        }
+                        break;
+                    default:
+                        {if (true) throw new ParseException("implementation error");}
+                }
+                l = (LexicalUnitImpl) l.getNextLexicalUnit();
+                i ++;
+            }
+            if ((i == 7) && loop && (l == null)) {
+                {if (true) return LexicalUnitImpl.createRect(n.beginLine, n.beginColumn,
+                                                  prev, params);}
+            }
+        }
+        {if (true) return LexicalUnitImpl.createFunction(n.beginLine, n.beginColumn, prev,
+                                              f.substring(0,
+                                                        f.length() -1),
+                                              params);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public LexicalUnitImpl unicode(LexicalUnitImpl prev) throws ParseException {
+  Token n;
+    n = jj_consume_token(UNICODERANGE);
+     LexicalUnitImpl params = null;
+     String s = n.image.substring(2);
+     int index = s.indexOf('-');
+     if (index == -1) {
+         params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
+                                                params, Integer.parseInt(s, 16));
+     } else {
+         String s1 = s.substring(0, index);
+         String s2 = s.substring(index);
+
+         params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
+                                                params, Integer.parseInt(s1, 16));
+         params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
+                                                params, Integer.parseInt(s2, 16));
+     }
+
+     {if (true) return LexicalUnitImpl.createUnicodeRange(n.beginLine, n.beginColumn,
+                                               prev, params);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public LexicalUnitImpl url(LexicalUnitImpl prev) throws ParseException {
+  Token n;
+    n = jj_consume_token(URL);
+   String urlname = n.image.substring(4, n.image.length()-1).trim();
+   {if (true) return LexicalUnitImpl.createURL(n.beginLine, n.beginColumn, prev, urlname);}
+    throw new Error("Missing return statement in function");
+  }
 
-    private boolean jj_3R_211() {
-        if (jj_scan_token(PLUS)) {
-            return true;
-        }
-        Token xsp;
-        if (jj_scan_token(1)) {
-            return true;
-        }
-        while (true) {
-            xsp = jj_scanpos;
-            if (jj_scan_token(1)) {
-                jj_scanpos = xsp;
-                break;
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public LexicalUnitImpl hexcolor(LexicalUnitImpl prev) throws ParseException {
+ Token n;
+    n = jj_consume_token(HASH);
+     int r;
+     LexicalUnitImpl first, params = null;
+     String s = n.image.substring(1);
+
+     if(s.length()!=3 && s.length()!=6) {
+         first = null;
+         {if (true) throw new CSSParseException("invalid hexadecimal notation for RGB: " + s,
+                                     getLocator());}
+     }
+     {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
+             prev, n.image);}
+    throw new Error("Missing return statement in function");
+  }
+
+  float number(char operator, Token n, int lengthUnit) throws ParseException {
+    String image  = n.image;
+    float f = 0;
+
+    if (lengthUnit != 0) {
+        image = image.substring(0, image.length() - lengthUnit);
+    }
+    f = Float.valueOf(image).floatValue();
+    return (operator == '-')? -f: f;
+  }
+
+  String skipStatementUntilSemiColon() throws ParseException {
+    int[] semicolon = {SEMICOLON};
+    return skipStatementUntil(semicolon);
+  }
+
+  String skipStatementUntilLeftBrace() throws ParseException {
+    int[] lBrace = {LBRACE};
+    return skipStatementUntil(lBrace);
+  }
+
+  String skipStatementUntilRightParan() throws ParseException {
+    int[] rParan = {RPARAN};
+    return skipStatementUntil(rParan);
+  }
+
+  String skipStatementUntil(int[] symbols) throws ParseException {
+    StringBuffer s = new StringBuffer();
+    boolean stop = false;
+    Token tok;
+    while(!stop){
+        tok = getToken(1);
+        if(tok.kind == EOF) {
+            return null;
+        }
+        for(int sym : symbols){
+            if(tok.kind == sym){
+                stop = true;
+                break;
+            }
+        }
+        if(!stop){
+            if (tok.image != null) {
+                s.append(tok.image);
             }
-        }
-        return false;
-    }
-
-    /** Generated Token Manager. */
-    public ParserTokenManager token_source;
-    /** Current token. */
-    public Token token;
-    /** Next token. */
-    public Token jj_nt;
-    private int jj_ntk;
-    private Token jj_scanpos, jj_lastpos;
-    private int jj_la;
-    private int jj_gen;
-    final private int[] jj_la1 = new int[259];
-    static private int[] jj_la1_0;
-    static private int[] jj_la1_1;
-    static private int[] jj_la1_2;
-    static private int[] jj_la1_3;
-    static {
-        jj_la1_init_0();
-        jj_la1_init_1();
-        jj_la1_init_2();
-        jj_la1_init_3();
-    }
-
-    private static void jj_la1_init_0() {
-        jj_la1_0 = new int[] { 0x0, 0x302, 0x302, 0x0, 0x300, 0x2, 0x2, 0x2,
-                0xd4c40000, 0x0, 0x300, 0x2, 0x300, 0x2, 0x0, 0x2, 0x2, 0x2,
-                0x0, 0x0, 0x2, 0x2, 0x0, 0x2, 0x0, 0x2, 0x2, 0xd4c40000,
-                0xd4c40000, 0x2, 0x2, 0x2, 0xd4fd1500, 0xd4fd1500, 0x2, 0x2,
-                0x2, 0x0, 0x0, 0x2, 0x0, 0x200000, 0x2, 0x0, 0x2, 0x2, 0x2,
-                0x2, 0x0, 0x200000, 0x2, 0x0, 0x2, 0x391500, 0xc40000,
-                0xc40002, 0xc40000, 0x2, 0x2, 0x80120002, 0x80120002, 0x2, 0x0,
-                0x0, 0x2, 0x2, 0x2, 0x2, 0xd4c40000, 0xd4c40000, 0x2, 0x100000,
-                0x2, 0xd4c40000, 0x2, 0x84000000, 0x84000000, 0x84000000,
-                0x84000000, 0x84000000, 0x84000000, 0x84000000, 0x84000000,
-                0x84000000, 0x84000000, 0xd4000000, 0x0, 0x0, 0x0, 0x0,
-                0x50000000, 0x2, 0x2, 0x3f000, 0x2, 0x0, 0x2, 0x3f000, 0x0,
-                0x2, 0x0, 0x2, 0x0, 0x2, 0x200000, 0x0, 0xd4c40000, 0x0,
-                0x134e0002, 0x2, 0xd4c40000, 0x2, 0x0, 0x2, 0x134e0002, 0x0,
-                0x2, 0xd4c40000, 0x2, 0x134e0002, 0x2, 0x2, 0x2, 0x0, 0x2,
-                0xd4c40000, 0x2, 0x2, 0x100000, 0x2, 0x2, 0x2, 0x2, 0x0, 0x2,
-                0xd4c40000, 0xd4c40000, 0x2, 0x100000, 0x2, 0x2, 0x2, 0x100000,
-                0x0, 0x0, 0x800c0000, 0x2, 0x0, 0x100000, 0x2, 0x800c0000, 0x2,
-                0x0, 0x2, 0x0, 0x2, 0x2, 0x200000, 0x2, 0xd4c40000, 0x2,
-                0x200400, 0x2, 0x2, 0x0, 0x2, 0x0, 0x2, 0x2, 0x2, 0x100000,
-                0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x2, 0x2, 0x2, 0x100000, 0x2,
-                0x2, 0x2, 0x0, 0x2, 0x2, 0x2, 0x100000, 0x2, 0x2, 0x0, 0x2,
-                0x0, 0x2, 0x2, 0x2, 0x100000, 0x0, 0x2, 0x2, 0x0, 0x2, 0x2,
-                0x2, 0x200000, 0x2, 0x2, 0x200000, 0x2, 0x2, 0x0, 0x200000,
-                0x2, 0x0, 0x2, 0x0, 0xd4c40000, 0x2, 0x0, 0x2, 0x0, 0x200000,
-                0x2, 0x0, 0x2, 0x800c0400, 0x2, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2,
-                0x2, 0x2, 0x2, 0x321c0000, 0xc0000, 0x800c0000, 0xc0000, 0x0,
-                0x80000000, 0x0, 0x80000000, 0x800c0000, 0x2, 0x2, 0x800c0000,
-                0x2, 0xd4c40000, 0x2, 0x2, 0x2, 0x0, 0x200000, 0x2, 0x0, 0x2, };
-    }
-
-    private static void jj_la1_init_1() {
-        jj_la1_1 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x566000c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80,
-                0x80, 0x0, 0x0, 0x120000, 0x0, 0x120000, 0x0, 0x0, 0x564000c0,
-                0x564000c0, 0x0, 0x0, 0x0, 0x60001c0, 0x60001c0, 0x0, 0x0, 0x0,
-                0x0, 0x40, 0x0, 0x80, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x80,
-                0x0, 0x0, 0x80, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc2,
-                0xc2, 0x0, 0x80, 0x80, 0x0, 0x0, 0x0, 0x0, 0x564000c0,
-                0x564000c0, 0x0, 0x0, 0x0, 0xc0, 0x0, 0x40, 0x40, 0x40, 0x40,
-                0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80,
-                0x80, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x50000000, 0x64000c0, 0x50000000, 0x3f,
-                0x0, 0x564000c0, 0x0, 0x80000000, 0x0, 0x3f, 0x0, 0x0,
-                0x564000c0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x564000c0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x564000c0,
-                0x564000c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x40, 0x160040,
-                0x0, 0x40, 0x0, 0x0, 0x160040, 0x0, 0x40, 0x0, 0x80, 0x0, 0x0,
-                0x0, 0x0, 0x60000c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x6000000, 0x0, 0x0, 0x60000,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0,
-                0x80, 0x0, 0x6000000, 0xc0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0,
-                0x80, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x160000,
-                0x160000, 0x160000, 0x0, 0x0, 0x160000, 0x0, 0x60000c0, 0x0,
-                0x0, 0x0, 0x80, 0x0, 0x0, 0x80, 0x0, };
-    }
-
-    private static void jj_la1_init_2() {
-        jj_la1_2 = new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100,
-                0x1000, 0x0, 0x0, 0x0, 0x0, 0x880, 0x0, 0x0, 0x0, 0x100, 0x100,
-                0x0, 0x0, 0x2000, 0x0, 0x2000, 0x0, 0x0, 0x1119, 0x1119, 0x0,
-                0x0, 0x0, 0x2b80, 0x2b80, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0,
-                0x100, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0,
-                0x100, 0x0, 0x2a80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380, 0x380, 0x0,
-                0x100, 0x100, 0x0, 0x0, 0x0, 0x0, 0x1119, 0x1119, 0x0, 0x0,
-                0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x0, 0x0, 0x0,
-                0x0, 0x180, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x40, 0x0, 0x0,
-                0x0, 0x109, 0x1000, 0x1300, 0x0, 0x1109, 0x0, 0x0, 0x0, 0x1300,
-                0x20, 0x0, 0x1109, 0x0, 0x1300, 0x0, 0x0, 0x0, 0x1100, 0x0,
-                0x1109, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x1109,
-                0x1109, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000, 0x1000,
-                0xfffffb80, 0x0, 0x0, 0x0, 0x0, 0xfffffb80, 0x0, 0x0, 0x0,
-                0x1100, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0,
-                0x0, 0x100, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0,
-                0x100, 0x0, 0xfffffb80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0xfffffb80, 0x0, 0xffffe200, 0x0, 0x100,
-                0x980, 0xffffeb80, 0x0, 0x0, 0xfffffb80, 0x0, 0x100, 0x0, 0x0,
-                0x0, 0x100, 0x0, 0x0, 0x100, 0x0, };
-    }
-
-    private static void jj_la1_init_3() {
-        jj_la1_3 = new int[] { 0x8, 0x80, 0x80, 0x2, 0x80, 0x0, 0x0, 0x0, 0x75,
-                0x0, 0x80, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x45, 0x0, 0x0, 0x0,
-                0xc401bf, 0xc401bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0xc401be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x400000, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0x47, 0x0, 0x0, 0x0, 0x1,
-                0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0,
-                0x200000, 0x0, 0x45, 0x0, 0x0, 0x0, 0x200000, 0x0, 0x0, 0x45,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x400000, 0x0, 0x75, 0x75, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x440001, 0x0, 0x0, 0x0, 0x0, 0x440001,
-                0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0,
-                0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x100, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x440001, 0x0, 0x100, 0x0, 0x0, 0x0,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x440001, 0x0, 0x400000,
-                0x0, 0x0, 0x40001, 0x440001, 0x0, 0x0, 0x440001, 0x0, 0x37,
-                0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
-    }
-
-    final private JJCalls[] jj_2_rtns = new JJCalls[9];
-    private boolean jj_rescan = false;
-    private int jj_gc = 0;
-
-    /** Constructor with user supplied CharStream. */
-    public Parser(CharStream stream) {
-        token_source = new ParserTokenManager(stream);
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 259; i++) {
-            jj_la1[i] = -1;
-        }
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-            jj_2_rtns[i] = new JJCalls();
+            getNextToken();
         }
     }
+    return s.toString().trim();
+  }
 
-    /** Reinitialise. */
-    public void ReInit(CharStream stream) {
-        token_source.ReInit(stream);
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 259; i++) {
-            jj_la1[i] = -1;
-        }
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-            jj_2_rtns[i] = new JJCalls();
-        }
+  String skipStatement() throws ParseException {
+    StringBuffer s = new StringBuffer();
+    Token tok = getToken(0);
+    if (tok.image != null) {
+        s.append(tok.image);
     }
-
-    /** Constructor with generated Token Manager. */
-    public Parser(ParserTokenManager tm) {
-        token_source = tm;
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 259; i++) {
-            jj_la1[i] = -1;
+    while (true) {
+        tok = getToken(1);
+        if (tok.kind == EOF) {
+            return null;
         }
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-            jj_2_rtns[i] = new JJCalls();
+        s.append(tok.image);
+        if (tok.kind == LBRACE) {
+            getNextToken();
+            s.append(skip_to_matching_brace());
+            getNextToken();
+            tok = getToken(1);
+            break;
+        } else if (tok.kind == RBRACE) {
+            getNextToken();
+            tok = getToken(1);
+            break;
+        } else if (tok.kind == SEMICOLON) {
+            getNextToken();
+            tok = getToken(1);
+            break;
         }
+        getNextToken();
     }
 
-    /** Reinitialise. */
-    public void ReInit(ParserTokenManager tm) {
-        token_source = tm;
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 259; i++) {
-            jj_la1[i] = -1;
-        }
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-            jj_2_rtns[i] = new JJCalls();
+    // skip white space
+    while (true) {
+        if (tok.kind != S) {
+            break;
         }
+        tok = getNextToken();
+        tok = getToken(1);
     }
 
-    private Token jj_consume_token(int kind) throws ParseException {
-        Token oldToken;
-        if ((oldToken = token).next != null) {
-            token = token.next;
-        } else {
-            token = token.next = token_source.getNextToken();
-        }
-        jj_ntk = -1;
-        if (token.kind == kind) {
-            jj_gen++;
-            if (++jj_gc > 100) {
-                jj_gc = 0;
-                for (int i = 0; i < jj_2_rtns.length; i++) {
-                    JJCalls c = jj_2_rtns[i];
-                    while (c != null) {
-                        if (c.gen < jj_gen) {
-                            c.first = null;
+    return s.toString().trim();
+  }
+
+  String skip_to_matching_brace() throws ParseException {
+    StringBuffer s = new StringBuffer();
+    Token tok;
+    int nesting = 1;
+    while (true) {
+        tok = getToken(1);
+        if (tok.kind == EOF) {
+            break;
+        }
+        s.append(tok.image);
+        if (tok.kind == LBRACE) {
+            nesting++;
+        } else if (tok.kind == RBRACE) {
+            nesting--;
+            if (nesting == 0) {
+                break;
+            }
+        }
+        getNextToken();
+    }
+    return s.toString();
+  }
+
+  String convertStringIndex(String s, int start, int len) throws ParseException {
+    StringBuffer buf = new StringBuffer(len);
+    int index = start;
+
+    while (index < len) {
+        char c = s.charAt(index);
+        if (c == '\u005c\u005c') {
+            if (++index < len) {
+                c = s.charAt(index);
+                switch (c) {
+                case '0': case '1': case '2': case '3': case '4':
+                case '5': case '6': case '7': case '8': case '9':
+                case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+                case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+                    buf.append('\u005c\u005c');
+                    while (index < len) {
+                        buf.append(s.charAt(index++));
+                    }
+                    break;
+                case '\u005cn':
+                case '\u005cf':
+                    break;
+                case '\u005cr':
+                    if (index + 1 < len) {
+                        if (s.charAt(index + 1) == '\u005cn') {
+                            index ++;
                         }
-                        c = c.next;
                     }
+                    break;
+                default:
+                    buf.append(c);
                 }
-            }
-            return token;
-        }
-        token = oldToken;
-        jj_kind = kind;
-        throw generateParseException();
-    }
-
-    static private final class LookaheadSuccess extends java.lang.Error {
-    }
-
-    final private LookaheadSuccess jj_ls = new LookaheadSuccess();
-
-    private boolean jj_scan_token(int kind) {
-        if (jj_scanpos == jj_lastpos) {
-            jj_la--;
-            if (jj_scanpos.next == null) {
-                jj_lastpos = jj_scanpos = jj_scanpos.next = token_source
-                        .getNextToken();
             } else {
-                jj_lastpos = jj_scanpos = jj_scanpos.next;
+                throw new CSSParseException("invalid string " + s, getLocator());
             }
         } else {
-            jj_scanpos = jj_scanpos.next;
-        }
-        if (jj_rescan) {
-            int i = 0;
-            Token tok = token;
-            while (tok != null && tok != jj_scanpos) {
-                i++;
-                tok = tok.next;
-            }
-            if (tok != null) {
-                jj_add_error_token(kind, i);
-            }
-        }
-        if (jj_scanpos.kind != kind) {
-            return true;
+            buf.append(c);
         }
-        if (jj_la == 0 && jj_scanpos == jj_lastpos) {
-            throw jj_ls;
-        }
-        return false;
+        index++;
     }
 
-    /** Get the next Token. */
-    final public Token getNextToken() {
-        if (token.next != null) {
-            token = token.next;
-        } else {
-            token = token.next = token_source.getNextToken();
-        }
-        jj_ntk = -1;
-        jj_gen++;
-        return token;
-    }
+    return buf.toString();
+  }
 
-    /** Get the specific Token. */
-    final public Token getToken(int index) {
-        Token t = token;
-        for (int i = 0; i < index; i++) {
-            if (t.next != null) {
-                t = t.next;
-            } else {
-                t = t.next = token_source.getNextToken();
-            }
-        }
-        return t;
-    }
+  String convertIdent(String s) throws ParseException {
+    return convertStringIndex(s, 0, s.length());
+  }
 
-    private int jj_ntk() {
-        if ((jj_nt = token.next) == null) {
-            return (jj_ntk = (token.next = token_source.getNextToken()).kind);
-        } else {
-            return (jj_ntk = jj_nt.kind);
+  String convertString(String s) throws ParseException {
+    return convertStringIndex(s, 0, s.length());
+  }
+
+  void comments() throws ParseException {
+        /*keeps only the multiple line comments, single line comments are skipped*/
+    if (token.specialToken != null && token.specialToken.image!=null && token.specialToken.image.startsWith("/*")){
+        Token tmp_t = token.specialToken;
+        while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken;
+        while (tmp_t != null) {
+            documentHandler.comment(tmp_t.image);
+            tmp_t = tmp_t.next;
         }
     }
+  }
 
-    private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
-    private int[] jj_expentry;
-    private int jj_kind = -1;
-    private int[] jj_lasttokens = new int[100];
-    private int jj_endpos;
+  void rejectToken(Token t) throws ParseException {
+    Token fakeToken = new Token();
+    t.next = token;
+    fakeToken.next = t;
+    token = fakeToken;
+  }
 
-    private void jj_add_error_token(int kind, int pos) {
-        if (pos >= 100) {
-            return;
-        }
-        if (pos == jj_endpos + 1) {
-            jj_lasttokens[jj_endpos++] = kind;
-        } else if (jj_endpos != 0) {
-            jj_expentry = new int[jj_endpos];
-            for (int i = 0; i < jj_endpos; i++) {
-                jj_expentry[i] = jj_lasttokens[i];
-            }
-            jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries
-                    .iterator(); it.hasNext();) {
-                int[] oldentry = (int[]) (it.next());
-                if (oldentry.length == jj_expentry.length) {
-                    for (int i = 0; i < jj_expentry.length; i++) {
-                        if (oldentry[i] != jj_expentry[i]) {
-                            continue jj_entries_loop;
-                        }
-                    }
-                    jj_expentries.add(jj_expentry);
-                    break jj_entries_loop;
-                }
-            }
-            if (pos != 0) {
-                jj_lasttokens[(jj_endpos = pos) - 1] = kind;
-            }
-        }
+  String skipAfterExpression() throws ParseException {
+    Token t = getToken(1);
+    StringBuffer s = new StringBuffer();
+    s.append(getToken(0).image);
+
+    while ((t.kind != RBRACE) && (t.kind != SEMICOLON) && (t.kind != EOF)) {
+        s.append(t.image);
+        getNextToken();
+        t = getToken(1);
     }
 
-    /** Generate ParseException. */
-    public ParseException generateParseException() {
-        jj_expentries.clear();
-        boolean[] la1tokens = new boolean[120];
-        if (jj_kind >= 0) {
-            la1tokens[jj_kind] = true;
-            jj_kind = -1;
-        }
-        for (int i = 0; i < 259; i++) {
-            if (jj_la1[i] == jj_gen) {
-                for (int j = 0; j < 32; j++) {
-                    if ((jj_la1_0[i] & (1 << j)) != 0) {
-                        la1tokens[j] = true;
-                    }
-                    if ((jj_la1_1[i] & (1 << j)) != 0) {
-                        la1tokens[32 + j] = true;
-                    }
-                    if ((jj_la1_2[i] & (1 << j)) != 0) {
-                        la1tokens[64 + j] = true;
+    return s.toString();
+  }
+
+/**
+ * The following functions are useful for a DOM CSS implementation only and are
+ * not part of the general CSS2 parser.
+ */
+// TODO required by original parser but not used by Vaadin?
+  final public void _parseRule() throws ParseException {
+ String ret = null;
+    label_166:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[243] = jj_gen;
+        break label_166;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IMPORT_SYM:
+      importDeclaration();
+      break;
+    case DEBUG_SYM:
+    case WARN_SYM:
+      debuggingDirective();
+      break;
+    case PLUS:
+    case PRECEDES:
+    case SIBLING:
+    case LBRACKET:
+    case ANY:
+    case PARENT:
+    case DOT:
+    case COLON:
+    case INTERPOLATION:
+    case IDENT:
+    case HASH:
+      styleRule();
+      break;
+    case MEDIA_SYM:
+      media();
+      break;
+    case PAGE_SYM:
+      page();
+      break;
+    case FONT_FACE_SYM:
+      fontFace();
+      break;
+    default:
+      jj_la1[244] = jj_gen;
+      ret = skipStatement();
+                    if ((ret == null) || (ret.length() == 0)) {
+                        {if (true) return;}
                     }
-                    if ((jj_la1_3[i] & (1 << j)) != 0) {
-                        la1tokens[96 + j] = true;
+                    if (ret.charAt(0) == '@') {
+                        documentHandler.unrecognizedRule(ret);
+                    } else {
+                        {if (true) throw new CSSParseException("unrecognize rule: " + ret,
+                                                    getLocator());}
                     }
-                }
-            }
-        }
-        for (int i = 0; i < 120; i++) {
-            if (la1tokens[i]) {
-                jj_expentry = new int[1];
-                jj_expentry[0] = i;
-                jj_expentries.add(jj_expentry);
-            }
-        }
-        jj_endpos = 0;
-        jj_rescan_token();
-        jj_add_error_token(0, 0);
-        int[][] exptokseq = new int[jj_expentries.size()][];
-        for (int i = 0; i < jj_expentries.size(); i++) {
-            exptokseq[i] = jj_expentries.get(i);
-        }
-        return new ParseException(token, exptokseq, tokenImage);
     }
-
-    /** Enable tracing. */
-    final public void enable_tracing() {
+  }
+
+  final public void _parseImportRule() throws ParseException {
+    label_167:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[245] = jj_gen;
+        break label_167;
+      }
+      jj_consume_token(S);
+    }
+    importDeclaration();
+  }
+
+  final public void _parseMediaRule() throws ParseException {
+    label_168:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[246] = jj_gen;
+        break label_168;
+      }
+      jj_consume_token(S);
+    }
+    media();
+  }
+
+  final public void _parseDeclarationBlock() throws ParseException {
+    label_169:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[247] = jj_gen;
+        break label_169;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INTERPOLATION:
+    case IDENT:
+      declaration();
+      break;
+    default:
+      jj_la1[248] = jj_gen;
+      ;
+    }
+    label_170:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SEMICOLON:
+        ;
+        break;
+      default:
+        jj_la1[249] = jj_gen;
+        break label_170;
+      }
+      jj_consume_token(SEMICOLON);
+      label_171:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[250] = jj_gen;
+          break label_171;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INTERPOLATION:
+      case IDENT:
+        declaration();
+        break;
+      default:
+        jj_la1[251] = jj_gen;
+        ;
+      }
+    }
+  }
+
+  final public ArrayList<String> _parseSelectors() throws ParseException {
+  ArrayList<String> p = null;
+    try {
+      label_172:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[252] = jj_gen;
+          break label_172;
+        }
+        jj_consume_token(S);
+      }
+      p = selectorList();
+          {if (true) return p;}
+    } catch (ThrowedParseException e) {
+        {if (true) throw (ParseException) e.e.fillInStackTrace();}
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+  private boolean jj_2_1(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_1(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(0, xla); }
+  }
+
+  private boolean jj_2_2(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_2(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(1, xla); }
+  }
+
+  private boolean jj_2_3(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_3(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(2, xla); }
+  }
+
+  private boolean jj_2_4(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_4(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(3, xla); }
+  }
+
+  private boolean jj_2_5(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_5(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(4, xla); }
+  }
+
+  private boolean jj_2_6(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_6(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(5, xla); }
+  }
+
+  private boolean jj_2_7(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_7(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(6, xla); }
+  }
+
+  private boolean jj_2_8(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_8(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(7, xla); }
+  }
+
+  private boolean jj_2_9(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_9(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(8, xla); }
+  }
+
+  private boolean jj_3R_206() {
+    if (jj_scan_token(MINUS)) return true;
+    Token xsp;
+    if (jj_scan_token(1)) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_185() {
+    if (jj_3R_207()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_205() {
+    if (jj_scan_token(PLUS)) return true;
+    Token xsp;
+    if (jj_scan_token(1)) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_204() {
+    if (jj_scan_token(MOD)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_203() {
+    if (jj_scan_token(ANY)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_202() {
+    if (jj_scan_token(DIV)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_201() {
+    if (jj_scan_token(COMMA)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_182() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_201()) {
+    jj_scanpos = xsp;
+    if (jj_3R_202()) {
+    jj_scanpos = xsp;
+    if (jj_3R_203()) {
+    jj_scanpos = xsp;
+    if (jj_3R_204()) {
+    jj_scanpos = xsp;
+    if (jj_3R_205()) {
+    jj_scanpos = xsp;
+    if (jj_3R_206()) return true;
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_209() {
+    if (jj_3R_208()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_208() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(18)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(22)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(23)) return true;
+    }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_188() {
+    if (jj_scan_token(S)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_209()) jj_scanpos = xsp;
+    return false;
+  }
+
+  private boolean jj_3R_207() {
+    if (jj_scan_token(GUARDED_SYM)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_173() {
+    if (jj_3R_183()) return true;
+    if (jj_scan_token(COLON)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_184()) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_185()) jj_scanpos = xsp;
+    if (jj_3R_186()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_186()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_187() {
+    if (jj_3R_208()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_174() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_187()) {
+    jj_scanpos = xsp;
+    if (jj_3R_188()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_191() {
+    if (jj_scan_token(VARIABLE)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(COLON)) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_176() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_191()) jj_scanpos = xsp;
+    if (jj_scan_token(CONTAINS)) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+    return false;
+  }
+
+  private boolean jj_3R_259() {
+    if (jj_scan_token(HASH)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_276() {
+    if (jj_scan_token(IDENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_277() {
+    if (jj_scan_token(FUNCTION)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+    return false;
+  }
+
+  private boolean jj_3R_275() {
+    if (jj_scan_token(COLON)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_262() {
+    if (jj_scan_token(COLON)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_275()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_276()) {
+    jj_scanpos = xsp;
+    if (jj_3R_277()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3_7() {
+    if (jj_3R_180()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_198() {
+    if (jj_scan_token(LBRACE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_287() {
+    if (jj_scan_token(STRING)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_285() {
+    if (jj_scan_token(STARMATCH)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_284() {
+    if (jj_scan_token(DOLLARMATCH)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_286() {
+    if (jj_scan_token(IDENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_283() {
+    if (jj_scan_token(CARETMATCH)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_282() {
+    if (jj_scan_token(DASHMATCH)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_281() {
+    if (jj_scan_token(INCLUDES)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_267() {
+    if (jj_scan_token(INTERPOLATION)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_280() {
+    if (jj_scan_token(EQ)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_197() {
+    if (jj_3R_184()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_274() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_280()) {
+    jj_scanpos = xsp;
+    if (jj_3R_281()) {
+    jj_scanpos = xsp;
+    if (jj_3R_282()) {
+    jj_scanpos = xsp;
+    if (jj_3R_283()) {
+    jj_scanpos = xsp;
+    if (jj_3R_284()) {
+    jj_scanpos = xsp;
+    if (jj_3R_285()) return true;
+    }
+    }
+    }
+    }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_286()) {
+    jj_scanpos = xsp;
+    if (jj_3R_287()) return true;
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3_6() {
+    if (jj_3R_179()) return true;
+    if (jj_scan_token(LBRACE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_261() {
+    if (jj_scan_token(LBRACKET)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(IDENT)) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_274()) jj_scanpos = xsp;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_180() {
+    if (jj_3R_196()) return true;
+    if (jj_scan_token(COLON)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_197()) {
+    jj_scanpos = xsp;
+    if (jj_3R_198()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_279() {
+    if (jj_scan_token(INTERPOLATION)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_265() {
+    if (jj_3R_184()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_245() {
+    if (jj_scan_token(PARENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_244() {
+    if (jj_scan_token(ANY)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_258() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_266()) {
+    jj_scanpos = xsp;
+    if (jj_3R_267()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_266() {
+    if (jj_scan_token(IDENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_210() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_243()) {
+    jj_scanpos = xsp;
+    if (jj_3R_244()) {
+    jj_scanpos = xsp;
+    if (jj_3R_245()) return true;
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_243() {
+    Token xsp;
+    if (jj_3R_258()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_258()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_251() {
+    if (jj_scan_token(FUNCTION)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_265()) jj_scanpos = xsp;
+    if (jj_scan_token(RPARAN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_177() {
+    if (jj_scan_token(COMMA)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_273() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_278()) {
+    jj_scanpos = xsp;
+    if (jj_3R_279()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_278() {
+    if (jj_scan_token(IDENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_238() {
+    if (jj_3R_255()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_237() {
+    if (jj_3R_254()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_236() {
+    if (jj_3R_253()) return true;
+    return false;
+  }
+
+  private boolean jj_3_5() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_177()) jj_scanpos = xsp;
+    if (jj_3R_178()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_260() {
+    if (jj_scan_token(DOT)) return true;
+    Token xsp;
+    if (jj_3R_273()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_273()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_249() {
+    if (jj_3R_262()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_272() {
+    if (jj_3R_262()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_270() {
+    if (jj_3R_260()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_247() {
+    if (jj_3R_260()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_248() {
+    if (jj_3R_261()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_271() {
+    if (jj_3R_261()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_268() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_269()) {
+    jj_scanpos = xsp;
+    if (jj_3R_270()) {
+    jj_scanpos = xsp;
+    if (jj_3R_271()) {
+    jj_scanpos = xsp;
+    if (jj_3R_272()) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_269() {
+    if (jj_3R_259()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_252() {
+    if (jj_scan_token(DOT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_235() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_252()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(72)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(49)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(50)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(52)) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_211() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_246()) {
+    jj_scanpos = xsp;
+    if (jj_3R_247()) {
+    jj_scanpos = xsp;
+    if (jj_3R_248()) {
+    jj_scanpos = xsp;
+    if (jj_3R_249()) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_246() {
+    if (jj_3R_259()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_234() {
+    if (jj_scan_token(STRING)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_233() {
+    if (jj_3R_251()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_190() {
+    Token xsp;
+    if (jj_3R_211()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_211()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_193() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_234()) {
+    jj_scanpos = xsp;
+    if (jj_3R_235()) {
+    jj_scanpos = xsp;
+    if (jj_3R_236()) {
+    jj_scanpos = xsp;
+    if (jj_3R_237()) {
+    jj_scanpos = xsp;
+    if (jj_3R_238()) return true;
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_189() {
+    if (jj_3R_210()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_268()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_175() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_189()) {
+    jj_scanpos = xsp;
+    if (jj_3R_190()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_240() {
+    if (jj_3R_208()) return true;
+    if (jj_3R_175()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_232() {
+    if (jj_scan_token(DIMEN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_231() {
+    if (jj_scan_token(KHZ)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_230() {
+    if (jj_scan_token(HZ)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_229() {
+    if (jj_scan_token(MS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_228() {
+    if (jj_scan_token(SECOND)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_227() {
+    if (jj_scan_token(GRAD)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_226() {
+    if (jj_scan_token(RAD)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_225() {
+    if (jj_scan_token(DEG)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_224() {
+    if (jj_scan_token(EXS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_223() {
+    if (jj_scan_token(REM)) return true;
+    return false;
+  }
+
+  private boolean jj_3_2() {
+    if (jj_3R_174()) return true;
+    if (jj_3R_175()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_222() {
+    if (jj_scan_token(LEM)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_221() {
+    if (jj_scan_token(EMS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_195() {
+    if (jj_scan_token(COMMA)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_194()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_239() {
+    if (jj_3R_175()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_220() {
+    if (jj_scan_token(PX)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_219() {
+    if (jj_scan_token(IN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_194() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_239()) {
+    jj_scanpos = xsp;
+    if (jj_3R_240()) return true;
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_2()) { jj_scanpos = xsp; break; }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_218() {
+    if (jj_scan_token(PC)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_217() {
+    if (jj_scan_token(MM)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_216() {
+    if (jj_scan_token(CM)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_215() {
+    if (jj_scan_token(PT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_214() {
+    if (jj_scan_token(PERCENTAGE)) return true;
+    return false;
+  }
+
+  private boolean jj_3_1() {
+    if (jj_3R_173()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_200() {
+    if (jj_3R_242()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_179() {
+    if (jj_3R_194()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_195()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_213() {
+    if (jj_scan_token(NUMBER)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_212() {
+    if (jj_3R_250()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_192() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_212()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_213()) {
+    jj_scanpos = xsp;
+    if (jj_3R_214()) {
+    jj_scanpos = xsp;
+    if (jj_3R_215()) {
+    jj_scanpos = xsp;
+    if (jj_3R_216()) {
+    jj_scanpos = xsp;
+    if (jj_3R_217()) {
+    jj_scanpos = xsp;
+    if (jj_3R_218()) {
+    jj_scanpos = xsp;
+    if (jj_3R_219()) {
+    jj_scanpos = xsp;
+    if (jj_3R_220()) {
+    jj_scanpos = xsp;
+    if (jj_3R_221()) {
+    jj_scanpos = xsp;
+    if (jj_3R_222()) {
+    jj_scanpos = xsp;
+    if (jj_3R_223()) {
+    jj_scanpos = xsp;
+    if (jj_3R_224()) {
+    jj_scanpos = xsp;
+    if (jj_3R_225()) {
+    jj_scanpos = xsp;
+    if (jj_3R_226()) {
+    jj_scanpos = xsp;
+    if (jj_3R_227()) {
+    jj_scanpos = xsp;
+    if (jj_3R_228()) {
+    jj_scanpos = xsp;
+    if (jj_3R_229()) {
+    jj_scanpos = xsp;
+    if (jj_3R_230()) {
+    jj_scanpos = xsp;
+    if (jj_3R_231()) {
+    jj_scanpos = xsp;
+    if (jj_3R_232()) {
+    jj_scanpos = xsp;
+    if (jj_3R_233()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_178() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_192()) {
+    jj_scanpos = xsp;
+    if (jj_3R_193()) return true;
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_253() {
+    if (jj_scan_token(HASH)) return true;
+    return false;
+  }
+
+  private boolean jj_3_4() {
+    if (jj_3R_176()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_242() {
+    if (jj_3R_183()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_254() {
+    if (jj_scan_token(URL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_199() {
+    if (jj_3R_178()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_257() {
+    if (jj_scan_token(INTERPOLATION)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_181() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_199()) {
+    jj_scanpos = xsp;
+    if (jj_3R_200()) return true;
     }
+    return false;
+  }
 
-    /** Disable tracing. */
-    final public void disable_tracing() {
-    }
+  private boolean jj_3_9() {
+    if (jj_3R_182()) return true;
+    return false;
+  }
 
-    private void jj_rescan_token() {
-        jj_rescan = true;
-        for (int i = 0; i < 9; i++) {
-            try {
-                JJCalls p = jj_2_rtns[i];
-                do {
-                    if (p.gen > jj_gen) {
-                        jj_la = p.arg;
-                        jj_lastpos = jj_scanpos = p.first;
-                        switch (i) {
-                        case 0:
-                            jj_3_1();
-                            break;
-                        case 1:
-                            jj_3_2();
-                            break;
-                        case 2:
-                            jj_3_3();
-                            break;
-                        case 3:
-                            jj_3_4();
-                            break;
-                        case 4:
-                            jj_3_5();
-                            break;
-                        case 5:
-                            jj_3_6();
-                            break;
-                        case 6:
-                            jj_3_7();
-                            break;
-                        case 7:
-                            jj_3_8();
-                            break;
-                        case 8:
-                            jj_3_9();
-                            break;
-                        }
-                    }
-                    p = p.next;
-                } while (p != null);
-            } catch (LookaheadSuccess ls) {
-            }
-        }
-        jj_rescan = false;
-    }
+  private boolean jj_3_3() {
+    if (jj_3R_173()) return true;
+    return false;
+  }
 
-    private void jj_save(int index, int xla) {
-        JJCalls p = jj_2_rtns[index];
-        while (p.gen > jj_gen) {
-            if (p.next == null) {
-                p = p.next = new JJCalls();
-                break;
-            }
-            p = p.next;
-        }
-        p.gen = jj_gen + xla - jj_la;
-        p.first = token;
-        p.arg = xla;
-    }
+  private boolean jj_3R_264() {
+    if (jj_scan_token(PLUS)) return true;
+    return false;
+  }
 
-    static final class JJCalls {
-        int gen;
-        Token first;
-        int arg;
-        JJCalls next;
+  private boolean jj_3R_250() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_263()) {
+    jj_scanpos = xsp;
+    if (jj_3R_264()) return true;
     }
+    return false;
+  }
+
+  private boolean jj_3R_263() {
+    if (jj_scan_token(MINUS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_255() {
+    if (jj_scan_token(UNICODERANGE)) return true;
+    return false;
+  }
+
+  private boolean jj_3_8() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_9()) jj_scanpos = xsp;
+    if (jj_3R_181()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_183() {
+    if (jj_scan_token(VARIABLE)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_186() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_184() {
+    if (jj_3R_181()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_8()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_241() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_256()) {
+    jj_scanpos = xsp;
+    if (jj_3R_257()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_256() {
+    if (jj_scan_token(IDENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_196() {
+    Token xsp;
+    if (jj_3R_241()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_241()) { jj_scanpos = xsp; break; }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  /** Generated Token Manager. */
+  public ParserTokenManager token_source;
+  /** Current token. */
+  public Token token;
+  /** Next token. */
+  public Token jj_nt;
+  private int jj_ntk;
+  private Token jj_scanpos, jj_lastpos;
+  private int jj_la;
+  private int jj_gen;
+  final private int[] jj_la1 = new int[253];
+  static private int[] jj_la1_0;
+  static private int[] jj_la1_1;
+  static private int[] jj_la1_2;
+  static private int[] jj_la1_3;
+  static {
+      jj_la1_init_0();
+      jj_la1_init_1();
+      jj_la1_init_2();
+      jj_la1_init_3();
+   }
+   private static void jj_la1_init_0() {
+      jj_la1_0 = new int[] {0x0,0x302,0x302,0x0,0x300,0x2,0x2,0x2,0xd4c40000,0x0,0x300,0x2,0x300,0x2,0x0,0x2,0x2,0x2,0x0,0x0,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0xd4fd1500,0xd4fd1500,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x391500,0xc40000,0xc40002,0xc40000,0x2,0x2,0x80120002,0x80120002,0x2,0x0,0x0,0x2,0x2,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0xd4c40000,0x2,0x84000000,0x84000000,0x84000000,0x84000000,0xd4000000,0x0,0x0,0x0,0x0,0x50000000,0x2,0x2,0x3f000,0x2,0x0,0x2,0x3f000,0x0,0x2,0x0,0x2,0x0,0x2,0x200000,0x0,0xd4c40000,0x0,0x134e0002,0x2,0xd4c40000,0x2,0x0,0x2,0x134e0002,0x0,0x2,0xd4c40000,0x2,0x134e0002,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0x2,0x2,0x100000,0x0,0x0,0x800c0000,0x2,0x0,0x100000,0x2,0x800c0000,0x2,0x0,0x2,0x2,0x0,0x2,0x200000,0x2,0xd4c40000,0x2,0x200400,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x0,0x2,0x2,0x0,0x2,0x2,0x2,0x200000,0x2,0x2,0x200000,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x0,0xd4c40000,0x2,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x800c0400,0x2,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x321c0000,0xc0000,0x800c0000,0xc0000,0x0,0x80000000,0x0,0x80000000,0x800c0000,0x2,0x2,0x800c0000,0x2,0xd4c40000,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,};
+   }
+   private static void jj_la1_init_1() {
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x566000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x120000,0x0,0x120000,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x60001c0,0x60001c0,0x0,0x0,0x0,0x0,0x40,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0xc2,0xc2,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0xc0,0x0,0x40,0x40,0x40,0x40,0xc0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x50000000,0x64000c0,0x50000000,0x3f,0x0,0x564000c0,0x0,0x80000000,0x0,0x3f,0x0,0x0,0x564000c0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x160040,0x0,0x40,0x0,0x0,0x160040,0x0,0x40,0x0,0x0,0x80,0x0,0x0,0x0,0x60000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x6000000,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x6000000,0xc0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x160000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x160000,0x0,0x0,0x0,0x160000,0x160000,0x160000,0x0,0x0,0x160000,0x0,0x60000c0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
+   }
+   private static void jj_la1_init_2() {
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x1000,0x0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x2000,0x0,0x2000,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x2b80,0x2b80,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x2a80,0x0,0x0,0x0,0x0,0x0,0x380,0x380,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x100,0x0,0x40,0x0,0x0,0x0,0x109,0x1000,0x1300,0x0,0x1109,0x0,0x0,0x0,0x1300,0x20,0x0,0x1109,0x0,0x1300,0x0,0x0,0x0,0x1100,0x0,0x1109,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x1109,0x1109,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0xfffffb80,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0x0,0x0,0x0,0x1100,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0xfffffb80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0xffffe200,0x0,0x100,0x980,0xffffeb80,0x0,0x0,0xfffffb80,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,};
+   }
+   private static void jj_la1_init_3() {
+      jj_la1_3 = new int[] {0x8,0x80,0x80,0x2,0x80,0x0,0x0,0x0,0x75,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x45,0x45,0x0,0x0,0x0,0xc401bf,0xc401bf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401be,0x0,0x0,0x0,0x0,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x47,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x45,0x0,0x200000,0x0,0x45,0x0,0x0,0x0,0x200000,0x0,0x0,0x45,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x45,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x75,0x75,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x380000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x400000,0x0,0x0,0x40001,0x440001,0x0,0x0,0x440001,0x0,0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+   }
+  final private JJCalls[] jj_2_rtns = new JJCalls[9];
+  private boolean jj_rescan = false;
+  private int jj_gc = 0;
+
+  /** Constructor with user supplied CharStream. */
+  public Parser(CharStream stream) {
+    token_source = new ParserTokenManager(stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 253; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  /** Reinitialise. */
+  public void ReInit(CharStream stream) {
+    token_source.ReInit(stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 253; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  /** Constructor with generated Token Manager. */
+  public Parser(ParserTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 253; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  /** Reinitialise. */
+  public void ReInit(ParserTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 253; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  private Token jj_consume_token(int kind) throws ParseException {
+    Token oldToken;
+    if ((oldToken = token).next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    if (token.kind == kind) {
+      jj_gen++;
+      if (++jj_gc > 100) {
+        jj_gc = 0;
+        for (int i = 0; i < jj_2_rtns.length; i++) {
+          JJCalls c = jj_2_rtns[i];
+          while (c != null) {
+            if (c.gen < jj_gen) c.first = null;
+            c = c.next;
+          }
+        }
+      }
+      return token;
+    }
+    token = oldToken;
+    jj_kind = kind;
+    throw generateParseException();
+  }
+
+  static private final class LookaheadSuccess extends java.lang.Error { }
+  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+  private boolean jj_scan_token(int kind) {
+    if (jj_scanpos == jj_lastpos) {
+      jj_la--;
+      if (jj_scanpos.next == null) {
+        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+      } else {
+        jj_lastpos = jj_scanpos = jj_scanpos.next;
+      }
+    } else {
+      jj_scanpos = jj_scanpos.next;
+    }
+    if (jj_rescan) {
+      int i = 0; Token tok = token;
+      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+      if (tok != null) jj_add_error_token(kind, i);
+    }
+    if (jj_scanpos.kind != kind) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+    return false;
+  }
+
+
+/** Get the next Token. */
+  final public Token getNextToken() {
+    if (token.next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    jj_gen++;
+    return token;
+  }
+
+/** Get the specific Token. */
+  final public Token getToken(int index) {
+    Token t = token;
+    for (int i = 0; i < index; i++) {
+      if (t.next != null) t = t.next;
+      else t = t.next = token_source.getNextToken();
+    }
+    return t;
+  }
+
+  private int jj_ntk() {
+    if ((jj_nt=token.next) == null)
+      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+    else
+      return (jj_ntk = jj_nt.kind);
+  }
+
+  private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
+  private int[] jj_expentry;
+  private int jj_kind = -1;
+  private int[] jj_lasttokens = new int[100];
+  private int jj_endpos;
+
+  private void jj_add_error_token(int kind, int pos) {
+    if (pos >= 100) return;
+    if (pos == jj_endpos + 1) {
+      jj_lasttokens[jj_endpos++] = kind;
+    } else if (jj_endpos != 0) {
+      jj_expentry = new int[jj_endpos];
+      for (int i = 0; i < jj_endpos; i++) {
+        jj_expentry[i] = jj_lasttokens[i];
+      }
+      jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
+        int[] oldentry = (int[])(it.next());
+        if (oldentry.length == jj_expentry.length) {
+          for (int i = 0; i < jj_expentry.length; i++) {
+            if (oldentry[i] != jj_expentry[i]) {
+              continue jj_entries_loop;
+            }
+          }
+          jj_expentries.add(jj_expentry);
+          break jj_entries_loop;
+        }
+      }
+      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+    }
+  }
+
+  /** Generate ParseException. */
+  public ParseException generateParseException() {
+    jj_expentries.clear();
+    boolean[] la1tokens = new boolean[120];
+    if (jj_kind >= 0) {
+      la1tokens[jj_kind] = true;
+      jj_kind = -1;
+    }
+    for (int i = 0; i < 253; i++) {
+      if (jj_la1[i] == jj_gen) {
+        for (int j = 0; j < 32; j++) {
+          if ((jj_la1_0[i] & (1<<j)) != 0) {
+            la1tokens[j] = true;
+          }
+          if ((jj_la1_1[i] & (1<<j)) != 0) {
+            la1tokens[32+j] = true;
+          }
+          if ((jj_la1_2[i] & (1<<j)) != 0) {
+            la1tokens[64+j] = true;
+          }
+          if ((jj_la1_3[i] & (1<<j)) != 0) {
+            la1tokens[96+j] = true;
+          }
+        }
+      }
+    }
+    for (int i = 0; i < 120; i++) {
+      if (la1tokens[i]) {
+        jj_expentry = new int[1];
+        jj_expentry[0] = i;
+        jj_expentries.add(jj_expentry);
+      }
+    }
+    jj_endpos = 0;
+    jj_rescan_token();
+    jj_add_error_token(0, 0);
+    int[][] exptokseq = new int[jj_expentries.size()][];
+    for (int i = 0; i < jj_expentries.size(); i++) {
+      exptokseq[i] = jj_expentries.get(i);
+    }
+    return new ParseException(token, exptokseq, tokenImage);
+  }
+
+  /** Enable tracing. */
+  final public void enable_tracing() {
+  }
+
+  /** Disable tracing. */
+  final public void disable_tracing() {
+  }
+
+  private void jj_rescan_token() {
+    jj_rescan = true;
+    for (int i = 0; i < 9; i++) {
+    try {
+      JJCalls p = jj_2_rtns[i];
+      do {
+        if (p.gen > jj_gen) {
+          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+          switch (i) {
+            case 0: jj_3_1(); break;
+            case 1: jj_3_2(); break;
+            case 2: jj_3_3(); break;
+            case 3: jj_3_4(); break;
+            case 4: jj_3_5(); break;
+            case 5: jj_3_6(); break;
+            case 6: jj_3_7(); break;
+            case 7: jj_3_8(); break;
+            case 8: jj_3_9(); break;
+          }
+        }
+        p = p.next;
+      } while (p != null);
+      } catch(LookaheadSuccess ls) { }
+    }
+    jj_rescan = false;
+  }
+
+  private void jj_save(int index, int xla) {
+    JJCalls p = jj_2_rtns[index];
+    while (p.gen > jj_gen) {
+      if (p.next == null) { p = p.next = new JJCalls(); break; }
+      p = p.next;
+    }
+    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+  }
+
+  static final class JJCalls {
+    int gen;
+    Token first;
+    int arg;
+    JJCalls next;
+  }
 
 }
index 871be2c4d0aad5375a00838d8b3cb4ffea654b22..8b81c130c1184a7b32563692f682565f3a5ff8bb 100644 (file)
@@ -1269,18 +1269,12 @@ String simple_selector(String selector, char comb) :
     pseudoElt = null;
 }
 {
-    ( simple_current=element_name() 
-       ( cond=hash(cond) | cond=_class(cond) 
-         | cond=attrib(cond) | cond=pseudo(cond) )*
-      | cond=hash(cond) ( cond=_class(cond) 
-                         | cond=attrib(cond) | cond=pseudo(cond) )*
-      | cond=_class(cond) ( cond=hash(cond) | cond=_class(cond) 
-                      | cond=attrib(cond) | cond=pseudo(cond) )*
-      | cond=pseudo(cond) ( cond=hash(cond) | cond=_class(cond) 
-                      | cond=attrib(cond) | cond=pseudo(cond) )*
-      | cond=attrib(cond) ( cond=hash(cond) | cond=_class(cond) 
-                           | cond=attrib(cond) | cond=pseudo(cond) )*
-      )
+    (  (simple_current=element_name() 
+            ( cond=hash(cond) | cond=_class(cond) 
+              | cond=attrib(cond) | cond=pseudo(cond) )* )
+     | ( cond = hash(cond) | cond=_class(cond) 
+            | cond=attrib(cond) | cond=pseudo(cond) )+      
+     )
        {
            if (simple_current == null) {
                simple_current = "";
@@ -1726,8 +1720,7 @@ void includeDirective() :
     (<S>)*
     (name = property()|name = variableName(){ name = "$"+name;}
          |(name = functionName() 
-           args = argValuelist()) <RPARAN>)
-    (<S>)*
+           args = argValuelist()) <RPARAN> (<S>)*)
     ((";"(<S>)*)+
            {documentHandler.includeDirective(name, args);}
     | <LBRACE> (<S>)* {documentHandler.startIncludeContentBlock(name);}
index b5e3b296bdcfe4640aaa50bb070fd118cef7dc9c..a3ab622ee916c2feaa9f89c4ac66e9f2232dc631 100644 (file)
 /* Generated By:JavaCC: Do not edit this line. ParserConstants.java */
 package com.vaadin.sass.internal.parser;
 
+
 /**
- * Token literal values and constants. Generated by
- * org.javacc.parser.OtherFilesGen#start()
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
  */
 public interface ParserConstants {
 
-    /** End of File. */
-    int EOF = 0;
-    /** RegularExpression Id. */
-    int S = 1;
-    /** RegularExpression Id. */
-    int SINGLE_LINE_COMMENT = 2;
-    /** RegularExpression Id. */
-    int FORMAL_COMMENT = 5;
-    /** RegularExpression Id. */
-    int MULTI_LINE_COMMENT = 6;
-    /** RegularExpression Id. */
-    int CDO = 8;
-    /** RegularExpression Id. */
-    int CDC = 9;
-    /** RegularExpression Id. */
-    int LBRACE = 10;
-    /** RegularExpression Id. */
-    int RBRACE = 11;
-    /** RegularExpression Id. */
-    int DASHMATCH = 12;
-    /** RegularExpression Id. */
-    int CARETMATCH = 13;
-    /** RegularExpression Id. */
-    int DOLLARMATCH = 14;
-    /** RegularExpression Id. */
-    int STARMATCH = 15;
-    /** RegularExpression Id. */
-    int INCLUDES = 16;
-    /** RegularExpression Id. */
-    int EQ = 17;
-    /** RegularExpression Id. */
-    int PLUS = 18;
-    /** RegularExpression Id. */
-    int MINUS = 19;
-    /** RegularExpression Id. */
-    int COMMA = 20;
-    /** RegularExpression Id. */
-    int SEMICOLON = 21;
-    /** RegularExpression Id. */
-    int PRECEDES = 22;
-    /** RegularExpression Id. */
-    int SIBLING = 23;
-    /** RegularExpression Id. */
-    int SUCCEEDS = 24;
-    /** RegularExpression Id. */
-    int DIV = 25;
-    /** RegularExpression Id. */
-    int LBRACKET = 26;
-    /** RegularExpression Id. */
-    int RBRACKET = 27;
-    /** RegularExpression Id. */
-    int ANY = 28;
-    /** RegularExpression Id. */
-    int MOD = 29;
-    /** RegularExpression Id. */
-    int PARENT = 30;
-    /** RegularExpression Id. */
-    int DOT = 31;
-    /** RegularExpression Id. */
-    int LPARAN = 32;
-    /** RegularExpression Id. */
-    int RPARAN = 33;
-    /** RegularExpression Id. */
-    int COMPARE = 34;
-    /** RegularExpression Id. */
-    int OR = 35;
-    /** RegularExpression Id. */
-    int AND = 36;
-    /** RegularExpression Id. */
-    int NOT_EQ = 37;
-    /** RegularExpression Id. */
-    int COLON = 38;
-    /** RegularExpression Id. */
-    int INTERPOLATION = 39;
-    /** RegularExpression Id. */
-    int NONASCII = 40;
-    /** RegularExpression Id. */
-    int H = 41;
-    /** RegularExpression Id. */
-    int UNICODE = 42;
-    /** RegularExpression Id. */
-    int ESCAPE = 43;
-    /** RegularExpression Id. */
-    int NMSTART = 44;
-    /** RegularExpression Id. */
-    int NMCHAR = 45;
-    /** RegularExpression Id. */
-    int STRINGCHAR = 46;
-    /** RegularExpression Id. */
-    int D = 47;
-    /** RegularExpression Id. */
-    int NAME = 48;
-    /** RegularExpression Id. */
-    int TO = 49;
-    /** RegularExpression Id. */
-    int THROUGH = 50;
-    /** RegularExpression Id. */
-    int EACH_IN = 51;
-    /** RegularExpression Id. */
-    int FROM = 52;
-    /** RegularExpression Id. */
-    int MIXIN_SYM = 53;
-    /** RegularExpression Id. */
-    int INCLUDE_SYM = 54;
-    /** RegularExpression Id. */
-    int FUNCTION_SYM = 55;
-    /** RegularExpression Id. */
-    int RETURN_SYM = 56;
-    /** RegularExpression Id. */
-    int DEBUG_SYM = 57;
-    /** RegularExpression Id. */
-    int WARN_SYM = 58;
-    /** RegularExpression Id. */
-    int FOR_SYM = 59;
-    /** RegularExpression Id. */
-    int EACH_SYM = 60;
-    /** RegularExpression Id. */
-    int WHILE_SYM = 61;
-    /** RegularExpression Id. */
-    int IF_SYM = 62;
-    /** RegularExpression Id. */
-    int ELSE_SYM = 63;
-    /** RegularExpression Id. */
-    int EXTEND_SYM = 64;
-    /** RegularExpression Id. */
-    int MOZ_DOCUMENT_SYM = 65;
-    /** RegularExpression Id. */
-    int SUPPORTS_SYM = 66;
-    /** RegularExpression Id. */
-    int CONTENT_SYM = 67;
-    /** RegularExpression Id. */
-    int MICROSOFT_RULE = 68;
-    /** RegularExpression Id. */
-    int IF = 69;
-    /** RegularExpression Id. */
-    int GUARDED_SYM = 70;
-    /** RegularExpression Id. */
-    int STRING = 71;
-    /** RegularExpression Id. */
-    int IDENT = 72;
-    /** RegularExpression Id. */
-    int NUMBER = 73;
-    /** RegularExpression Id. */
-    int _URL = 74;
-    /** RegularExpression Id. */
-    int URL = 75;
-    /** RegularExpression Id. */
-    int VARIABLE = 76;
-    /** RegularExpression Id. */
-    int PERCENTAGE = 77;
-    /** RegularExpression Id. */
-    int PT = 78;
-    /** RegularExpression Id. */
-    int MM = 79;
-    /** RegularExpression Id. */
-    int CM = 80;
-    /** RegularExpression Id. */
-    int PC = 81;
-    /** RegularExpression Id. */
-    int IN = 82;
-    /** RegularExpression Id. */
-    int PX = 83;
-    /** RegularExpression Id. */
-    int EMS = 84;
-    /** RegularExpression Id. */
-    int LEM = 85;
-    /** RegularExpression Id. */
-    int REM = 86;
-    /** RegularExpression Id. */
-    int EXS = 87;
-    /** RegularExpression Id. */
-    int DEG = 88;
-    /** RegularExpression Id. */
-    int RAD = 89;
-    /** RegularExpression Id. */
-    int GRAD = 90;
-    /** RegularExpression Id. */
-    int MS = 91;
-    /** RegularExpression Id. */
-    int SECOND = 92;
-    /** RegularExpression Id. */
-    int HZ = 93;
-    /** RegularExpression Id. */
-    int KHZ = 94;
-    /** RegularExpression Id. */
-    int DIMEN = 95;
-    /** RegularExpression Id. */
-    int HASH = 96;
-    /** RegularExpression Id. */
-    int IMPORT_SYM = 97;
-    /** RegularExpression Id. */
-    int MEDIA_SYM = 98;
-    /** RegularExpression Id. */
-    int CHARSET_SYM = 99;
-    /** RegularExpression Id. */
-    int PAGE_SYM = 100;
-    /** RegularExpression Id. */
-    int FONT_FACE_SYM = 101;
-    /** RegularExpression Id. */
-    int KEY_FRAME_SYM = 102;
-    /** RegularExpression Id. */
-    int ATKEYWORD = 103;
-    /** RegularExpression Id. */
-    int IMPORTANT_SYM = 104;
-    /** RegularExpression Id. */
-    int RANGE0 = 105;
-    /** RegularExpression Id. */
-    int RANGE1 = 106;
-    /** RegularExpression Id. */
-    int RANGE2 = 107;
-    /** RegularExpression Id. */
-    int RANGE3 = 108;
-    /** RegularExpression Id. */
-    int RANGE4 = 109;
-    /** RegularExpression Id. */
-    int RANGE5 = 110;
-    /** RegularExpression Id. */
-    int RANGE6 = 111;
-    /** RegularExpression Id. */
-    int RANGE = 112;
-    /** RegularExpression Id. */
-    int UNI = 113;
-    /** RegularExpression Id. */
-    int UNICODERANGE = 114;
-    /** RegularExpression Id. */
-    int REMOVE = 115;
-    /** RegularExpression Id. */
-    int APPEND = 116;
-    /** RegularExpression Id. */
-    int CONTAINS = 117;
-    /** RegularExpression Id. */
-    int FUNCTION = 118;
-    /** RegularExpression Id. */
-    int UNKNOWN = 119;
+  /** End of File. */
+  int EOF = 0;
+  /** RegularExpression Id. */
+  int S = 1;
+  /** RegularExpression Id. */
+  int SINGLE_LINE_COMMENT = 2;
+  /** RegularExpression Id. */
+  int FORMAL_COMMENT = 5;
+  /** RegularExpression Id. */
+  int MULTI_LINE_COMMENT = 6;
+  /** RegularExpression Id. */
+  int CDO = 8;
+  /** RegularExpression Id. */
+  int CDC = 9;
+  /** RegularExpression Id. */
+  int LBRACE = 10;
+  /** RegularExpression Id. */
+  int RBRACE = 11;
+  /** RegularExpression Id. */
+  int DASHMATCH = 12;
+  /** RegularExpression Id. */
+  int CARETMATCH = 13;
+  /** RegularExpression Id. */
+  int DOLLARMATCH = 14;
+  /** RegularExpression Id. */
+  int STARMATCH = 15;
+  /** RegularExpression Id. */
+  int INCLUDES = 16;
+  /** RegularExpression Id. */
+  int EQ = 17;
+  /** RegularExpression Id. */
+  int PLUS = 18;
+  /** RegularExpression Id. */
+  int MINUS = 19;
+  /** RegularExpression Id. */
+  int COMMA = 20;
+  /** RegularExpression Id. */
+  int SEMICOLON = 21;
+  /** RegularExpression Id. */
+  int PRECEDES = 22;
+  /** RegularExpression Id. */
+  int SIBLING = 23;
+  /** RegularExpression Id. */
+  int SUCCEEDS = 24;
+  /** RegularExpression Id. */
+  int DIV = 25;
+  /** RegularExpression Id. */
+  int LBRACKET = 26;
+  /** RegularExpression Id. */
+  int RBRACKET = 27;
+  /** RegularExpression Id. */
+  int ANY = 28;
+  /** RegularExpression Id. */
+  int MOD = 29;
+  /** RegularExpression Id. */
+  int PARENT = 30;
+  /** RegularExpression Id. */
+  int DOT = 31;
+  /** RegularExpression Id. */
+  int LPARAN = 32;
+  /** RegularExpression Id. */
+  int RPARAN = 33;
+  /** RegularExpression Id. */
+  int COMPARE = 34;
+  /** RegularExpression Id. */
+  int OR = 35;
+  /** RegularExpression Id. */
+  int AND = 36;
+  /** RegularExpression Id. */
+  int NOT_EQ = 37;
+  /** RegularExpression Id. */
+  int COLON = 38;
+  /** RegularExpression Id. */
+  int INTERPOLATION = 39;
+  /** RegularExpression Id. */
+  int NONASCII = 40;
+  /** RegularExpression Id. */
+  int H = 41;
+  /** RegularExpression Id. */
+  int UNICODE = 42;
+  /** RegularExpression Id. */
+  int ESCAPE = 43;
+  /** RegularExpression Id. */
+  int NMSTART = 44;
+  /** RegularExpression Id. */
+  int NMCHAR = 45;
+  /** RegularExpression Id. */
+  int STRINGCHAR = 46;
+  /** RegularExpression Id. */
+  int D = 47;
+  /** RegularExpression Id. */
+  int NAME = 48;
+  /** RegularExpression Id. */
+  int TO = 49;
+  /** RegularExpression Id. */
+  int THROUGH = 50;
+  /** RegularExpression Id. */
+  int EACH_IN = 51;
+  /** RegularExpression Id. */
+  int FROM = 52;
+  /** RegularExpression Id. */
+  int MIXIN_SYM = 53;
+  /** RegularExpression Id. */
+  int INCLUDE_SYM = 54;
+  /** RegularExpression Id. */
+  int FUNCTION_SYM = 55;
+  /** RegularExpression Id. */
+  int RETURN_SYM = 56;
+  /** RegularExpression Id. */
+  int DEBUG_SYM = 57;
+  /** RegularExpression Id. */
+  int WARN_SYM = 58;
+  /** RegularExpression Id. */
+  int FOR_SYM = 59;
+  /** RegularExpression Id. */
+  int EACH_SYM = 60;
+  /** RegularExpression Id. */
+  int WHILE_SYM = 61;
+  /** RegularExpression Id. */
+  int IF_SYM = 62;
+  /** RegularExpression Id. */
+  int ELSE_SYM = 63;
+  /** RegularExpression Id. */
+  int EXTEND_SYM = 64;
+  /** RegularExpression Id. */
+  int MOZ_DOCUMENT_SYM = 65;
+  /** RegularExpression Id. */
+  int SUPPORTS_SYM = 66;
+  /** RegularExpression Id. */
+  int CONTENT_SYM = 67;
+  /** RegularExpression Id. */
+  int MICROSOFT_RULE = 68;
+  /** RegularExpression Id. */
+  int IF = 69;
+  /** RegularExpression Id. */
+  int GUARDED_SYM = 70;
+  /** RegularExpression Id. */
+  int STRING = 71;
+  /** RegularExpression Id. */
+  int IDENT = 72;
+  /** RegularExpression Id. */
+  int NUMBER = 73;
+  /** RegularExpression Id. */
+  int _URL = 74;
+  /** RegularExpression Id. */
+  int URL = 75;
+  /** RegularExpression Id. */
+  int VARIABLE = 76;
+  /** RegularExpression Id. */
+  int PERCENTAGE = 77;
+  /** RegularExpression Id. */
+  int PT = 78;
+  /** RegularExpression Id. */
+  int MM = 79;
+  /** RegularExpression Id. */
+  int CM = 80;
+  /** RegularExpression Id. */
+  int PC = 81;
+  /** RegularExpression Id. */
+  int IN = 82;
+  /** RegularExpression Id. */
+  int PX = 83;
+  /** RegularExpression Id. */
+  int EMS = 84;
+  /** RegularExpression Id. */
+  int LEM = 85;
+  /** RegularExpression Id. */
+  int REM = 86;
+  /** RegularExpression Id. */
+  int EXS = 87;
+  /** RegularExpression Id. */
+  int DEG = 88;
+  /** RegularExpression Id. */
+  int RAD = 89;
+  /** RegularExpression Id. */
+  int GRAD = 90;
+  /** RegularExpression Id. */
+  int MS = 91;
+  /** RegularExpression Id. */
+  int SECOND = 92;
+  /** RegularExpression Id. */
+  int HZ = 93;
+  /** RegularExpression Id. */
+  int KHZ = 94;
+  /** RegularExpression Id. */
+  int DIMEN = 95;
+  /** RegularExpression Id. */
+  int HASH = 96;
+  /** RegularExpression Id. */
+  int IMPORT_SYM = 97;
+  /** RegularExpression Id. */
+  int MEDIA_SYM = 98;
+  /** RegularExpression Id. */
+  int CHARSET_SYM = 99;
+  /** RegularExpression Id. */
+  int PAGE_SYM = 100;
+  /** RegularExpression Id. */
+  int FONT_FACE_SYM = 101;
+  /** RegularExpression Id. */
+  int KEY_FRAME_SYM = 102;
+  /** RegularExpression Id. */
+  int ATKEYWORD = 103;
+  /** RegularExpression Id. */
+  int IMPORTANT_SYM = 104;
+  /** RegularExpression Id. */
+  int RANGE0 = 105;
+  /** RegularExpression Id. */
+  int RANGE1 = 106;
+  /** RegularExpression Id. */
+  int RANGE2 = 107;
+  /** RegularExpression Id. */
+  int RANGE3 = 108;
+  /** RegularExpression Id. */
+  int RANGE4 = 109;
+  /** RegularExpression Id. */
+  int RANGE5 = 110;
+  /** RegularExpression Id. */
+  int RANGE6 = 111;
+  /** RegularExpression Id. */
+  int RANGE = 112;
+  /** RegularExpression Id. */
+  int UNI = 113;
+  /** RegularExpression Id. */
+  int UNICODERANGE = 114;
+  /** RegularExpression Id. */
+  int REMOVE = 115;
+  /** RegularExpression Id. */
+  int APPEND = 116;
+  /** RegularExpression Id. */
+  int CONTAINS = 117;
+  /** RegularExpression Id. */
+  int FUNCTION = 118;
+  /** RegularExpression Id. */
+  int UNKNOWN = 119;
 
-    /** Lexical state. */
-    int DEFAULT = 0;
-    /** Lexical state. */
-    int IN_FORMAL_COMMENT = 1;
-    /** Lexical state. */
-    int IN_MULTI_LINE_COMMENT = 2;
+  /** Lexical state. */
+  int DEFAULT = 0;
+  /** Lexical state. */
+  int IN_FORMAL_COMMENT = 1;
+  /** Lexical state. */
+  int IN_MULTI_LINE_COMMENT = 2;
 
-    /** Literal token values. */
-    String[] tokenImage = { "<EOF>", "<S>", "<SINGLE_LINE_COMMENT>",
-            "<token of kind 3>", "\"/*\"", "\"*/\"", "\"*/\"",
-            "<token of kind 7>", "\"<!--\"", "\"-->\"", "\"{\"", "\"}\"",
-            "\"|=\"", "\"^=\"", "\"$=\"", "\"*=\"", "\"~=\"", "\"=\"", "\"+\"",
-            "\"-\"", "\",\"", "\";\"", "\">\"", "\"~\"", "\"<\"", "\"/\"",
-            "\"[\"", "\"]\"", "\"*\"", "\"%\"", "\"&\"", "\".\"", "\"(\"",
-            "\")\"", "\"==\"", "\"||\"", "\"&&\"", "\"!=\"", "\":\"",
-            "<INTERPOLATION>", "<NONASCII>", "<H>", "<UNICODE>", "<ESCAPE>",
-            "<NMSTART>", "<NMCHAR>", "<STRINGCHAR>", "<D>", "<NAME>", "\"to\"",
-            "\"through\"", "\"in\"", "\"from\"", "\"@mixin\"", "\"@include\"",
-            "\"@function\"", "\"@return\"", "\"@debug\"", "\"@warn\"",
-            "\"@for\"", "\"@each\"", "\"@while\"", "\"@if\"", "\"@else\"",
-            "\"@extend\"", "\"@-moz-document\"", "\"@supports\"",
-            "\"@content\"", "<MICROSOFT_RULE>", "\"if\"", "<GUARDED_SYM>",
-            "<STRING>", "<IDENT>", "<NUMBER>", "<_URL>", "<URL>", "<VARIABLE>",
-            "<PERCENTAGE>", "<PT>", "<MM>", "<CM>", "<PC>", "<IN>", "<PX>",
-            "<EMS>", "<LEM>", "<REM>", "<EXS>", "<DEG>", "<RAD>", "<GRAD>",
-            "<MS>", "<SECOND>", "<HZ>", "<KHZ>", "<DIMEN>", "<HASH>",
-            "\"@import\"", "\"@media\"", "\"@charset\"", "\"@page\"",
-            "\"@font-face\"", "<KEY_FRAME_SYM>", "<ATKEYWORD>",
-            "<IMPORTANT_SYM>", "<RANGE0>", "<RANGE1>", "<RANGE2>", "<RANGE3>",
-            "<RANGE4>", "<RANGE5>", "<RANGE6>", "<RANGE>", "<UNI>",
-            "<UNICODERANGE>", "<REMOVE>", "<APPEND>", "<CONTAINS>",
-            "<FUNCTION>", "<UNKNOWN>", };
+  /** Literal token values. */
+  String[] tokenImage = {
+    "<EOF>",
+    "<S>",
+    "<SINGLE_LINE_COMMENT>",
+    "<token of kind 3>",
+    "\"/*\"",
+    "\"*/\"",
+    "\"*/\"",
+    "<token of kind 7>",
+    "\"<!--\"",
+    "\"-->\"",
+    "\"{\"",
+    "\"}\"",
+    "\"|=\"",
+    "\"^=\"",
+    "\"$=\"",
+    "\"*=\"",
+    "\"~=\"",
+    "\"=\"",
+    "\"+\"",
+    "\"-\"",
+    "\",\"",
+    "\";\"",
+    "\">\"",
+    "\"~\"",
+    "\"<\"",
+    "\"/\"",
+    "\"[\"",
+    "\"]\"",
+    "\"*\"",
+    "\"%\"",
+    "\"&\"",
+    "\".\"",
+    "\"(\"",
+    "\")\"",
+    "\"==\"",
+    "\"||\"",
+    "\"&&\"",
+    "\"!=\"",
+    "\":\"",
+    "<INTERPOLATION>",
+    "<NONASCII>",
+    "<H>",
+    "<UNICODE>",
+    "<ESCAPE>",
+    "<NMSTART>",
+    "<NMCHAR>",
+    "<STRINGCHAR>",
+    "<D>",
+    "<NAME>",
+    "\"to\"",
+    "\"through\"",
+    "\"in\"",
+    "\"from\"",
+    "\"@mixin\"",
+    "\"@include\"",
+    "\"@function\"",
+    "\"@return\"",
+    "\"@debug\"",
+    "\"@warn\"",
+    "\"@for\"",
+    "\"@each\"",
+    "\"@while\"",
+    "\"@if\"",
+    "\"@else\"",
+    "\"@extend\"",
+    "\"@-moz-document\"",
+    "\"@supports\"",
+    "\"@content\"",
+    "<MICROSOFT_RULE>",
+    "\"if\"",
+    "<GUARDED_SYM>",
+    "<STRING>",
+    "<IDENT>",
+    "<NUMBER>",
+    "<_URL>",
+    "<URL>",
+    "<VARIABLE>",
+    "<PERCENTAGE>",
+    "<PT>",
+    "<MM>",
+    "<CM>",
+    "<PC>",
+    "<IN>",
+    "<PX>",
+    "<EMS>",
+    "<LEM>",
+    "<REM>",
+    "<EXS>",
+    "<DEG>",
+    "<RAD>",
+    "<GRAD>",
+    "<MS>",
+    "<SECOND>",
+    "<HZ>",
+    "<KHZ>",
+    "<DIMEN>",
+    "<HASH>",
+    "\"@import\"",
+    "\"@media\"",
+    "\"@charset\"",
+    "\"@page\"",
+    "\"@font-face\"",
+    "<KEY_FRAME_SYM>",
+    "<ATKEYWORD>",
+    "<IMPORTANT_SYM>",
+    "<RANGE0>",
+    "<RANGE1>",
+    "<RANGE2>",
+    "<RANGE3>",
+    "<RANGE4>",
+    "<RANGE5>",
+    "<RANGE6>",
+    "<RANGE>",
+    "<UNI>",
+    "<UNICODERANGE>",
+    "<REMOVE>",
+    "<APPEND>",
+    "<CONTAINS>",
+    "<FUNCTION>",
+    "<UNKNOWN>",
+  };
 
 }
index 224a8dbfc158938a1823554d7aee0596a188888c..d54ab4fa7e0b8e3a42bcf59749f7fd71020c0636 100644 (file)
  */
 /* Generated By:JavaCC: Do not edit this line. ParserTokenManager.java */
 package com.vaadin.sass.internal.parser;
+import java.io.*;
+import java.net.*;
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.Map;
+import java.util.UUID;
+import org.w3c.css.sac.ConditionFactory;
+import org.w3c.css.sac.Condition;
+import org.w3c.css.sac.SelectorFactory;
+import org.w3c.css.sac.SelectorList;
+import org.w3c.css.sac.Selector;
+import org.w3c.css.sac.SimpleSelector;
+import org.w3c.css.sac.DocumentHandler;
+import org.w3c.css.sac.InputSource;
+import org.w3c.css.sac.ErrorHandler;
+import org.w3c.css.sac.CSSException;
+import org.w3c.css.sac.CSSParseException;
+import org.w3c.css.sac.Locator;
+import org.w3c.css.sac.LexicalUnit;
+import org.w3c.flute.parser.selectors.SelectorFactoryImpl;
+import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
+import org.w3c.flute.util.Encoding;
+import com.vaadin.sass.internal.handler.*;
+import com.vaadin.sass.internal.tree.*;
 
 /** Token Manager. */
-public class ParserTokenManager implements ParserConstants {
+public class ParserTokenManager implements ParserConstants
+{
 
-    /** Debug output. */
-    public java.io.PrintStream debugStream = System.out;
-
-    /** Set debug output. */
-    public void setDebugStream(java.io.PrintStream ds) {
-        debugStream = ds;
-    }
-
-    private final int jjStopStringLiteralDfa_0(int pos, long active0,
-            long active1) {
-        switch (pos) {
-        case 0:
-            if ((active0 & 0xffe0000000000000L) != 0L
-                    || (active1 & 0x3e0000000fL) != 0L) {
-                return 162;
-            }
-            if ((active0 & 0xe000000000000L) != 0L || (active1 & 0x20L) != 0L) {
-                jjmatchedKind = 72;
-                return 522;
-            }
-            if ((active0 & 0x80000000L) != 0L) {
-                return 523;
-            }
-            if ((active0 & 0x10000000000000L) != 0L) {
-                jjmatchedKind = 72;
-                return 29;
-            }
-            if ((active0 & 0x4000L) != 0L) {
-                return 75;
-            }
-            if ((active0 & 0x2000010L) != 0L) {
-                return 216;
-            }
-            if ((active0 & 0x80200L) != 0L) {
-                return 38;
-            }
-            if ((active0 & 0x2000000000L) != 0L) {
-                return 524;
-            }
-            return -1;
-        case 1:
-            if ((active1 & 0x2L) != 0L) {
-                return 174;
-            }
-            if ((active0 & 0xffe0000000000000L) != 0L
-                    || (active1 & 0x3e0000000dL) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 1;
-                return 525;
-            }
-            if ((active0 & 0x14000000000000L) != 0L) {
-                jjmatchedKind = 72;
-                jjmatchedPos = 1;
-                return 522;
-            }
-            if ((active0 & 0xa000000000000L) != 0L || (active1 & 0x20L) != 0L) {
-                return 522;
-            }
-            if ((active0 & 0x10L) != 0L) {
-                return 221;
-            }
-            return -1;
-        case 2:
-            if ((active0 & 0xbfe0000000000000L) != 0L
-                    || (active1 & 0x3e0000000dL) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 2;
-                return 525;
-            }
-            if ((active0 & 0x4000000000000000L) != 0L) {
-                return 525;
-            }
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 2;
-                return 173;
-            }
-            if ((active0 & 0x14000000000000L) != 0L) {
-                jjmatchedKind = 72;
-                jjmatchedPos = 2;
-                return 522;
-            }
-            return -1;
-        case 3:
-            if ((active0 & 0xb7e0000000000000L) != 0L
-                    || (active1 & 0x3e0000000dL) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 3;
-                return 525;
-            }
-            if ((active0 & 0x800000000000000L) != 0L) {
-                return 525;
-            }
-            if ((active0 & 0x4000000000000L) != 0L) {
-                jjmatchedKind = 72;
-                jjmatchedPos = 3;
-                return 522;
-            }
-            if ((active0 & 0x10000000000000L) != 0L) {
-                return 522;
-            }
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 3;
-                return 172;
-            }
-            return -1;
-        case 4:
-            if ((active0 & 0x9400000000000000L) != 0L
-                    || (active1 & 0x1000000000L) != 0L) {
-                return 525;
-            }
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 4;
-                return 171;
-            }
-            if ((active0 & 0x4000000000000L) != 0L) {
-                jjmatchedKind = 72;
-                jjmatchedPos = 4;
-                return 522;
-            }
-            if ((active0 & 0x23e0000000000000L) != 0L
-                    || (active1 & 0x2e0000000dL) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 4;
-                return 525;
-            }
-            return -1;
-        case 5:
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 5;
-                return 170;
-            }
-            if ((active0 & 0x4000000000000L) != 0L) {
-                jjmatchedKind = 72;
-                jjmatchedPos = 5;
-                return 522;
-            }
-            if ((active0 & 0x2220000000000000L) != 0L
-                    || (active1 & 0x400000000L) != 0L) {
-                return 525;
-            }
-            if ((active0 & 0x1c0000000000000L) != 0L
-                    || (active1 & 0x2a0000000dL) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 5;
-                return 525;
-            }
-            return -1;
-        case 6:
-            if ((active0 & 0x100000000000000L) != 0L
-                    || (active1 & 0x200000001L) != 0L) {
-                return 525;
-            }
-            if ((active0 & 0x4000000000000L) != 0L) {
-                return 522;
-            }
-            if ((active0 & 0xc0000000000000L) != 0L
-                    || (active1 & 0x280000000eL) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 6;
-                return 525;
-            }
-            return -1;
-        case 7:
-            if ((active0 & 0x40000000000000L) != 0L
-                    || (active1 & 0x800000008L) != 0L) {
-                return 525;
-            }
-            if ((active0 & 0x80000000000000L) != 0L
-                    || (active1 & 0x2000000006L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 7;
-                return 525;
-            }
-            return -1;
-        case 8:
-            if ((active1 & 0x2000000002L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 8;
-                return 525;
-            }
-            if ((active0 & 0x80000000000000L) != 0L || (active1 & 0x4L) != 0L) {
-                return 525;
-            }
-            return -1;
-        case 9:
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 9;
-                return 525;
-            }
-            if ((active1 & 0x2000000000L) != 0L) {
-                return 525;
-            }
-            return -1;
-        case 10:
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 10;
-                return 525;
-            }
-            return -1;
-        case 11:
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 11;
-                return 525;
-            }
-            return -1;
-        case 12:
-            if ((active1 & 0x2L) != 0L) {
-                jjmatchedKind = 103;
-                jjmatchedPos = 12;
-                return 525;
-            }
-            return -1;
-        default:
-            return -1;
-        }
-    }
-
-    private final int jjStartNfa_0(int pos, long active0, long active1) {
-        return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1),
-                pos + 1);
-    }
-
-    private int jjStopAtPos(int pos, int kind) {
-        jjmatchedKind = kind;
-        jjmatchedPos = pos;
-        return pos + 1;
-    }
-
-    private int jjMoveStringLiteralDfa0_0() {
-        switch (curChar) {
-        case 33:
-            return jjMoveStringLiteralDfa1_0(0x2000000000L, 0x0L);
-        case 36:
-            return jjMoveStringLiteralDfa1_0(0x4000L, 0x0L);
-        case 37:
-            return jjStopAtPos(0, 29);
-        case 38:
-            jjmatchedKind = 30;
-            return jjMoveStringLiteralDfa1_0(0x1000000000L, 0x0L);
-        case 40:
-            return jjStopAtPos(0, 32);
-        case 41:
-            return jjStopAtPos(0, 33);
-        case 42:
-            jjmatchedKind = 28;
-            return jjMoveStringLiteralDfa1_0(0x8000L, 0x0L);
-        case 43:
-            return jjStopAtPos(0, 18);
-        case 44:
-            return jjStopAtPos(0, 20);
-        case 45:
-            jjmatchedKind = 19;
-            return jjMoveStringLiteralDfa1_0(0x200L, 0x0L);
-        case 46:
-            return jjStartNfaWithStates_0(0, 31, 523);
-        case 47:
-            jjmatchedKind = 25;
-            return jjMoveStringLiteralDfa1_0(0x10L, 0x0L);
-        case 58:
-            return jjStopAtPos(0, 38);
-        case 59:
-            return jjStopAtPos(0, 21);
-        case 60:
-            jjmatchedKind = 24;
-            return jjMoveStringLiteralDfa1_0(0x100L, 0x0L);
-        case 61:
-            jjmatchedKind = 17;
-            return jjMoveStringLiteralDfa1_0(0x400000000L, 0x0L);
-        case 62:
-            return jjStopAtPos(0, 22);
-        case 64:
-            return jjMoveStringLiteralDfa1_0(0xffe0000000000000L, 0x3e0000000fL);
-        case 91:
-            return jjStopAtPos(0, 26);
-        case 93:
-            return jjStopAtPos(0, 27);
-        case 94:
-            return jjMoveStringLiteralDfa1_0(0x2000L, 0x0L);
-        case 70:
-        case 102:
-            return jjMoveStringLiteralDfa1_0(0x10000000000000L, 0x0L);
-        case 73:
-        case 105:
-            return jjMoveStringLiteralDfa1_0(0x8000000000000L, 0x20L);
-        case 84:
-        case 116:
-            return jjMoveStringLiteralDfa1_0(0x6000000000000L, 0x0L);
-        case 123:
-            return jjStopAtPos(0, 10);
-        case 124:
-            return jjMoveStringLiteralDfa1_0(0x800001000L, 0x0L);
-        case 125:
-            return jjStopAtPos(0, 11);
-        case 126:
-            jjmatchedKind = 23;
-            return jjMoveStringLiteralDfa1_0(0x10000L, 0x0L);
-        default:
-            return jjMoveNfa_0(24, 0);
-        }
-    }
-
-    private int jjMoveStringLiteralDfa1_0(long active0, long active1) {
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(0, active0, active1);
-            return 1;
-        }
-        switch (curChar) {
-        case 33:
-            return jjMoveStringLiteralDfa2_0(active0, 0x100L, active1, 0L);
-        case 38:
-            if ((active0 & 0x1000000000L) != 0L) {
-                return jjStopAtPos(1, 36);
-            }
-            break;
-        case 42:
-            if ((active0 & 0x10L) != 0L) {
-                return jjStartNfaWithStates_0(1, 4, 221);
-            }
-            break;
-        case 45:
-            return jjMoveStringLiteralDfa2_0(active0, 0x200L, active1, 0x2L);
-        case 61:
-            if ((active0 & 0x1000L) != 0L) {
-                return jjStopAtPos(1, 12);
-            } else if ((active0 & 0x2000L) != 0L) {
-                return jjStopAtPos(1, 13);
-            } else if ((active0 & 0x4000L) != 0L) {
-                return jjStopAtPos(1, 14);
-            } else if ((active0 & 0x8000L) != 0L) {
-                return jjStopAtPos(1, 15);
-            } else if ((active0 & 0x10000L) != 0L) {
-                return jjStopAtPos(1, 16);
-            } else if ((active0 & 0x400000000L) != 0L) {
-                return jjStopAtPos(1, 34);
-            } else if ((active0 & 0x2000000000L) != 0L) {
-                return jjStopAtPos(1, 37);
-            }
-            break;
-        case 67:
-        case 99:
-            return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800000008L);
-        case 68:
-        case 100:
-            return jjMoveStringLiteralDfa2_0(active0, 0x200000000000000L,
-                    active1, 0L);
-        case 69:
-        case 101:
-            return jjMoveStringLiteralDfa2_0(active0, 0x9000000000000000L,
-                    active1, 0x1L);
-        case 70:
-        case 102:
-            if ((active1 & 0x20L) != 0L) {
-                return jjStartNfaWithStates_0(1, 69, 522);
-            }
-            return jjMoveStringLiteralDfa2_0(active0, 0x880000000000000L,
-                    active1, 0x2000000000L);
-        case 72:
-        case 104:
-            return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L,
-                    active1, 0L);
-        case 73:
-        case 105:
-            return jjMoveStringLiteralDfa2_0(active0, 0x4040000000000000L,
-                    active1, 0x200000000L);
-        case 77:
-        case 109:
-            return jjMoveStringLiteralDfa2_0(active0, 0x20000000000000L,
-                    active1, 0x400000000L);
-        case 78:
-        case 110:
-            if ((active0 & 0x8000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(1, 51, 522);
-            }
-            break;
-        case 79:
-        case 111:
-            if ((active0 & 0x2000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(1, 49, 522);
-            }
-            break;
-        case 80:
-        case 112:
-            return jjMoveStringLiteralDfa2_0(active0, 0L, active1,
-                    0x1000000000L);
-        case 82:
-        case 114:
-            return jjMoveStringLiteralDfa2_0(active0, 0x110000000000000L,
-                    active1, 0L);
-        case 83:
-        case 115:
-            return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4L);
-        case 87:
-        case 119:
-            return jjMoveStringLiteralDfa2_0(active0, 0x2400000000000000L,
-                    active1, 0L);
-        case 124:
-            if ((active0 & 0x800000000L) != 0L) {
-                return jjStopAtPos(1, 35);
-            }
-            break;
-        default:
-            break;
-        }
-        return jjStartNfa_0(0, active0, active1);
-    }
-
-    private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(0, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(1, active0, active1);
-            return 2;
-        }
-        switch (curChar) {
-        case 45:
-            return jjMoveStringLiteralDfa3_0(active0, 0x100L, active1, 0L);
-        case 62:
-            if ((active0 & 0x200L) != 0L) {
-                return jjStopAtPos(2, 9);
-            }
-            break;
-        case 65:
-        case 97:
-            return jjMoveStringLiteralDfa3_0(active0, 0x1400000000000000L,
-                    active1, 0x1000000000L);
-        case 69:
-        case 101:
-            return jjMoveStringLiteralDfa3_0(active0, 0x300000000000000L,
-                    active1, 0x400000000L);
-        case 70:
-        case 102:
-            if ((active0 & 0x4000000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(2, 62, 525);
-            }
-            break;
-        case 72:
-        case 104:
-            return jjMoveStringLiteralDfa3_0(active0, 0x2000000000000000L,
-                    active1, 0x800000000L);
-        case 73:
-        case 105:
-            return jjMoveStringLiteralDfa3_0(active0, 0x20000000000000L,
-                    active1, 0L);
-        case 76:
-        case 108:
-            return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000000L,
-                    active1, 0L);
-        case 77:
-        case 109:
-            return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200000002L);
-        case 78:
-        case 110:
-            return jjMoveStringLiteralDfa3_0(active0, 0x40000000000000L,
-                    active1, 0L);
-        case 79:
-        case 111:
-            return jjMoveStringLiteralDfa3_0(active0, 0x810000000000000L,
-                    active1, 0x2000000008L);
-        case 82:
-        case 114:
-            return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000L,
-                    active1, 0L);
-        case 85:
-        case 117:
-            return jjMoveStringLiteralDfa3_0(active0, 0x80000000000000L,
-                    active1, 0x4L);
-        case 88:
-        case 120:
-            return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(1, active0, active1);
-    }
-
-    private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(1, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(2, active0, active1);
-            return 3;
-        }
-        switch (curChar) {
-        case 45:
-            if ((active0 & 0x100L) != 0L) {
-                return jjStopAtPos(3, 8);
-            }
-            break;
-        case 65:
-        case 97:
-            return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800000000L);
-        case 66:
-        case 98:
-            return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L,
-                    active1, 0L);
-        case 67:
-        case 99:
-            return jjMoveStringLiteralDfa4_0(active0, 0x1040000000000000L,
-                    active1, 0L);
-        case 68:
-        case 100:
-            return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x400000000L);
-        case 71:
-        case 103:
-            return jjMoveStringLiteralDfa4_0(active0, 0L, active1,
-                    0x1000000000L);
-        case 73:
-        case 105:
-            return jjMoveStringLiteralDfa4_0(active0, 0x2000000000000000L,
-                    active1, 0L);
-        case 77:
-        case 109:
-            if ((active0 & 0x10000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(3, 52, 522);
-            }
-            break;
-        case 78:
-        case 110:
-            return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L,
-                    active1, 0x2000000008L);
-        case 79:
-        case 111:
-            return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L,
-                    active1, 0x2L);
-        case 80:
-        case 112:
-            return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000004L);
-        case 82:
-        case 114:
-            if ((active0 & 0x800000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(3, 59, 525);
-            }
-            return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L,
-                    active1, 0L);
-        case 83:
-        case 115:
-            return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000000L,
-                    active1, 0L);
-        case 84:
-        case 116:
-            return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L,
-                    active1, 0x1L);
-        case 88:
-        case 120:
-            return jjMoveStringLiteralDfa4_0(active0, 0x20000000000000L,
-                    active1, 0L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(2, active0, active1);
-    }
-
-    private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(2, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(3, active0, active1);
-            return 4;
-        }
-        switch (curChar) {
-        case 67:
-        case 99:
-            return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L,
-                    active1, 0L);
-        case 69:
-        case 101:
-            if ((active0 & 0x8000000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(4, 63, 525);
-            } else if ((active1 & 0x1000000000L) != 0L) {
-                return jjStartNfaWithStates_0(4, 100, 525);
+  /** Debug output. */
+  public  java.io.PrintStream debugStream = System.out;
+  /** Set debug output. */
+  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1)
+{
+   switch (pos)
+   {
+      case 0:
+         if ((active0 & 0xffe0000000000000L) != 0L || (active1 & 0x3e0000000fL) != 0L)
+            return 162;
+         if ((active0 & 0xe000000000000L) != 0L || (active1 & 0x20L) != 0L)
+         {
+            jjmatchedKind = 72;
+            return 522;
+         }
+         if ((active0 & 0x80000000L) != 0L)
+            return 523;
+         if ((active0 & 0x10000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            return 29;
+         }
+         if ((active0 & 0x4000L) != 0L)
+            return 75;
+         if ((active0 & 0x2000010L) != 0L)
+            return 216;
+         if ((active0 & 0x80200L) != 0L)
+            return 38;
+         if ((active0 & 0x2000000000L) != 0L)
+            return 524;
+         return -1;
+      case 1:
+         if ((active1 & 0x2L) != 0L)
+            return 174;
+         if ((active0 & 0xffe0000000000000L) != 0L || (active1 & 0x3e0000000dL) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 1;
+            return 525;
+         }
+         if ((active0 & 0x14000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 1;
+            return 522;
+         }
+         if ((active0 & 0xa000000000000L) != 0L || (active1 & 0x20L) != 0L)
+            return 522;
+         if ((active0 & 0x10L) != 0L)
+            return 221;
+         return -1;
+      case 2:
+         if ((active0 & 0xbfe0000000000000L) != 0L || (active1 & 0x3e0000000dL) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 2;
+            return 525;
+         }
+         if ((active0 & 0x4000000000000000L) != 0L)
+            return 525;
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 2;
+            return 173;
+         }
+         if ((active0 & 0x14000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 2;
+            return 522;
+         }
+         return -1;
+      case 3:
+         if ((active0 & 0xb7e0000000000000L) != 0L || (active1 & 0x3e0000000dL) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 3;
+            return 525;
+         }
+         if ((active0 & 0x800000000000000L) != 0L)
+            return 525;
+         if ((active0 & 0x4000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 3;
+            return 522;
+         }
+         if ((active0 & 0x10000000000000L) != 0L)
+            return 522;
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 3;
+            return 172;
+         }
+         return -1;
+      case 4:
+         if ((active0 & 0x9400000000000000L) != 0L || (active1 & 0x1000000000L) != 0L)
+            return 525;
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 4;
+            return 171;
+         }
+         if ((active0 & 0x4000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 4;
+            return 522;
+         }
+         if ((active0 & 0x23e0000000000000L) != 0L || (active1 & 0x2e0000000dL) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 4;
+            return 525;
+         }
+         return -1;
+      case 5:
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 5;
+            return 170;
+         }
+         if ((active0 & 0x4000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 5;
+            return 522;
+         }
+         if ((active0 & 0x2220000000000000L) != 0L || (active1 & 0x400000000L) != 0L)
+            return 525;
+         if ((active0 & 0x1c0000000000000L) != 0L || (active1 & 0x2a0000000dL) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 5;
+            return 525;
+         }
+         return -1;
+      case 6:
+         if ((active0 & 0x100000000000000L) != 0L || (active1 & 0x200000001L) != 0L)
+            return 525;
+         if ((active0 & 0x4000000000000L) != 0L)
+            return 522;
+         if ((active0 & 0xc0000000000000L) != 0L || (active1 & 0x280000000eL) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 6;
+            return 525;
+         }
+         return -1;
+      case 7:
+         if ((active0 & 0x40000000000000L) != 0L || (active1 & 0x800000008L) != 0L)
+            return 525;
+         if ((active0 & 0x80000000000000L) != 0L || (active1 & 0x2000000006L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 7;
+            return 525;
+         }
+         return -1;
+      case 8:
+         if ((active1 & 0x2000000002L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 8;
+            return 525;
+         }
+         if ((active0 & 0x80000000000000L) != 0L || (active1 & 0x4L) != 0L)
+            return 525;
+         return -1;
+      case 9:
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 9;
+            return 525;
+         }
+         if ((active1 & 0x2000000000L) != 0L)
+            return 525;
+         return -1;
+      case 10:
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 10;
+            return 525;
+         }
+         return -1;
+      case 11:
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 11;
+            return 525;
+         }
+         return -1;
+      case 12:
+         if ((active1 & 0x2L) != 0L)
+         {
+            jjmatchedKind = 103;
+            jjmatchedPos = 12;
+            return 525;
+         }
+         return -1;
+      default :
+         return -1;
+   }
+}
+private final int jjStartNfa_0(int pos, long active0, long active1)
+{
+   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1);
+}
+private int jjStopAtPos(int pos, int kind)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   return pos + 1;
+}
+private int jjMoveStringLiteralDfa0_0()
+{
+   switch(curChar)
+   {
+      case 33:
+         return jjMoveStringLiteralDfa1_0(0x2000000000L, 0x0L);
+      case 36:
+         return jjMoveStringLiteralDfa1_0(0x4000L, 0x0L);
+      case 37:
+         return jjStopAtPos(0, 29);
+      case 38:
+         jjmatchedKind = 30;
+         return jjMoveStringLiteralDfa1_0(0x1000000000L, 0x0L);
+      case 40:
+         return jjStopAtPos(0, 32);
+      case 41:
+         return jjStopAtPos(0, 33);
+      case 42:
+         jjmatchedKind = 28;
+         return jjMoveStringLiteralDfa1_0(0x8000L, 0x0L);
+      case 43:
+         return jjStopAtPos(0, 18);
+      case 44:
+         return jjStopAtPos(0, 20);
+      case 45:
+         jjmatchedKind = 19;
+         return jjMoveStringLiteralDfa1_0(0x200L, 0x0L);
+      case 46:
+         return jjStartNfaWithStates_0(0, 31, 523);
+      case 47:
+         jjmatchedKind = 25;
+         return jjMoveStringLiteralDfa1_0(0x10L, 0x0L);
+      case 58:
+         return jjStopAtPos(0, 38);
+      case 59:
+         return jjStopAtPos(0, 21);
+      case 60:
+         jjmatchedKind = 24;
+         return jjMoveStringLiteralDfa1_0(0x100L, 0x0L);
+      case 61:
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_0(0x400000000L, 0x0L);
+      case 62:
+         return jjStopAtPos(0, 22);
+      case 64:
+         return jjMoveStringLiteralDfa1_0(0xffe0000000000000L, 0x3e0000000fL);
+      case 91:
+         return jjStopAtPos(0, 26);
+      case 93:
+         return jjStopAtPos(0, 27);
+      case 94:
+         return jjMoveStringLiteralDfa1_0(0x2000L, 0x0L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa1_0(0x10000000000000L, 0x0L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa1_0(0x8000000000000L, 0x20L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa1_0(0x6000000000000L, 0x0L);
+      case 123:
+         return jjStopAtPos(0, 10);
+      case 124:
+         return jjMoveStringLiteralDfa1_0(0x800001000L, 0x0L);
+      case 125:
+         return jjStopAtPos(0, 11);
+      case 126:
+         jjmatchedKind = 23;
+         return jjMoveStringLiteralDfa1_0(0x10000L, 0x0L);
+      default :
+         return jjMoveNfa_0(24, 0);
+   }
+}
+private int jjMoveStringLiteralDfa1_0(long active0, long active1)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(0, active0, active1);
+      return 1;
+   }
+   switch(curChar)
+   {
+      case 33:
+         return jjMoveStringLiteralDfa2_0(active0, 0x100L, active1, 0L);
+      case 38:
+         if ((active0 & 0x1000000000L) != 0L)
+            return jjStopAtPos(1, 36);
+         break;
+      case 42:
+         if ((active0 & 0x10L) != 0L)
+            return jjStartNfaWithStates_0(1, 4, 221);
+         break;
+      case 45:
+         return jjMoveStringLiteralDfa2_0(active0, 0x200L, active1, 0x2L);
+      case 61:
+         if ((active0 & 0x1000L) != 0L)
+            return jjStopAtPos(1, 12);
+         else if ((active0 & 0x2000L) != 0L)
+            return jjStopAtPos(1, 13);
+         else if ((active0 & 0x4000L) != 0L)
+            return jjStopAtPos(1, 14);
+         else if ((active0 & 0x8000L) != 0L)
+            return jjStopAtPos(1, 15);
+         else if ((active0 & 0x10000L) != 0L)
+            return jjStopAtPos(1, 16);
+         else if ((active0 & 0x400000000L) != 0L)
+            return jjStopAtPos(1, 34);
+         else if ((active0 & 0x2000000000L) != 0L)
+            return jjStopAtPos(1, 37);
+         break;
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800000008L);
+      case 68:
+      case 100:
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000000L, active1, 0L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa2_0(active0, 0x9000000000000000L, active1, 0x1L);
+      case 70:
+      case 102:
+         if ((active1 & 0x20L) != 0L)
+            return jjStartNfaWithStates_0(1, 69, 522);
+         return jjMoveStringLiteralDfa2_0(active0, 0x880000000000000L, active1, 0x2000000000L);
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L, active1, 0L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4040000000000000L, active1, 0x200000000L);
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa2_0(active0, 0x20000000000000L, active1, 0x400000000L);
+      case 78:
+      case 110:
+         if ((active0 & 0x8000000000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 51, 522);
+         break;
+      case 79:
+      case 111:
+         if ((active0 & 0x2000000000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 49, 522);
+         break;
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x1000000000L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa2_0(active0, 0x110000000000000L, active1, 0L);
+      case 83:
+      case 115:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4L);
+      case 87:
+      case 119:
+         return jjMoveStringLiteralDfa2_0(active0, 0x2400000000000000L, active1, 0L);
+      case 124:
+         if ((active0 & 0x800000000L) != 0L)
+            return jjStopAtPos(1, 35);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(0, active0, active1);
+}
+private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(0, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(1, active0, active1);
+      return 2;
+   }
+   switch(curChar)
+   {
+      case 45:
+         return jjMoveStringLiteralDfa3_0(active0, 0x100L, active1, 0L);
+      case 62:
+         if ((active0 & 0x200L) != 0L)
+            return jjStopAtPos(2, 9);
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa3_0(active0, 0x1400000000000000L, active1, 0x1000000000L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa3_0(active0, 0x300000000000000L, active1, 0x400000000L);
+      case 70:
+      case 102:
+         if ((active0 & 0x4000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 62, 525);
+         break;
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa3_0(active0, 0x2000000000000000L, active1, 0x800000000L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa3_0(active0, 0x20000000000000L, active1, 0L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000000L, active1, 0L);
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200000002L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa3_0(active0, 0x40000000000000L, active1, 0L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa3_0(active0, 0x810000000000000L, active1, 0x2000000008L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000L, active1, 0L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000000L, active1, 0x4L);
+      case 88:
+      case 120:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(1, active0, active1);
+}
+private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(1, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(2, active0, active1);
+      return 3;
+   }
+   switch(curChar)
+   {
+      case 45:
+         if ((active0 & 0x100L) != 0L)
+            return jjStopAtPos(3, 8);
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800000000L);
+      case 66:
+      case 98:
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L, active1, 0L);
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa4_0(active0, 0x1040000000000000L, active1, 0L);
+      case 68:
+      case 100:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x400000000L);
+      case 71:
+      case 103:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1000000000L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000000000L, active1, 0L);
+      case 77:
+      case 109:
+         if ((active0 & 0x10000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 52, 522);
+         break;
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0x2000000008L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L, active1, 0x2L);
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000004L);
+      case 82:
+      case 114:
+         if ((active0 & 0x800000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 59, 525);
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L, active1, 0L);
+      case 83:
+      case 115:
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000000L, active1, 0L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0x1L);
+      case 88:
+      case 120:
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000000L, active1, 0L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(2, active0, active1);
+}
+private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(2, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(3, active0, active1);
+      return 4;
+   }
+   switch(curChar)
+   {
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0L);
+      case 69:
+      case 101:
+         if ((active0 & 0x8000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 63, 525);
+         else if ((active1 & 0x1000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 100, 525);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1L);
+      case 72:
+      case 104:
+         if ((active0 & 0x1000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 60, 525);
+         break;
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000000L, active1, 0x400000000L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa5_0(active0, 0x2040000000000000L, active1, 0L);
+      case 78:
+      case 110:
+         if ((active0 & 0x400000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 58, 525);
+         break;
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x200000000L);
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x800000000L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2000000008L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa5_0(active0, 0x304000000000000L, active1, 0L);
+      case 90:
+      case 122:
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(3, active0, active1);
+}
+private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(3, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(4, active0, active1);
+      return 5;
+   }
+   switch(curChar)
+   {
+      case 45:
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x2000000002L);
+      case 65:
+      case 97:
+         if ((active1 & 0x400000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 98, 525);
+         break;
+      case 69:
+      case 101:
+         if ((active0 & 0x2000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 61, 525);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x8L);
+      case 71:
+      case 103:
+         if ((active0 & 0x200000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 57, 525);
+         return jjMoveStringLiteralDfa6_0(active0, 0x4000000000000L, active1, 0L);
+      case 78:
+      case 110:
+         if ((active0 & 0x20000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 53, 525);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x1L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x4L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa6_0(active0, 0x100000000000000L, active1, 0x200000000L);
+      case 83:
+      case 115:
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000000L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000000L, active1, 0L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa6_0(active0, 0x40000000000000L, active1, 0L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(4, active0, active1);
+}
+private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(4, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(5, active0, active1);
+      return 6;
+   }
+   switch(curChar)
+   {
+      case 68:
+      case 100:
+         if ((active1 & 0x1L) != 0L)
+            return jjStartNfaWithStates_0(6, 64, 525);
+         return jjMoveStringLiteralDfa7_0(active0, 0x40000000000000L, active1, 0x2L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800000000L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000000000L);
+      case 72:
+      case 104:
+         if ((active0 & 0x4000000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 50, 522);
+         break;
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa7_0(active0, 0x80000000000000L, active1, 0L);
+      case 78:
+      case 110:
+         if ((active0 & 0x100000000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 56, 525);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x8L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x4L);
+      case 84:
+      case 116:
+         if ((active1 & 0x200000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 97, 525);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(5, active0, active1);
+}
+private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(5, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(6, active0, active1);
+      return 7;
+   }
+   switch(curChar)
+   {
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x2000000000L);
+      case 69:
+      case 101:
+         if ((active0 & 0x40000000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 54, 525);
+         break;
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa8_0(active0, 0x80000000000000L, active1, 0x2L);
+      case 84:
+      case 116:
+         if ((active1 & 0x8L) != 0L)
+            return jjStartNfaWithStates_0(7, 67, 525);
+         else if ((active1 & 0x800000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 99, 525);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x4L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(6, active0, active1);
+}
+private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(6, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(7, active0, active1);
+      return 8;
+   }
+   switch(curChar)
+   {
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x2000000002L);
+      case 78:
+      case 110:
+         if ((active0 & 0x80000000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 55, 525);
+         break;
+      case 83:
+      case 115:
+         if ((active1 & 0x4L) != 0L)
+            return jjStartNfaWithStates_0(8, 66, 525);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(7, active0, active1);
+}
+private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(7, old0, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(8, 0L, active1);
+      return 9;
+   }
+   switch(curChar)
+   {
+      case 69:
+      case 101:
+         if ((active1 & 0x2000000000L) != 0L)
+            return jjStartNfaWithStates_0(9, 101, 525);
+         break;
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa10_0(active1, 0x2L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(8, 0L, active1);
+}
+private int jjMoveStringLiteralDfa10_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjStartNfa_0(8, 0L, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(9, 0L, active1);
+      return 10;
+   }
+   switch(curChar)
+   {
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa11_0(active1, 0x2L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(9, 0L, active1);
+}
+private int jjMoveStringLiteralDfa11_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjStartNfa_0(9, 0L, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(10, 0L, active1);
+      return 11;
+   }
+   switch(curChar)
+   {
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa12_0(active1, 0x2L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(10, 0L, active1);
+}
+private int jjMoveStringLiteralDfa12_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjStartNfa_0(10, 0L, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(11, 0L, active1);
+      return 12;
+   }
+   switch(curChar)
+   {
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa13_0(active1, 0x2L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(11, 0L, active1);
+}
+private int jjMoveStringLiteralDfa13_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjStartNfa_0(11, 0L, old1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(12, 0L, active1);
+      return 13;
+   }
+   switch(curChar)
+   {
+      case 84:
+      case 116:
+         if ((active1 & 0x2L) != 0L)
+            return jjStartNfaWithStates_0(13, 65, 525);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(12, 0L, active1);
+}
+private int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) { return pos + 1; }
+   return jjMoveNfa_0(state, pos + 1);
+}
+static final long[] jjbitVec0 = {
+   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private int jjMoveNfa_0(int startState, int curPos)
+{
+   int startsAt = 0;
+   jjnewStateCnt = 522;
+   int i = 1;
+   jjstateSet[0] = startState;
+   int kind = 0x7fffffff;
+   for (;;)
+   {
+      if (++jjround == 0x7fffffff)
+         ReInitRounds();
+      if (curChar < 64)
+      {
+         long l = 1L << curChar;
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 524:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(256, 265);
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(248, 255);
+                  break;
+               case 162:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 108;
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 213;
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 201;
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 185;
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 174;
+                  break;
+               case 29:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  else if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(236, 237);
+                  else if (curChar == 40)
+                  {
+                     if (kind > 118)
+                        kind = 118;
+                  }
+                  if ((0x3ff200000000000L & l) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  break;
+               case 171:
+                  if ((0x3ff200000000000L & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 170;
+                  break;
+               case 523:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(4, 8);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(327, 330);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(324, 326);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(322, 323);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(319, 321);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(314, 318);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(310, 313);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(306, 309);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(303, 305);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(299, 302);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(295, 298);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(292, 294);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(289, 291);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(286, 288);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(283, 285);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(280, 282);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(277, 279);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(274, 276);
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(272, 273);
+                  if ((0x3ff000000000000L & l) != 0L)
+                  {
+                     if (kind > 73)
+                        kind = 73;
+                     jjCheckNAdd(271);
+                  }
+                  break;
+               case 525:
+               case 109:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 216:
+                  if (curChar == 42)
+                     jjstateSet[jjnewStateCnt++] = 221;
+                  else if (curChar == 47)
+                  {
+                     if (kind > 2)
+                        kind = 2;
+                     jjCheckNAddStates(9, 11);
+                  }
+                  break;
+               case 173:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 24:
+                  if ((0x3ff000000000000L & l) != 0L)
+                  {
+                     if (kind > 73)
+                        kind = 73;
+                     jjCheckNAddStates(12, 93);
+                  }
+                  else if ((0x100003600L & l) != 0L)
+                  {
+                     if (kind > 1)
+                        kind = 1;
+                     jjCheckNAdd(0);
+                  }
+                  else if (curChar == 46)
+                     jjCheckNAddStates(94, 113);
+                  else if (curChar == 45)
+                     jjAddStates(114, 115);
+                  else if (curChar == 33)
+                     jjCheckNAddStates(116, 119);
+                  else if (curChar == 47)
+                     jjAddStates(120, 121);
+                  else if (curChar == 35)
+                     jjCheckNAddTwoStates(96, 97);
+                  else if (curChar == 36)
+                     jjCheckNAddStates(122, 125);
+                  else if (curChar == 39)
+                     jjCheckNAddStates(126, 129);
+                  else if (curChar == 34)
+                     jjCheckNAddStates(130, 133);
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 38;
+                  else if (curChar == 35)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
+               case 172:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 170:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 75:
+                  if (curChar == 45)
+                     jjCheckNAdd(76);
+                  break;
+               case 522:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  else if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(236, 237);
+                  else if (curChar == 40)
+                  {
+                     if (kind > 118)
+                        kind = 118;
+                  }
+                  if ((0x3ff200000000000L & l) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  break;
+               case 0:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 1)
+                     kind = 1;
+                  jjCheckNAdd(0);
+                  break;
+               case 2:
+                  if (curChar == 36)
+                     jjCheckNAddStates(134, 137);
+                  break;
+               case 3:
+                  if (curChar == 45)
+                     jjCheckNAdd(4);
+                  break;
+               case 5:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(138, 140);
+                  break;
+               case 8:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(138, 140);
+                  break;
+               case 9:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(141, 145);
+                  break;
+               case 10:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(138, 140);
+                  break;
+               case 11:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(146, 153);
+                  break;
+               case 12:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(154, 157);
+                  break;
+               case 13:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(158, 162);
+                  break;
+               case 14:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(163, 168);
+                  break;
+               case 15:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(169, 175);
+                  break;
+               case 18:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(176, 180);
+                  break;
+               case 19:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(181, 188);
+                  break;
+               case 20:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(189, 192);
+                  break;
+               case 21:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(193, 197);
+                  break;
+               case 22:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(198, 203);
+                  break;
+               case 23:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(204, 210);
+                  break;
+               case 36:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 35;
+                  break;
+               case 39:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 38;
+                  break;
+               case 40:
+                  if (curChar == 34)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 41:
+                  if ((0xfffffffb00000200L & l) != 0L)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 42:
+                  if (curChar == 34 && kind > 71)
+                     kind = 71;
+                  break;
+               case 44:
+                  if (curChar == 12)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 46:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 47:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(211, 216);
+                  break;
+               case 48:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 49:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(217, 225);
+                  break;
+               case 50:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(226, 230);
+                  break;
+               case 51:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(231, 236);
+                  break;
+               case 52:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(237, 243);
+                  break;
+               case 53:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(244, 251);
+                  break;
+               case 54:
+                  if (curChar == 13)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 55:
+                  if (curChar == 10)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 56:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 55;
+                  break;
+               case 57:
+                  if (curChar == 39)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 58:
+                  if ((0xffffff7f00000200L & l) != 0L)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 59:
+                  if (curChar == 39 && kind > 71)
+                     kind = 71;
+                  break;
+               case 61:
+                  if (curChar == 12)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 63:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 64:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(252, 257);
+                  break;
+               case 65:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 66:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(258, 266);
+                  break;
+               case 67:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(267, 271);
+                  break;
+               case 68:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(272, 277);
+                  break;
+               case 69:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(278, 284);
+                  break;
+               case 70:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(285, 292);
+                  break;
+               case 71:
+                  if (curChar == 13)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 72:
+                  if (curChar == 10)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 73:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 72;
+                  break;
+               case 74:
+                  if (curChar == 36)
+                     jjCheckNAddStates(122, 125);
+                  break;
+               case 77:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddTwoStates(77, 78);
+                  break;
+               case 79:
+                  if ((0xffffffff00000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddTwoStates(77, 78);
+                  break;
+               case 80:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(293, 296);
+                  break;
+               case 81:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddTwoStates(77, 78);
+                  break;
+               case 82:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(297, 303);
+                  break;
+               case 83:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(304, 306);
+                  break;
+               case 84:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(307, 310);
+                  break;
+               case 85:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(311, 315);
+                  break;
+               case 86:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(316, 321);
+                  break;
+               case 89:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(322, 325);
+                  break;
+               case 90:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(326, 332);
+                  break;
+               case 91:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(333, 335);
+                  break;
+               case 92:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(336, 339);
+                  break;
+               case 93:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(340, 344);
+                  break;
+               case 94:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(345, 350);
+                  break;
+               case 95:
+                  if (curChar == 35)
+                     jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 96:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 98:
+                  if ((0xffffffff00000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 99:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(351, 354);
+                  break;
+               case 100:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 101:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(355, 361);
+                  break;
+               case 102:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(362, 364);
+                  break;
+               case 103:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(365, 368);
+                  break;
+               case 104:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(369, 373);
+                  break;
+               case 105:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(374, 379);
+                  break;
+               case 107:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 108;
+                  break;
+               case 111:
+                  if ((0xffffffff00000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 112:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(380, 383);
+                  break;
+               case 113:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 114:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(384, 390);
+                  break;
+               case 115:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(391, 393);
+                  break;
+               case 116:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(394, 397);
+                  break;
+               case 117:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(398, 402);
+                  break;
+               case 118:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(403, 408);
+                  break;
+               case 121:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(409, 412);
+                  break;
+               case 122:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(413, 419);
+                  break;
+               case 123:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(420, 422);
+                  break;
+               case 124:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(423, 426);
+                  break;
+               case 125:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(427, 431);
+                  break;
+               case 126:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(432, 437);
+                  break;
+               case 128:
+                  if ((0x100003600L & l) != 0L)
+                     jjAddStates(438, 439);
+                  break;
+               case 129:
+                  if (curChar == 40 && kind > 115)
+                     kind = 115;
+                  break;
+               case 136:
+                  if ((0x100003600L & l) != 0L)
+                     jjAddStates(440, 441);
+                  break;
+               case 137:
+                  if (curChar == 40 && kind > 116)
+                     kind = 116;
+                  break;
+               case 144:
+                  if ((0x100003600L & l) != 0L)
+                     jjAddStates(442, 443);
+                  break;
+               case 145:
+                  if (curChar == 40 && kind > 117)
+                     kind = 117;
+                  break;
+               case 175:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 174;
+                  break;
+               case 184:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 183;
+                  break;
+               case 186:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 185;
+                  break;
+               case 195:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 194;
+                  break;
+               case 202:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 201;
+                  break;
+               case 211:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 210;
+                  break;
+               case 214:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 213;
+                  break;
+               case 215:
+                  if (curChar == 47)
+                     jjAddStates(120, 121);
+                  break;
+               case 217:
+                  if ((0xffffffffffffdbffL & l) == 0L)
+                     break;
+                  if (kind > 2)
+                     kind = 2;
+                  jjCheckNAddStates(9, 11);
+                  break;
+               case 218:
+                  if ((0x2400L & l) != 0L && kind > 2)
+                     kind = 2;
+                  break;
+               case 219:
+                  if (curChar == 10 && kind > 2)
+                     kind = 2;
+                  break;
+               case 220:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 219;
+                  break;
+               case 221:
+                  if (curChar == 42)
+                     jjstateSet[jjnewStateCnt++] = 222;
+                  break;
+               case 222:
+                  if ((0xffff7fffffffffffL & l) != 0L && kind > 3)
+                     kind = 3;
+                  break;
+               case 223:
+                  if (curChar == 42)
+                     jjstateSet[jjnewStateCnt++] = 221;
+                  break;
+               case 225:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 227:
+                  if ((0xffffffff00000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 228:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(444, 447);
+                  break;
+               case 229:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 230:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(448, 454);
+                  break;
+               case 231:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(455, 457);
+                  break;
+               case 232:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(458, 461);
+                  break;
+               case 233:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(462, 466);
+                  break;
+               case 234:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(467, 472);
+                  break;
+               case 235:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 236:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(236, 237);
+                  break;
+               case 237:
+                  if (curChar == 40 && kind > 118)
+                     kind = 118;
+                  break;
+               case 239:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 240:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(473, 477);
+                  break;
+               case 241:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 242:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(478, 485);
+                  break;
+               case 243:
+               case 457:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(486, 489);
+                  break;
+               case 244:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(490, 494);
+                  break;
+               case 245:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(495, 500);
+                  break;
+               case 246:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(501, 507);
+                  break;
+               case 247:
+                  if (curChar == 33)
+                     jjCheckNAddStates(116, 119);
+                  break;
+               case 248:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(248, 255);
+                  break;
+               case 256:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(256, 265);
+                  break;
+               case 266:
+                  if (curChar == 45)
+                     jjAddStates(114, 115);
+                  break;
+               case 270:
+                  if (curChar == 46)
+                     jjCheckNAddStates(94, 113);
+                  break;
+               case 271:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 73)
+                     kind = 73;
+                  jjCheckNAdd(271);
+                  break;
+               case 272:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(272, 273);
+                  break;
+               case 273:
+                  if (curChar == 37 && kind > 77)
+                     kind = 77;
+                  break;
+               case 274:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(274, 276);
+                  break;
+               case 277:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(277, 279);
+                  break;
+               case 280:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(280, 282);
+                  break;
+               case 283:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(283, 285);
+                  break;
+               case 286:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(286, 288);
+                  break;
+               case 289:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(289, 291);
+                  break;
+               case 292:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(292, 294);
+                  break;
+               case 295:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(295, 298);
+                  break;
+               case 299:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(299, 302);
+                  break;
+               case 303:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(303, 305);
+                  break;
+               case 306:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(306, 309);
+                  break;
+               case 310:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(310, 313);
+                  break;
+               case 314:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(314, 318);
+                  break;
+               case 319:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(319, 321);
+                  break;
+               case 322:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(322, 323);
+                  break;
+               case 324:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(324, 326);
+                  break;
+               case 327:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(327, 330);
+                  break;
+               case 331:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(4, 8);
+                  break;
+               case 332:
+                  if (curChar == 45)
+                     jjCheckNAdd(333);
+                  break;
+               case 334:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddTwoStates(334, 335);
+                  break;
+               case 336:
+                  if ((0xffffffff00000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddTwoStates(334, 335);
+                  break;
+               case 337:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(508, 511);
+                  break;
+               case 338:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddTwoStates(334, 335);
+                  break;
+               case 339:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(512, 518);
+                  break;
+               case 340:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(519, 521);
+                  break;
+               case 341:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(522, 525);
+                  break;
+               case 342:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(526, 530);
+                  break;
+               case 343:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(531, 536);
+                  break;
+               case 346:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(537, 540);
+                  break;
+               case 347:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(541, 547);
+                  break;
+               case 348:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(548, 550);
+                  break;
+               case 349:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(551, 554);
+                  break;
+               case 350:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(555, 559);
+                  break;
+               case 351:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(560, 565);
+                  break;
+               case 353:
+                  if (curChar == 40)
+                     jjCheckNAddStates(566, 571);
+                  break;
+               case 354:
+                  if ((0xfffffc7a00000000L & l) != 0L)
+                     jjCheckNAddStates(572, 575);
+                  break;
+               case 355:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddTwoStates(355, 356);
+                  break;
+               case 356:
+                  if (curChar == 41 && kind > 75)
+                     kind = 75;
+                  break;
+               case 358:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(572, 575);
+                  break;
+               case 359:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(576, 580);
+                  break;
+               case 360:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(572, 575);
+                  break;
+               case 361:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(581, 588);
+                  break;
+               case 362:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(589, 592);
+                  break;
+               case 363:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(593, 597);
+                  break;
+               case 364:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(598, 603);
+                  break;
+               case 365:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(604, 610);
+                  break;
+               case 366:
+                  if (curChar == 39)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 367:
+                  if ((0xffffff7f00000200L & l) != 0L)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 368:
+                  if (curChar == 39)
+                     jjCheckNAddTwoStates(355, 356);
+                  break;
+               case 370:
+                  if (curChar == 12)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 372:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 373:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(615, 620);
+                  break;
+               case 374:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 375:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(621, 629);
+                  break;
+               case 376:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(630, 634);
+                  break;
+               case 377:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(635, 640);
+                  break;
+               case 378:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(641, 647);
+                  break;
+               case 379:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(648, 655);
+                  break;
+               case 380:
+                  if (curChar == 13)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 381:
+                  if (curChar == 10)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 382:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 381;
+                  break;
+               case 383:
+                  if (curChar == 34)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 384:
+                  if ((0xfffffffb00000200L & l) != 0L)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 385:
+                  if (curChar == 34)
+                     jjCheckNAddTwoStates(355, 356);
+                  break;
+               case 387:
+                  if (curChar == 12)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 389:
+                  if ((0xffffffff00000000L & l) != 0L)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 390:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(660, 665);
+                  break;
+               case 391:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 392:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(666, 674);
+                  break;
+               case 393:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(675, 679);
+                  break;
+               case 394:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(680, 685);
+                  break;
+               case 395:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(686, 692);
+                  break;
+               case 396:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(693, 700);
+                  break;
+               case 397:
+                  if (curChar == 13)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 398:
+                  if (curChar == 10)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 399:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 398;
+                  break;
+               case 400:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(701, 707);
+                  break;
+               case 403:
+                  if (curChar == 43)
+                     jjAddStates(708, 709);
+                  break;
+               case 404:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 405;
+                  break;
+               case 405:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(710, 713);
+                  break;
+               case 406:
+                  if (curChar == 63 && kind > 114)
+                     kind = 114;
+                  break;
+               case 407:
+               case 422:
+               case 426:
+               case 429:
+               case 432:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAdd(406);
+                  break;
+               case 408:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddTwoStates(406, 407);
+                  break;
+               case 409:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(714, 716);
+                  break;
+               case 410:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjAddStates(717, 722);
+                  break;
+               case 411:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 412;
+                  break;
+               case 412:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 413;
+                  break;
+               case 413:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAdd(414);
+                  break;
+               case 414:
+                  if ((0x3ff000000000000L & l) != 0L && kind > 114)
+                     kind = 114;
+                  break;
+               case 415:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 416;
+                  break;
+               case 416:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 417;
+                  break;
+               case 417:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 418;
+                  break;
+               case 418:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAdd(406);
+                  break;
+               case 419:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 420;
+                  break;
+               case 420:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 421;
+                  break;
+               case 421:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 422;
+                  break;
+               case 423:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 424;
+                  break;
+               case 424:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 425;
+                  break;
+               case 425:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddTwoStates(406, 426);
+                  break;
+               case 427:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 428;
+                  break;
+               case 428:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(723, 725);
+                  break;
+               case 430:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddTwoStates(406, 429);
+                  break;
+               case 431:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(726, 729);
+                  break;
+               case 433:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddTwoStates(406, 432);
+                  break;
+               case 434:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(730, 732);
+                  break;
+               case 435:
+                  if (curChar == 43)
+                     jjstateSet[jjnewStateCnt++] = 436;
+                  break;
+               case 436:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(437, 443);
+                  break;
+               case 437:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 438;
+                  break;
+               case 438:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 439;
+                  break;
+               case 439:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(733, 736);
+                  break;
+               case 440:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAdd(414);
+                  break;
+               case 441:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddTwoStates(414, 440);
+                  break;
+               case 442:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(737, 739);
+                  break;
+               case 443:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(740, 744);
+                  break;
+               case 444:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAdd(437);
+                  break;
+               case 445:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(444, 437);
+                  break;
+               case 446:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(745, 747);
+                  break;
+               case 447:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(748, 751);
+                  break;
+               case 449:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(752, 755);
+                  break;
+               case 450:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(756, 762);
+                  break;
+               case 451:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(763, 765);
+                  break;
+               case 452:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(766, 769);
+                  break;
+               case 453:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(770, 774);
+                  break;
+               case 454:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(775, 780);
+                  break;
+               case 455:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(781, 785);
+                  break;
+               case 456:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(786, 793);
+                  break;
+               case 458:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(794, 798);
+                  break;
+               case 459:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(799, 804);
+                  break;
+               case 460:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(805, 811);
+                  break;
+               case 461:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 73)
+                     kind = 73;
+                  jjCheckNAddStates(12, 93);
+                  break;
+               case 462:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 73)
+                     kind = 73;
+                  jjCheckNAdd(462);
+                  break;
+               case 463:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(463, 464);
+                  break;
+               case 464:
+                  if (curChar == 46)
+                     jjCheckNAdd(271);
+                  break;
+               case 465:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(465, 273);
+                  break;
+               case 466:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(466, 467);
+                  break;
+               case 467:
+                  if (curChar == 46)
+                     jjCheckNAdd(272);
+                  break;
+               case 468:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(468, 276);
+                  break;
+               case 469:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(469, 470);
+                  break;
+               case 470:
+                  if (curChar == 46)
+                     jjCheckNAdd(274);
+                  break;
+               case 471:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(471, 279);
+                  break;
+               case 472:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(472, 473);
+                  break;
+               case 473:
+                  if (curChar == 46)
+                     jjCheckNAdd(277);
+                  break;
+               case 474:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(474, 282);
+                  break;
+               case 475:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(475, 476);
+                  break;
+               case 476:
+                  if (curChar == 46)
+                     jjCheckNAdd(280);
+                  break;
+               case 477:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(477, 285);
+                  break;
+               case 478:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(478, 479);
+                  break;
+               case 479:
+                  if (curChar == 46)
+                     jjCheckNAdd(283);
+                  break;
+               case 480:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(480, 288);
+                  break;
+               case 481:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(481, 482);
+                  break;
+               case 482:
+                  if (curChar == 46)
+                     jjCheckNAdd(286);
+                  break;
+               case 483:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(483, 291);
+                  break;
+               case 484:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(484, 485);
+                  break;
+               case 485:
+                  if (curChar == 46)
+                     jjCheckNAdd(289);
+                  break;
+               case 486:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(486, 294);
+                  break;
+               case 487:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(487, 488);
+                  break;
+               case 488:
+                  if (curChar == 46)
+                     jjCheckNAdd(292);
+                  break;
+               case 489:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(489, 298);
+                  break;
+               case 490:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(490, 491);
+                  break;
+               case 491:
+                  if (curChar == 46)
+                     jjCheckNAdd(295);
+                  break;
+               case 492:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(492, 302);
+                  break;
+               case 493:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(493, 494);
+                  break;
+               case 494:
+                  if (curChar == 46)
+                     jjCheckNAdd(299);
+                  break;
+               case 495:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(495, 305);
+                  break;
+               case 496:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(496, 497);
+                  break;
+               case 497:
+                  if (curChar == 46)
+                     jjCheckNAdd(303);
+                  break;
+               case 498:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(498, 309);
+                  break;
+               case 499:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(499, 500);
+                  break;
+               case 500:
+                  if (curChar == 46)
+                     jjCheckNAdd(306);
+                  break;
+               case 501:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(501, 313);
+                  break;
+               case 502:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(502, 503);
+                  break;
+               case 503:
+                  if (curChar == 46)
+                     jjCheckNAdd(310);
+                  break;
+               case 504:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(504, 318);
+                  break;
+               case 505:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(505, 506);
+                  break;
+               case 506:
+                  if (curChar == 46)
+                     jjCheckNAdd(314);
+                  break;
+               case 507:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(507, 321);
+                  break;
+               case 508:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(508, 509);
+                  break;
+               case 509:
+                  if (curChar == 46)
+                     jjCheckNAdd(319);
+                  break;
+               case 510:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(510, 323);
+                  break;
+               case 511:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(511, 512);
+                  break;
+               case 512:
+                  if (curChar == 46)
+                     jjCheckNAdd(322);
+                  break;
+               case 513:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(513, 326);
+                  break;
+               case 514:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(514, 515);
+                  break;
+               case 515:
+                  if (curChar == 46)
+                     jjCheckNAdd(324);
+                  break;
+               case 516:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(516, 330);
+                  break;
+               case 517:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(517, 518);
+                  break;
+               case 518:
+                  if (curChar == 46)
+                     jjCheckNAdd(327);
+                  break;
+               case 519:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(812, 816);
+                  break;
+               case 520:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(520, 521);
+                  break;
+               case 521:
+                  if (curChar == 46)
+                     jjCheckNAdd(331);
+                  break;
+               default : break;
             }
-            return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1L);
-        case 72:
-        case 104:
-            if ((active0 & 0x1000000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(4, 60, 525);
+         } while(i != startsAt);
+      }
+      else if (curChar < 128)
+      {
+         long l = 1L << (curChar & 077);
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 524:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 264;
+                  else if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 254;
+                  break;
+               case 162:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 121);
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 161;
+                  break;
+               case 29:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(227, 228);
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(239, 240);
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 28;
+                  break;
+               case 171:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 112);
+                  break;
+               case 525:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 112);
+                  break;
+               case 38:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 37;
+                  break;
+               case 173:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 112);
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 211;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 172;
+                  break;
+               case 24:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddStates(817, 822);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddStates(823, 826);
+                  else if (curChar == 64)
+                     jjAddStates(827, 831);
+                  if ((0x20000000200000L & l) != 0L)
+                     jjAddStates(832, 834);
+                  else if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 151;
+                  else if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 141;
+                  else if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 133;
+                  else if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 29;
+                  else if (curChar == 64)
+                     jjAddStates(835, 838);
+                  break;
+               case 172:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 112);
+                  if ((0x400000004000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 171;
+                  break;
+               case 170:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 112);
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 169;
+                  break;
+               case 174:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 103)
+                        kind = 103;
+                     jjCheckNAddTwoStates(109, 110);
+                  }
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 212;
+                  else if ((0x80000000800000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 200;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 184;
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 173;
+                  break;
+               case 75:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 76)
+                        kind = 76;
+                     jjCheckNAddTwoStates(77, 78);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(79, 89);
+                  break;
+               case 522:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(227, 228);
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddTwoStates(239, 240);
+                  break;
+               case 1:
+                  if (curChar == 123)
+                     jjstateSet[jjnewStateCnt++] = 2;
+                  break;
+               case 4:
+               case 5:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(138, 140);
+                  break;
+               case 6:
+                  if (curChar == 125 && kind > 39)
+                     kind = 39;
+                  break;
+               case 7:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(8, 9);
+                  break;
+               case 8:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(138, 140);
+                  break;
+               case 9:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(141, 145);
+                  break;
+               case 11:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(146, 153);
+                  break;
+               case 12:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(154, 157);
+                  break;
+               case 13:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(158, 162);
+                  break;
+               case 14:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(163, 168);
+                  break;
+               case 15:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(169, 175);
+                  break;
+               case 17:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(8, 18);
+                  break;
+               case 18:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(176, 180);
+                  break;
+               case 19:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(181, 188);
+                  break;
+               case 20:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(189, 192);
+                  break;
+               case 21:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(193, 197);
+                  break;
+               case 22:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(198, 203);
+                  break;
+               case 23:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(204, 210);
+                  break;
+               case 25:
+                  if ((0x4000000040000L & l) != 0L && kind > 68)
+                     kind = 68;
+                  break;
+               case 26:
+               case 31:
+                  if ((0x2000000020L & l) != 0L)
+                     jjCheckNAdd(25);
+                  break;
+               case 27:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 26;
+                  break;
+               case 28:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 27;
+                  break;
+               case 30:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 29;
+                  break;
+               case 32:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 31;
+                  break;
+               case 33:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 32;
+                  break;
+               case 34:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 33;
+                  break;
+               case 35:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 34;
+                  break;
+               case 37:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 36;
+                  break;
+               case 41:
+               case 46:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 43:
+                  if (curChar == 92)
+                     jjAddStates(839, 842);
+                  break;
+               case 45:
+                  if (curChar == 92)
+                     jjAddStates(843, 844);
+                  break;
+               case 47:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(211, 216);
+                  break;
+               case 49:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(217, 225);
+                  break;
+               case 50:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(226, 230);
+                  break;
+               case 51:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(231, 236);
+                  break;
+               case 52:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(237, 243);
+                  break;
+               case 53:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(244, 251);
+                  break;
+               case 58:
+               case 63:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 60:
+                  if (curChar == 92)
+                     jjAddStates(845, 848);
+                  break;
+               case 62:
+                  if (curChar == 92)
+                     jjAddStates(849, 850);
+                  break;
+               case 64:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(252, 257);
+                  break;
+               case 66:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(258, 266);
+                  break;
+               case 67:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(267, 271);
+                  break;
+               case 68:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(272, 277);
+                  break;
+               case 69:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(278, 284);
+                  break;
+               case 70:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(285, 292);
+                  break;
+               case 76:
+               case 77:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddTwoStates(77, 78);
+                  break;
+               case 78:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(79, 80);
+                  break;
+               case 79:
+                  if ((0x7fffffffffffffffL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddTwoStates(77, 78);
+                  break;
+               case 80:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(293, 296);
+                  break;
+               case 82:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(297, 303);
+                  break;
+               case 83:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(304, 306);
+                  break;
+               case 84:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(307, 310);
+                  break;
+               case 85:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(311, 315);
+                  break;
+               case 86:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(316, 321);
+                  break;
+               case 88:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(79, 89);
+                  break;
+               case 89:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(322, 325);
+                  break;
+               case 90:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(326, 332);
+                  break;
+               case 91:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(333, 335);
+                  break;
+               case 92:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(336, 339);
+                  break;
+               case 93:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(340, 344);
+                  break;
+               case 94:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddStates(345, 350);
+                  break;
+               case 96:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 97:
+                  if (curChar == 92)
+                     jjAddStates(851, 852);
+                  break;
+               case 98:
+                  if ((0x7fffffffffffffffL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 99:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(351, 354);
+                  break;
+               case 101:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(355, 361);
+                  break;
+               case 102:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(362, 364);
+                  break;
+               case 103:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(365, 368);
+                  break;
+               case 104:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(369, 373);
+                  break;
+               case 105:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddStates(374, 379);
+                  break;
+               case 106:
+                  if (curChar == 64)
+                     jjAddStates(835, 838);
+                  break;
+               case 108:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 109:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 110:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 112);
+                  break;
+               case 111:
+                  if ((0x7fffffffffffffffL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 112:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(380, 383);
+                  break;
+               case 114:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(384, 390);
+                  break;
+               case 115:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(391, 393);
+                  break;
+               case 116:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(394, 397);
+                  break;
+               case 117:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(398, 402);
+                  break;
+               case 118:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(403, 408);
+                  break;
+               case 120:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(111, 121);
+                  break;
+               case 121:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(409, 412);
+                  break;
+               case 122:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(413, 419);
+                  break;
+               case 123:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(420, 422);
+                  break;
+               case 124:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(423, 426);
+                  break;
+               case 125:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(427, 431);
+                  break;
+               case 126:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddStates(432, 437);
+                  break;
+               case 127:
+                  if ((0x2000000020L & l) != 0L)
+                     jjAddStates(438, 439);
+                  break;
+               case 130:
+                  if ((0x40000000400000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 127;
+                  break;
+               case 131:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 130;
+                  break;
+               case 132:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 131;
+                  break;
+               case 133:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 132;
+                  break;
+               case 134:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 133;
+                  break;
+               case 135:
+                  if ((0x1000000010L & l) != 0L)
+                     jjAddStates(440, 441);
+                  break;
+               case 138:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 135;
+                  break;
+               case 139:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 138;
+                  break;
+               case 140:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 139;
+                  break;
+               case 141:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 140;
+                  break;
+               case 142:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 141;
+                  break;
+               case 143:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjAddStates(442, 443);
+                  break;
+               case 146:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 143;
+                  break;
+               case 147:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 146;
+                  break;
+               case 148:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 147;
+                  break;
+               case 149:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 148;
+                  break;
+               case 150:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 149;
+                  break;
+               case 151:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 150;
+                  break;
+               case 152:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 151;
+                  break;
+               case 153:
+                  if (curChar == 64)
+                     jjAddStates(827, 831);
+                  break;
+               case 154:
+                  if ((0x8000000080000L & l) != 0L && kind > 102)
+                     kind = 102;
+                  break;
+               case 155:
+               case 163:
+               case 176:
+               case 187:
+               case 203:
+                  if ((0x2000000020L & l) != 0L)
+                     jjCheckNAdd(154);
+                  break;
+               case 156:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 155;
+                  break;
+               case 157:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 156;
+                  break;
+               case 158:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 157;
+                  break;
+               case 159:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 158;
+                  break;
+               case 160:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 159;
+                  break;
+               case 161:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 160;
+                  break;
+               case 164:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 163;
+                  break;
+               case 165:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 164;
+                  break;
+               case 166:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 165;
+                  break;
+               case 167:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 166;
+                  break;
+               case 168:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 167;
+                  break;
+               case 169:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 168;
+                  break;
+               case 177:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 176;
+                  break;
+               case 178:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 177;
+                  break;
+               case 179:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 178;
+                  break;
+               case 180:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 179;
+                  break;
+               case 181:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 180;
+                  break;
+               case 182:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 181;
+                  break;
+               case 183:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 182;
+                  break;
+               case 185:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 184;
+                  break;
+               case 188:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 187;
+                  break;
+               case 189:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 188;
+                  break;
+               case 190:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 189;
+                  break;
+               case 191:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 190;
+                  break;
+               case 192:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 191;
+                  break;
+               case 193:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 192;
+                  break;
+               case 194:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 193;
+                  break;
+               case 196:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 195;
+                  break;
+               case 197:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 196;
+                  break;
+               case 198:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 197;
+                  break;
+               case 199:
+                  if ((0x400000004L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 198;
+                  break;
+               case 200:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 199;
+                  break;
+               case 201:
+                  if ((0x80000000800000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 200;
+                  break;
+               case 204:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 203;
+                  break;
+               case 205:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 204;
+                  break;
+               case 206:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 205;
+                  break;
+               case 207:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 206;
+                  break;
+               case 208:
+                  if ((0x200000002000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 207;
+                  break;
+               case 209:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 208;
+                  break;
+               case 210:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 209;
+                  break;
+               case 212:
+                  if ((0x8000000080000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 211;
+                  break;
+               case 213:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 212;
+                  break;
+               case 217:
+                  if (kind > 2)
+                     kind = 2;
+                  jjAddStates(9, 11);
+                  break;
+               case 222:
+                  if (kind > 3)
+                     kind = 3;
+                  break;
+               case 225:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 226:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(227, 228);
+                  break;
+               case 227:
+                  if ((0x7fffffffffffffffL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 228:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(444, 447);
+                  break;
+               case 230:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(448, 454);
+                  break;
+               case 231:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(455, 457);
+                  break;
+               case 232:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(458, 461);
+                  break;
+               case 233:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(462, 466);
+                  break;
+               case 234:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(467, 472);
+                  break;
+               case 235:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 238:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(239, 240);
+                  break;
+               case 239:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 240:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(473, 477);
+                  break;
+               case 242:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(478, 485);
+                  break;
+               case 243:
+               case 457:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(486, 489);
+                  break;
+               case 244:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(490, 494);
+                  break;
+               case 245:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(495, 500);
+                  break;
+               case 246:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(501, 507);
+                  break;
+               case 249:
+                  if ((0x10000000100000L & l) != 0L && kind > 70)
+                     kind = 70;
+                  break;
+               case 250:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 249;
+                  break;
+               case 251:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 250;
+                  break;
+               case 252:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 251;
+                  break;
+               case 253:
+                  if ((0x4000000040L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 252;
+                  break;
+               case 254:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 253;
+                  break;
+               case 255:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 254;
+                  break;
+               case 257:
+                  if ((0x10000000100000L & l) != 0L && kind > 104)
+                     kind = 104;
+                  break;
+               case 258:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 257;
+                  break;
+               case 259:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 258;
+                  break;
+               case 260:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 259;
+                  break;
+               case 261:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 260;
+                  break;
+               case 262:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 261;
+                  break;
+               case 263:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 262;
+                  break;
+               case 264:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 263;
+                  break;
+               case 265:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 264;
+                  break;
+               case 267:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 268:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 269:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(817, 822);
+                  break;
+               case 275:
+                  if ((0x10000000100000L & l) != 0L && kind > 78)
+                     kind = 78;
+                  break;
+               case 276:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 275;
+                  break;
+               case 278:
+                  if ((0x200000002000L & l) != 0L && kind > 79)
+                     kind = 79;
+                  break;
+               case 279:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 278;
+                  break;
+               case 281:
+                  if ((0x200000002000L & l) != 0L && kind > 80)
+                     kind = 80;
+                  break;
+               case 282:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 281;
+                  break;
+               case 284:
+                  if ((0x800000008L & l) != 0L && kind > 81)
+                     kind = 81;
+                  break;
+               case 285:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 284;
+                  break;
+               case 287:
+                  if ((0x400000004000L & l) != 0L && kind > 82)
+                     kind = 82;
+                  break;
+               case 288:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 287;
+                  break;
+               case 290:
+                  if ((0x100000001000000L & l) != 0L && kind > 83)
+                     kind = 83;
+                  break;
+               case 291:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 290;
+                  break;
+               case 293:
+                  if ((0x200000002000L & l) != 0L && kind > 84)
+                     kind = 84;
+                  break;
+               case 294:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 293;
+                  break;
+               case 296:
+                  if ((0x200000002000L & l) != 0L && kind > 85)
+                     kind = 85;
+                  break;
+               case 297:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 296;
+                  break;
+               case 298:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 297;
+                  break;
+               case 300:
+                  if ((0x200000002000L & l) != 0L && kind > 86)
+                     kind = 86;
+                  break;
+               case 301:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 300;
+                  break;
+               case 302:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 301;
+                  break;
+               case 304:
+                  if ((0x100000001000000L & l) != 0L && kind > 87)
+                     kind = 87;
+                  break;
+               case 305:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 304;
+                  break;
+               case 307:
+                  if ((0x8000000080L & l) != 0L && kind > 88)
+                     kind = 88;
+                  break;
+               case 308:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 307;
+                  break;
+               case 309:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 308;
+                  break;
+               case 311:
+                  if ((0x1000000010L & l) != 0L && kind > 89)
+                     kind = 89;
+                  break;
+               case 312:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 311;
+                  break;
+               case 313:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 312;
+                  break;
+               case 315:
+                  if ((0x1000000010L & l) != 0L && kind > 90)
+                     kind = 90;
+                  break;
+               case 316:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 315;
+                  break;
+               case 317:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 316;
+                  break;
+               case 318:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 317;
+                  break;
+               case 320:
+                  if ((0x8000000080000L & l) != 0L && kind > 91)
+                     kind = 91;
+                  break;
+               case 321:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 320;
+                  break;
+               case 323:
+                  if ((0x8000000080000L & l) != 0L && kind > 92)
+                     kind = 92;
+                  break;
+               case 325:
+                  if ((0x400000004000000L & l) != 0L && kind > 93)
+                     kind = 93;
+                  break;
+               case 326:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 325;
+                  break;
+               case 328:
+                  if ((0x400000004000000L & l) != 0L && kind > 94)
+                     kind = 94;
+                  break;
+               case 329:
+                  if ((0x10000000100L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 328;
+                  break;
+               case 330:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 329;
+                  break;
+               case 333:
+               case 334:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddTwoStates(334, 335);
+                  break;
+               case 335:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(336, 337);
+                  break;
+               case 336:
+                  if ((0x7fffffffffffffffL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddTwoStates(334, 335);
+                  break;
+               case 337:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(508, 511);
+                  break;
+               case 339:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(512, 518);
+                  break;
+               case 340:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(519, 521);
+                  break;
+               case 341:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(522, 525);
+                  break;
+               case 342:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(526, 530);
+                  break;
+               case 343:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(531, 536);
+                  break;
+               case 345:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(336, 346);
+                  break;
+               case 346:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(537, 540);
+                  break;
+               case 347:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(541, 547);
+                  break;
+               case 348:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(548, 550);
+                  break;
+               case 349:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(551, 554);
+                  break;
+               case 350:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(555, 559);
+                  break;
+               case 351:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddStates(560, 565);
+                  break;
+               case 352:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjAddStates(832, 834);
+                  break;
+               case 354:
+               case 358:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(572, 575);
+                  break;
+               case 357:
+                  if (curChar == 92)
+                     jjAddStates(853, 854);
+                  break;
+               case 359:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(576, 580);
+                  break;
+               case 361:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(581, 588);
+                  break;
+               case 362:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(589, 592);
+                  break;
+               case 363:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(593, 597);
+                  break;
+               case 364:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(598, 603);
+                  break;
+               case 365:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(604, 610);
+                  break;
+               case 367:
+               case 372:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 369:
+                  if (curChar == 92)
+                     jjAddStates(855, 858);
+                  break;
+               case 371:
+                  if (curChar == 92)
+                     jjAddStates(859, 860);
+                  break;
+               case 373:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(615, 620);
+                  break;
+               case 375:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(621, 629);
+                  break;
+               case 376:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(630, 634);
+                  break;
+               case 377:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(635, 640);
+                  break;
+               case 378:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(641, 647);
+                  break;
+               case 379:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(648, 655);
+                  break;
+               case 384:
+               case 389:
+                  if ((0x7fffffffffffffffL & l) != 0L)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               case 386:
+                  if (curChar == 92)
+                     jjAddStates(861, 864);
+                  break;
+               case 388:
+                  if (curChar == 92)
+                     jjAddStates(865, 866);
+                  break;
+               case 390:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(660, 665);
+                  break;
+               case 392:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(666, 674);
+                  break;
+               case 393:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(675, 679);
+                  break;
+               case 394:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(680, 685);
+                  break;
+               case 395:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(686, 692);
+                  break;
+               case 396:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(693, 700);
+                  break;
+               case 401:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 353;
+                  break;
+               case 402:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 401;
+                  break;
+               case 410:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjAddStates(717, 722);
+                  break;
+               case 411:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 412;
+                  break;
+               case 412:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 413;
+                  break;
+               case 413:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAdd(414);
+                  break;
+               case 414:
+                  if ((0x7e0000007eL & l) != 0L && kind > 114)
+                     kind = 114;
+                  break;
+               case 415:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 416;
+                  break;
+               case 416:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 417;
+                  break;
+               case 417:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 418;
+                  break;
+               case 418:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 406;
+                  break;
+               case 419:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 420;
+                  break;
+               case 420:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 421;
+                  break;
+               case 421:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 422;
+                  break;
+               case 423:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 424;
+                  break;
+               case 424:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 425;
+                  break;
+               case 427:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 428;
+                  break;
+               case 436:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddTwoStates(437, 443);
+                  break;
+               case 438:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjstateSet[jjnewStateCnt++] = 439;
+                  break;
+               case 439:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(733, 736);
+                  break;
+               case 440:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAdd(414);
+                  break;
+               case 441:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddTwoStates(414, 440);
+                  break;
+               case 442:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 114)
+                     kind = 114;
+                  jjCheckNAddStates(737, 739);
+                  break;
+               case 443:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(740, 744);
+                  break;
+               case 444:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAdd(437);
+                  break;
+               case 445:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddTwoStates(444, 437);
+                  break;
+               case 446:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(745, 747);
+                  break;
+               case 447:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(748, 751);
+                  break;
+               case 448:
+                  if (curChar == 92)
+                     jjCheckNAddStates(823, 826);
+                  break;
+               case 449:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(752, 755);
+                  break;
+               case 450:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(756, 762);
+                  break;
+               case 451:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(763, 765);
+                  break;
+               case 452:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(766, 769);
+                  break;
+               case 453:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(770, 774);
+                  break;
+               case 454:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(775, 780);
+                  break;
+               case 455:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(781, 785);
+                  break;
+               case 456:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(786, 793);
+                  break;
+               case 458:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(794, 798);
+                  break;
+               case 459:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(799, 804);
+                  break;
+               case 460:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(805, 811);
+                  break;
+               default : break;
             }
-            break;
-        case 73:
-        case 105:
-            return jjMoveStringLiteralDfa5_0(active0, 0x20000000000000L,
-                    active1, 0x400000000L);
-        case 76:
-        case 108:
-            return jjMoveStringLiteralDfa5_0(active0, 0x2040000000000000L,
-                    active1, 0L);
-        case 78:
-        case 110:
-            if ((active0 & 0x400000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(4, 58, 525);
+         } while(i != startsAt);
+      }
+      else
+      {
+         int i2 = (curChar & 0xff) >> 6;
+         long l2 = 1L << (curChar & 077);
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 162:
+               case 111:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 29:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 171:
+               case 109:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 525:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 173:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 24:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 40)
+                     kind = 40;
+                  jjCheckNAddStates(817, 822);
+                  break;
+               case 172:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 170:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 103)
+                     kind = 103;
+                  jjCheckNAddTwoStates(109, 110);
+                  break;
+               case 75:
+               case 77:
+               case 79:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 76)
+                     kind = 76;
+                  jjCheckNAddTwoStates(77, 78);
+                  break;
+               case 522:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAddTwoStates(225, 226);
+                  }
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 5:
+               case 8:
+               case 16:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(138, 140);
+                  break;
+               case 41:
+               case 46:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(130, 133);
+                  break;
+               case 58:
+               case 63:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(126, 129);
+                  break;
+               case 96:
+               case 98:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 96)
+                     kind = 96;
+                  jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 217:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 2)
+                     kind = 2;
+                  jjAddStates(9, 11);
+                  break;
+               case 222:
+                  if ((jjbitVec0[i2] & l2) != 0L && kind > 3)
+                     kind = 3;
+                  break;
+               case 225:
+               case 227:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddTwoStates(225, 226);
+                  break;
+               case 235:
+               case 239:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(0, 3);
+                  break;
+               case 334:
+               case 336:
+               case 344:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 95)
+                     kind = 95;
+                  jjCheckNAddTwoStates(334, 335);
+                  break;
+               case 354:
+               case 358:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(572, 575);
+                  break;
+               case 367:
+               case 372:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(611, 614);
+                  break;
+               case 384:
+               case 389:
+                  if ((jjbitVec0[i2] & l2) != 0L)
+                     jjCheckNAddStates(656, 659);
+                  break;
+               default : break;
             }
-            break;
-        case 79:
-        case 111:
-            return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x200000000L);
-        case 80:
-        case 112:
-            return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L);
-        case 82:
-        case 114:
-            return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x800000000L);
-        case 84:
-        case 116:
-            return jjMoveStringLiteralDfa5_0(active0, 0L, active1,
-                    0x2000000008L);
-        case 85:
-        case 117:
-            return jjMoveStringLiteralDfa5_0(active0, 0x304000000000000L,
-                    active1, 0L);
-        case 90:
-        case 122:
-            return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(3, active0, active1);
-    }
+         } while(i != startsAt);
+      }
+      if (kind != 0x7fffffff)
+      {
+         jjmatchedKind = kind;
+         jjmatchedPos = curPos;
+         kind = 0x7fffffff;
+      }
+      ++curPos;
+      if ((i = jjnewStateCnt) == (startsAt = 522 - (jjnewStateCnt = startsAt)))
+         return curPos;
+      try { curChar = input_stream.readChar(); }
+      catch(java.io.IOException e) { return curPos; }
+   }
+}
+private int jjMoveStringLiteralDfa0_2()
+{
+   switch(curChar)
+   {
+      case 42:
+         return jjMoveStringLiteralDfa1_2(0x40L);
+      default :
+         return 1;
+   }
+}
+private int jjMoveStringLiteralDfa1_2(long active0)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      return 1;
+   }
+   switch(curChar)
+   {
+      case 47:
+         if ((active0 & 0x40L) != 0L)
+            return jjStopAtPos(1, 6);
+         break;
+      default :
+         return 2;
+   }
+   return 2;
+}
+private int jjMoveStringLiteralDfa0_1()
+{
+   switch(curChar)
+   {
+      case 42:
+         return jjMoveStringLiteralDfa1_1(0x20L);
+      default :
+         return 1;
+   }
+}
+private int jjMoveStringLiteralDfa1_1(long active0)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      return 1;
+   }
+   switch(curChar)
+   {
+      case 47:
+         if ((active0 & 0x20L) != 0L)
+            return jjStopAtPos(1, 5);
+         break;
+      default :
+         return 2;
+   }
+   return 2;
+}
+static final int[] jjnextStates = {
+   235, 236, 237, 238, 331, 332, 333, 344, 345, 217, 218, 220, 462, 463, 464, 465, 
+   466, 467, 273, 468, 469, 470, 276, 471, 472, 473, 279, 474, 475, 476, 282, 477, 
+   478, 479, 285, 480, 481, 482, 288, 483, 484, 485, 291, 486, 487, 488, 294, 489, 
+   490, 491, 298, 492, 493, 494, 302, 495, 496, 497, 305, 498, 499, 500, 309, 501, 
+   502, 503, 313, 504, 505, 506, 318, 507, 508, 509, 321, 510, 511, 512, 323, 513, 
+   514, 515, 326, 516, 517, 518, 330, 519, 520, 521, 332, 333, 344, 345, 271, 272, 
+   274, 277, 280, 283, 286, 289, 292, 295, 299, 303, 306, 310, 314, 319, 322, 324, 
+   327, 331, 267, 268, 248, 255, 256, 265, 216, 223, 75, 76, 87, 88, 58, 59, 
+   60, 62, 41, 42, 43, 45, 3, 4, 16, 17, 5, 6, 7, 5, 10, 6, 
+   7, 11, 5, 12, 10, 6, 7, 13, 14, 15, 5, 10, 6, 7, 5, 12, 
+   10, 6, 7, 5, 12, 10, 6, 7, 13, 5, 12, 10, 6, 7, 13, 14, 
+   10, 5, 6, 7, 19, 20, 10, 5, 6, 7, 21, 22, 23, 10, 5, 6, 
+   7, 20, 10, 5, 6, 7, 20, 10, 5, 6, 7, 21, 20, 10, 5, 6, 
+   7, 21, 22, 41, 48, 42, 43, 45, 49, 41, 50, 48, 42, 43, 45, 51, 
+   52, 53, 41, 48, 42, 43, 45, 41, 50, 48, 42, 43, 45, 41, 50, 48, 
+   42, 43, 45, 51, 41, 50, 48, 42, 43, 45, 51, 52, 58, 65, 59, 60, 
+   62, 66, 58, 67, 65, 59, 60, 62, 68, 69, 70, 58, 65, 59, 60, 62, 
+   58, 67, 65, 59, 60, 62, 58, 67, 65, 59, 60, 62, 68, 58, 67, 65, 
+   59, 60, 62, 68, 69, 77, 81, 78, 82, 77, 83, 81, 78, 84, 85, 86, 
+   77, 81, 78, 77, 83, 81, 78, 77, 83, 81, 78, 84, 77, 83, 81, 78, 
+   84, 85, 81, 77, 78, 90, 91, 81, 77, 78, 92, 93, 94, 81, 77, 78, 
+   91, 81, 77, 78, 91, 81, 77, 78, 92, 91, 81, 77, 78, 92, 93, 96, 
+   100, 97, 101, 96, 102, 100, 97, 103, 104, 105, 96, 100, 97, 96, 102, 100, 
+   97, 96, 102, 100, 97, 103, 96, 102, 100, 97, 103, 104, 109, 113, 110, 114, 
+   109, 115, 113, 110, 116, 117, 118, 109, 113, 110, 109, 115, 113, 110, 109, 115, 
+   113, 110, 116, 109, 115, 113, 110, 116, 117, 113, 109, 110, 122, 123, 113, 109, 
+   110, 124, 125, 126, 113, 109, 110, 123, 113, 109, 110, 123, 113, 109, 110, 124, 
+   123, 113, 109, 110, 124, 125, 128, 129, 136, 137, 144, 145, 225, 229, 226, 230, 
+   225, 231, 229, 226, 232, 233, 234, 225, 229, 226, 225, 231, 229, 226, 225, 231, 
+   229, 226, 232, 225, 231, 229, 226, 232, 233, 235, 237, 238, 241, 242, 235, 243, 
+   237, 238, 241, 244, 245, 246, 235, 237, 238, 241, 235, 243, 237, 238, 241, 235, 
+   243, 237, 238, 241, 244, 235, 243, 237, 238, 241, 244, 245, 334, 338, 335, 339, 
+   334, 340, 338, 335, 341, 342, 343, 334, 338, 335, 334, 340, 338, 335, 334, 340, 
+   338, 335, 341, 334, 340, 338, 335, 341, 342, 338, 334, 335, 347, 348, 338, 334, 
+   335, 349, 350, 351, 338, 334, 335, 348, 338, 334, 335, 348, 338, 334, 335, 349, 
+   348, 338, 334, 335, 349, 350, 354, 366, 383, 356, 357, 400, 354, 355, 356, 357, 
+   354, 356, 357, 360, 361, 354, 362, 356, 357, 360, 363, 364, 365, 354, 356, 357, 
+   360, 354, 362, 356, 357, 360, 354, 362, 356, 357, 360, 363, 354, 362, 356, 357, 
+   360, 363, 364, 367, 368, 369, 371, 367, 374, 368, 369, 371, 375, 367, 376, 374, 
+   368, 369, 371, 377, 378, 379, 367, 374, 368, 369, 371, 367, 376, 374, 368, 369, 
+   371, 367, 376, 374, 368, 369, 371, 377, 367, 376, 374, 368, 369, 371, 377, 378, 
+   384, 385, 386, 388, 384, 391, 385, 386, 388, 392, 384, 393, 391, 385, 386, 388, 
+   394, 395, 396, 384, 391, 385, 386, 388, 384, 393, 391, 385, 386, 388, 384, 393, 
+   391, 385, 386, 388, 394, 384, 393, 391, 385, 386, 388, 394, 395, 354, 366, 383, 
+   355, 356, 357, 400, 404, 410, 406, 407, 408, 409, 406, 407, 408, 411, 415, 419, 
+   423, 427, 431, 406, 429, 430, 406, 432, 433, 434, 406, 432, 433, 414, 440, 441, 
+   442, 414, 440, 441, 444, 437, 445, 446, 447, 444, 437, 445, 444, 437, 445, 446, 
+   229, 225, 226, 450, 451, 229, 225, 226, 452, 453, 454, 229, 225, 226, 451, 229, 
+   225, 226, 451, 229, 225, 226, 452, 451, 229, 225, 226, 452, 453, 235, 237, 238, 
+   241, 456, 457, 235, 237, 238, 241, 458, 459, 460, 457, 235, 237, 238, 241, 457, 
+   235, 237, 238, 241, 458, 457, 235, 237, 238, 241, 458, 459, 519, 332, 333, 344, 
+   345, 225, 235, 236, 237, 238, 226, 227, 449, 239, 455, 162, 175, 186, 202, 214, 
+   402, 403, 435, 107, 108, 119, 120, 44, 54, 56, 55, 46, 47, 61, 71, 73, 
+   72, 63, 64, 98, 99, 358, 359, 370, 380, 382, 381, 372, 373, 387, 397, 399, 
+   398, 389, 390, 
+};
 
-    private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(3, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(4, active0, active1);
-            return 5;
-        }
-        switch (curChar) {
-        case 45:
-            return jjMoveStringLiteralDfa6_0(active0, 0L, active1,
-                    0x2000000002L);
-        case 65:
-        case 97:
-            if ((active1 & 0x400000000L) != 0L) {
-                return jjStartNfaWithStates_0(5, 98, 525);
-            }
-            break;
-        case 69:
-        case 101:
-            if ((active0 & 0x2000000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(5, 61, 525);
-            }
-            return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x8L);
-        case 71:
-        case 103:
-            if ((active0 & 0x200000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(5, 57, 525);
-            }
-            return jjMoveStringLiteralDfa6_0(active0, 0x4000000000000L,
-                    active1, 0L);
-        case 78:
-        case 110:
-            if ((active0 & 0x20000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(5, 53, 525);
-            }
-            return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x1L);
-        case 79:
-        case 111:
-            return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x4L);
-        case 82:
-        case 114:
-            return jjMoveStringLiteralDfa6_0(active0, 0x100000000000000L,
-                    active1, 0x200000000L);
-        case 83:
-        case 115:
-            return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000000L);
-        case 84:
-        case 116:
-            return jjMoveStringLiteralDfa6_0(active0, 0x80000000000000L,
-                    active1, 0L);
-        case 85:
-        case 117:
-            return jjMoveStringLiteralDfa6_0(active0, 0x40000000000000L,
-                    active1, 0L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(4, active0, active1);
-    }
+/** Token literal values. */
+public static final String[] jjstrLiteralImages = {
+"", null, null, null, null, null, null, null, "\74\41\55\55", "\55\55\76", 
+"\173", "\175", "\174\75", "\136\75", "\44\75", "\52\75", "\176\75", "\75", "\53", 
+"\55", "\54", "\73", "\76", "\176", "\74", "\57", "\133", "\135", "\52", "\45", 
+"\46", "\56", "\50", "\51", "\75\75", "\174\174", "\46\46", "\41\75", "\72", null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, };
 
-    private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(4, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(5, active0, active1);
-            return 6;
-        }
-        switch (curChar) {
-        case 68:
-        case 100:
-            if ((active1 & 0x1L) != 0L) {
-                return jjStartNfaWithStates_0(6, 64, 525);
-            }
-            return jjMoveStringLiteralDfa7_0(active0, 0x40000000000000L,
-                    active1, 0x2L);
-        case 69:
-        case 101:
-            return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800000000L);
-        case 70:
-        case 102:
-            return jjMoveStringLiteralDfa7_0(active0, 0L, active1,
-                    0x2000000000L);
-        case 72:
-        case 104:
-            if ((active0 & 0x4000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(6, 50, 522);
-            }
-            break;
-        case 73:
-        case 105:
-            return jjMoveStringLiteralDfa7_0(active0, 0x80000000000000L,
-                    active1, 0L);
-        case 78:
-        case 110:
-            if ((active0 & 0x100000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(6, 56, 525);
-            }
-            return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x8L);
-        case 82:
-        case 114:
-            return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x4L);
-        case 84:
-        case 116:
-            if ((active1 & 0x200000000L) != 0L) {
-                return jjStartNfaWithStates_0(6, 97, 525);
-            }
-            break;
-        default:
-            break;
-        }
-        return jjStartNfa_0(5, active0, active1);
-    }
+/** Lexer state names. */
+public static final String[] lexStateNames = {
+   "DEFAULT",
+   "IN_FORMAL_COMMENT",
+   "IN_MULTI_LINE_COMMENT",
+};
 
-    private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(5, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(6, active0, active1);
-            return 7;
-        }
-        switch (curChar) {
-        case 65:
-        case 97:
-            return jjMoveStringLiteralDfa8_0(active0, 0L, active1,
-                    0x2000000000L);
-        case 69:
-        case 101:
-            if ((active0 & 0x40000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(7, 54, 525);
-            }
-            break;
-        case 79:
-        case 111:
-            return jjMoveStringLiteralDfa8_0(active0, 0x80000000000000L,
-                    active1, 0x2L);
-        case 84:
-        case 116:
-            if ((active1 & 0x8L) != 0L) {
-                return jjStartNfaWithStates_0(7, 67, 525);
-            } else if ((active1 & 0x800000000L) != 0L) {
-                return jjStartNfaWithStates_0(7, 99, 525);
-            }
-            return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x4L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(6, active0, active1);
-    }
+/** Lex State array. */
+public static final int[] jjnewLexState = {
+   -1, -1, -1, 1, 2, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+};
+static final long[] jjtoToken = {
+   0xfffe01ffffffff03L, 0xfc01fffffffbffL, 
+};
+static final long[] jjtoSkip = {
+   0x64L, 0x0L, 
+};
+static final long[] jjtoSpecial = {
+   0x24L, 0x0L, 
+};
+static final long[] jjtoMore = {
+   0x98L, 0x0L, 
+};
+protected CharStream input_stream;
+private final int[] jjrounds = new int[522];
+private final int[] jjstateSet = new int[1044];
+private final StringBuilder jjimage = new StringBuilder();
+private StringBuilder image = jjimage;
+private int jjimageLen;
+private int lengthOfMatch;
+protected char curChar;
+/** Constructor. */
+public ParserTokenManager(CharStream stream){
+   input_stream = stream;
+}
 
-    private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(6, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(7, active0, active1);
-            return 8;
-        }
-        switch (curChar) {
-        case 67:
-        case 99:
-            return jjMoveStringLiteralDfa9_0(active0, 0L, active1,
-                    0x2000000002L);
-        case 78:
-        case 110:
-            if ((active0 & 0x80000000000000L) != 0L) {
-                return jjStartNfaWithStates_0(8, 55, 525);
-            }
-            break;
-        case 83:
-        case 115:
-            if ((active1 & 0x4L) != 0L) {
-                return jjStartNfaWithStates_0(8, 66, 525);
-            }
-            break;
-        default:
-            break;
-        }
-        return jjStartNfa_0(7, active0, active1);
-    }
+/** Constructor. */
+public ParserTokenManager(CharStream stream, int lexState){
+   this(stream);
+   SwitchTo(lexState);
+}
 
-    private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1,
-            long active1) {
-        if (((active0 &= old0) | (active1 &= old1)) == 0L) {
-            return jjStartNfa_0(7, old0, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(8, 0L, active1);
-            return 9;
-        }
-        switch (curChar) {
-        case 69:
-        case 101:
-            if ((active1 & 0x2000000000L) != 0L) {
-                return jjStartNfaWithStates_0(9, 101, 525);
-            }
-            break;
-        case 85:
-        case 117:
-            return jjMoveStringLiteralDfa10_0(active1, 0x2L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(8, 0L, active1);
-    }
+/** Reinitialise parser. */
+public void ReInit(CharStream stream)
+{
+   jjmatchedPos = jjnewStateCnt = 0;
+   curLexState = defaultLexState;
+   input_stream = stream;
+   ReInitRounds();
+}
+private void ReInitRounds()
+{
+   int i;
+   jjround = 0x80000001;
+   for (i = 522; i-- > 0;)
+      jjrounds[i] = 0x80000000;
+}
 
-    private int jjMoveStringLiteralDfa10_0(long old1, long active1) {
-        if (((active1 &= old1)) == 0L) {
-            return jjStartNfa_0(8, 0L, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(9, 0L, active1);
-            return 10;
-        }
-        switch (curChar) {
-        case 77:
-        case 109:
-            return jjMoveStringLiteralDfa11_0(active1, 0x2L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(9, 0L, active1);
-    }
+/** Reinitialise parser. */
+public void ReInit(CharStream stream, int lexState)
+{
+   ReInit(stream);
+   SwitchTo(lexState);
+}
 
-    private int jjMoveStringLiteralDfa11_0(long old1, long active1) {
-        if (((active1 &= old1)) == 0L) {
-            return jjStartNfa_0(9, 0L, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(10, 0L, active1);
-            return 11;
-        }
-        switch (curChar) {
-        case 69:
-        case 101:
-            return jjMoveStringLiteralDfa12_0(active1, 0x2L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(10, 0L, active1);
-    }
+/** Switch to specified lex state. */
+public void SwitchTo(int lexState)
+{
+   if (lexState >= 3 || lexState < 0)
+      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+   else
+      curLexState = lexState;
+}
 
-    private int jjMoveStringLiteralDfa12_0(long old1, long active1) {
-        if (((active1 &= old1)) == 0L) {
-            return jjStartNfa_0(10, 0L, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(11, 0L, active1);
-            return 12;
-        }
-        switch (curChar) {
-        case 78:
-        case 110:
-            return jjMoveStringLiteralDfa13_0(active1, 0x2L);
-        default:
-            break;
-        }
-        return jjStartNfa_0(11, 0L, active1);
-    }
+protected Token jjFillToken()
+{
+   final Token t;
+   final String curTokenImage;
+   final int beginLine;
+   final int endLine;
+   final int beginColumn;
+   final int endColumn;
+   String im = jjstrLiteralImages[jjmatchedKind];
+   curTokenImage = (im == null) ? input_stream.GetImage() : im;
+   beginLine = input_stream.getBeginLine();
+   beginColumn = input_stream.getBeginColumn();
+   endLine = input_stream.getEndLine();
+   endColumn = input_stream.getEndColumn();
+   t = Token.newToken(jjmatchedKind, curTokenImage);
 
-    private int jjMoveStringLiteralDfa13_0(long old1, long active1) {
-        if (((active1 &= old1)) == 0L) {
-            return jjStartNfa_0(11, 0L, old1);
-        }
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            jjStopStringLiteralDfa_0(12, 0L, active1);
-            return 13;
-        }
-        switch (curChar) {
-        case 84:
-        case 116:
-            if ((active1 & 0x2L) != 0L) {
-                return jjStartNfaWithStates_0(13, 65, 525);
-            }
-            break;
-        default:
-            break;
-        }
-        return jjStartNfa_0(12, 0L, active1);
-    }
+   t.beginLine = beginLine;
+   t.endLine = endLine;
+   t.beginColumn = beginColumn;
+   t.endColumn = endColumn;
 
-    private int jjStartNfaWithStates_0(int pos, int kind, int state) {
-        jjmatchedKind = kind;
-        jjmatchedPos = pos;
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            return pos + 1;
-        }
-        return jjMoveNfa_0(state, pos + 1);
-    }
+   return t;
+}
 
-    static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL,
-            0xffffffffffffffffL };
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
 
-    private int jjMoveNfa_0(int startState, int curPos) {
-        int startsAt = 0;
-        jjnewStateCnt = 522;
-        int i = 1;
-        jjstateSet[0] = startState;
-        int kind = 0x7fffffff;
-        for (;;) {
-            if (++jjround == 0x7fffffff) {
-                ReInitRounds();
-            }
-            if (curChar < 64) {
-                long l = 1L << curChar;
-                do {
-                    switch (jjstateSet[--i]) {
-                    case 524:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(256, 265);
-                        }
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(248, 255);
-                        }
-                        break;
-                    case 162:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 108;
-                        }
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 213;
-                        }
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 201;
-                        }
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 185;
-                        }
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 174;
-                        }
-                        break;
-                    case 29:
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        } else if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(236, 237);
-                        } else if (curChar == 40) {
-                            if (kind > 118) {
-                                kind = 118;
-                            }
-                        }
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        }
-                        break;
-                    case 171:
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        }
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 170;
-                        }
-                        break;
-                    case 523:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(4, 8);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(327, 330);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(324, 326);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(322, 323);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(319, 321);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(314, 318);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(310, 313);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(306, 309);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(303, 305);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(299, 302);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(295, 298);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(292, 294);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(289, 291);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(286, 288);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(283, 285);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(280, 282);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(277, 279);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(274, 276);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(272, 273);
-                        }
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            if (kind > 73) {
-                                kind = 73;
-                            }
-                            jjCheckNAdd(271);
-                        }
-                        break;
-                    case 525:
-                    case 109:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 216:
-                        if (curChar == 42) {
-                            jjstateSet[jjnewStateCnt++] = 221;
-                        } else if (curChar == 47) {
-                            if (kind > 2) {
-                                kind = 2;
-                            }
-                            jjCheckNAddStates(9, 11);
-                        }
-                        break;
-                    case 173:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 24:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            if (kind > 73) {
-                                kind = 73;
-                            }
-                            jjCheckNAddStates(12, 93);
-                        } else if ((0x100003600L & l) != 0L) {
-                            if (kind > 1) {
-                                kind = 1;
-                            }
-                            jjCheckNAdd(0);
-                        } else if (curChar == 46) {
-                            jjCheckNAddStates(94, 113);
-                        } else if (curChar == 45) {
-                            jjAddStates(114, 115);
-                        } else if (curChar == 33) {
-                            jjCheckNAddStates(116, 119);
-                        } else if (curChar == 47) {
-                            jjAddStates(120, 121);
-                        } else if (curChar == 35) {
-                            jjCheckNAddTwoStates(96, 97);
-                        } else if (curChar == 36) {
-                            jjCheckNAddStates(122, 125);
-                        } else if (curChar == 39) {
-                            jjCheckNAddStates(126, 129);
-                        } else if (curChar == 34) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 38;
-                        } else if (curChar == 35) {
-                            jjstateSet[jjnewStateCnt++] = 1;
-                        }
-                        break;
-                    case 172:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 170:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 75:
-                        if (curChar == 45) {
-                            jjCheckNAdd(76);
-                        }
-                        break;
-                    case 522:
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        } else if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(236, 237);
-                        } else if (curChar == 40) {
-                            if (kind > 118) {
-                                kind = 118;
-                            }
-                        }
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        }
-                        break;
-                    case 0:
-                        if ((0x100003600L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 1) {
-                            kind = 1;
-                        }
-                        jjCheckNAdd(0);
-                        break;
-                    case 2:
-                        if (curChar == 36) {
-                            jjCheckNAddStates(134, 137);
-                        }
-                        break;
-                    case 3:
-                        if (curChar == 45) {
-                            jjCheckNAdd(4);
-                        }
-                        break;
-                    case 5:
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            jjCheckNAddStates(138, 140);
-                        }
-                        break;
-                    case 8:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(138, 140);
-                        }
-                        break;
-                    case 9:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(141, 145);
-                        }
-                        break;
-                    case 10:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(138, 140);
-                        }
-                        break;
-                    case 11:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(146, 153);
-                        }
-                        break;
-                    case 12:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(154, 157);
-                        }
-                        break;
-                    case 13:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(158, 162);
-                        }
-                        break;
-                    case 14:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(163, 168);
-                        }
-                        break;
-                    case 15:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(169, 175);
-                        }
-                        break;
-                    case 18:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(176, 180);
-                        }
-                        break;
-                    case 19:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(181, 188);
-                        }
-                        break;
-                    case 20:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(189, 192);
-                        }
-                        break;
-                    case 21:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(193, 197);
-                        }
-                        break;
-                    case 22:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(198, 203);
-                        }
-                        break;
-                    case 23:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(204, 210);
-                        }
-                        break;
-                    case 36:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 35;
-                        }
-                        break;
-                    case 39:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 38;
-                        }
-                        break;
-                    case 40:
-                        if (curChar == 34) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 41:
-                        if ((0xfffffffb00000200L & l) != 0L) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 42:
-                        if (curChar == 34 && kind > 71) {
-                            kind = 71;
-                        }
-                        break;
-                    case 44:
-                        if (curChar == 12) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 46:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 47:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(211, 216);
-                        }
-                        break;
-                    case 48:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 49:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(217, 225);
-                        }
-                        break;
-                    case 50:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(226, 230);
-                        }
-                        break;
-                    case 51:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(231, 236);
-                        }
-                        break;
-                    case 52:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(237, 243);
-                        }
-                        break;
-                    case 53:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(244, 251);
-                        }
-                        break;
-                    case 54:
-                        if (curChar == 13) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 55:
-                        if (curChar == 10) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 56:
-                        if (curChar == 13) {
-                            jjstateSet[jjnewStateCnt++] = 55;
-                        }
-                        break;
-                    case 57:
-                        if (curChar == 39) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 58:
-                        if ((0xffffff7f00000200L & l) != 0L) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 59:
-                        if (curChar == 39 && kind > 71) {
-                            kind = 71;
-                        }
-                        break;
-                    case 61:
-                        if (curChar == 12) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 63:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 64:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(252, 257);
-                        }
-                        break;
-                    case 65:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 66:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(258, 266);
-                        }
-                        break;
-                    case 67:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(267, 271);
-                        }
-                        break;
-                    case 68:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(272, 277);
-                        }
-                        break;
-                    case 69:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(278, 284);
-                        }
-                        break;
-                    case 70:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(285, 292);
-                        }
-                        break;
-                    case 71:
-                        if (curChar == 13) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 72:
-                        if (curChar == 10) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 73:
-                        if (curChar == 13) {
-                            jjstateSet[jjnewStateCnt++] = 72;
-                        }
-                        break;
-                    case 74:
-                        if (curChar == 36) {
-                            jjCheckNAddStates(122, 125);
-                        }
-                        break;
-                    case 77:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddTwoStates(77, 78);
-                        break;
-                    case 79:
-                        if ((0xffffffff00000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddTwoStates(77, 78);
-                        break;
-                    case 80:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(293, 296);
-                        break;
-                    case 81:
-                        if ((0x100003600L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddTwoStates(77, 78);
-                        break;
-                    case 82:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(297, 303);
-                        break;
-                    case 83:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(304, 306);
-                        break;
-                    case 84:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(307, 310);
-                        break;
-                    case 85:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(311, 315);
-                        break;
-                    case 86:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(316, 321);
-                        break;
-                    case 89:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(322, 325);
-                        break;
-                    case 90:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(326, 332);
-                        break;
-                    case 91:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(333, 335);
-                        break;
-                    case 92:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(336, 339);
-                        break;
-                    case 93:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(340, 344);
-                        break;
-                    case 94:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(345, 350);
-                        break;
-                    case 95:
-                        if (curChar == 35) {
-                            jjCheckNAddTwoStates(96, 97);
-                        }
-                        break;
-                    case 96:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddTwoStates(96, 97);
-                        break;
-                    case 98:
-                        if ((0xffffffff00000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddTwoStates(96, 97);
-                        break;
-                    case 99:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(351, 354);
-                        break;
-                    case 100:
-                        if ((0x100003600L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddTwoStates(96, 97);
-                        break;
-                    case 101:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(355, 361);
-                        break;
-                    case 102:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(362, 364);
-                        break;
-                    case 103:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(365, 368);
-                        break;
-                    case 104:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(369, 373);
-                        break;
-                    case 105:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(374, 379);
-                        break;
-                    case 107:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 108;
-                        }
-                        break;
-                    case 111:
-                        if ((0xffffffff00000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 112:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(380, 383);
-                        break;
-                    case 113:
-                        if ((0x100003600L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 114:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(384, 390);
-                        break;
-                    case 115:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(391, 393);
-                        break;
-                    case 116:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(394, 397);
-                        break;
-                    case 117:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(398, 402);
-                        break;
-                    case 118:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(403, 408);
-                        break;
-                    case 121:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(409, 412);
-                        break;
-                    case 122:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(413, 419);
-                        break;
-                    case 123:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(420, 422);
-                        break;
-                    case 124:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(423, 426);
-                        break;
-                    case 125:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(427, 431);
-                        break;
-                    case 126:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(432, 437);
-                        break;
-                    case 128:
-                        if ((0x100003600L & l) != 0L) {
-                            jjAddStates(438, 439);
-                        }
-                        break;
-                    case 129:
-                        if (curChar == 40 && kind > 115) {
-                            kind = 115;
-                        }
-                        break;
-                    case 136:
-                        if ((0x100003600L & l) != 0L) {
-                            jjAddStates(440, 441);
-                        }
-                        break;
-                    case 137:
-                        if (curChar == 40 && kind > 116) {
-                            kind = 116;
-                        }
-                        break;
-                    case 144:
-                        if ((0x100003600L & l) != 0L) {
-                            jjAddStates(442, 443);
-                        }
-                        break;
-                    case 145:
-                        if (curChar == 40 && kind > 117) {
-                            kind = 117;
-                        }
-                        break;
-                    case 175:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 174;
-                        }
-                        break;
-                    case 184:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 183;
-                        }
-                        break;
-                    case 186:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 185;
-                        }
-                        break;
-                    case 195:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 194;
-                        }
-                        break;
-                    case 202:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 201;
-                        }
-                        break;
-                    case 211:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 210;
-                        }
-                        break;
-                    case 214:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 213;
-                        }
-                        break;
-                    case 215:
-                        if (curChar == 47) {
-                            jjAddStates(120, 121);
-                        }
-                        break;
-                    case 217:
-                        if ((0xffffffffffffdbffL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 2) {
-                            kind = 2;
-                        }
-                        jjCheckNAddStates(9, 11);
-                        break;
-                    case 218:
-                        if ((0x2400L & l) != 0L && kind > 2) {
-                            kind = 2;
-                        }
-                        break;
-                    case 219:
-                        if (curChar == 10 && kind > 2) {
-                            kind = 2;
-                        }
-                        break;
-                    case 220:
-                        if (curChar == 13) {
-                            jjstateSet[jjnewStateCnt++] = 219;
-                        }
-                        break;
-                    case 221:
-                        if (curChar == 42) {
-                            jjstateSet[jjnewStateCnt++] = 222;
-                        }
-                        break;
-                    case 222:
-                        if ((0xffff7fffffffffffL & l) != 0L && kind > 3) {
-                            kind = 3;
-                        }
-                        break;
-                    case 223:
-                        if (curChar == 42) {
-                            jjstateSet[jjnewStateCnt++] = 221;
-                        }
-                        break;
-                    case 225:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 227:
-                        if ((0xffffffff00000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 228:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(444, 447);
-                        break;
-                    case 229:
-                        if ((0x100003600L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 230:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(448, 454);
-                        break;
-                    case 231:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(455, 457);
-                        break;
-                    case 232:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(458, 461);
-                        break;
-                    case 233:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(462, 466);
-                        break;
-                    case 234:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(467, 472);
-                        break;
-                    case 235:
-                        if ((0x3ff200000000000L & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 236:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(236, 237);
-                        }
-                        break;
-                    case 237:
-                        if (curChar == 40 && kind > 118) {
-                            kind = 118;
-                        }
-                        break;
-                    case 239:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 240:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(473, 477);
-                        }
-                        break;
-                    case 241:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 242:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(478, 485);
-                        }
-                        break;
-                    case 243:
-                    case 457:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(486, 489);
-                        }
-                        break;
-                    case 244:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(490, 494);
-                        }
-                        break;
-                    case 245:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(495, 500);
-                        }
-                        break;
-                    case 246:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(501, 507);
-                        }
-                        break;
-                    case 247:
-                        if (curChar == 33) {
-                            jjCheckNAddStates(116, 119);
-                        }
-                        break;
-                    case 248:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(248, 255);
-                        }
-                        break;
-                    case 256:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(256, 265);
-                        }
-                        break;
-                    case 266:
-                        if (curChar == 45) {
-                            jjAddStates(114, 115);
-                        }
-                        break;
-                    case 270:
-                        if (curChar == 46) {
-                            jjCheckNAddStates(94, 113);
-                        }
-                        break;
-                    case 271:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 73) {
-                            kind = 73;
-                        }
-                        jjCheckNAdd(271);
-                        break;
-                    case 272:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(272, 273);
-                        }
-                        break;
-                    case 273:
-                        if (curChar == 37 && kind > 77) {
-                            kind = 77;
-                        }
-                        break;
-                    case 274:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(274, 276);
-                        }
-                        break;
-                    case 277:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(277, 279);
-                        }
-                        break;
-                    case 280:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(280, 282);
-                        }
-                        break;
-                    case 283:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(283, 285);
-                        }
-                        break;
-                    case 286:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(286, 288);
-                        }
-                        break;
-                    case 289:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(289, 291);
-                        }
-                        break;
-                    case 292:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(292, 294);
-                        }
-                        break;
-                    case 295:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(295, 298);
-                        }
-                        break;
-                    case 299:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(299, 302);
-                        }
-                        break;
-                    case 303:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(303, 305);
-                        }
-                        break;
-                    case 306:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(306, 309);
-                        }
-                        break;
-                    case 310:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(310, 313);
-                        }
-                        break;
-                    case 314:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(314, 318);
-                        }
-                        break;
-                    case 319:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(319, 321);
-                        }
-                        break;
-                    case 322:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(322, 323);
-                        }
-                        break;
-                    case 324:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(324, 326);
-                        }
-                        break;
-                    case 327:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(327, 330);
-                        }
-                        break;
-                    case 331:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(4, 8);
-                        }
-                        break;
-                    case 332:
-                        if (curChar == 45) {
-                            jjCheckNAdd(333);
-                        }
-                        break;
-                    case 334:
-                        if ((0x3ff200000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddTwoStates(334, 335);
-                        break;
-                    case 336:
-                        if ((0xffffffff00000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddTwoStates(334, 335);
-                        break;
-                    case 337:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(508, 511);
-                        break;
-                    case 338:
-                        if ((0x100003600L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddTwoStates(334, 335);
-                        break;
-                    case 339:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(512, 518);
-                        break;
-                    case 340:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(519, 521);
-                        break;
-                    case 341:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(522, 525);
-                        break;
-                    case 342:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(526, 530);
-                        break;
-                    case 343:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(531, 536);
-                        break;
-                    case 346:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(537, 540);
-                        break;
-                    case 347:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(541, 547);
-                        break;
-                    case 348:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(548, 550);
-                        break;
-                    case 349:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(551, 554);
-                        break;
-                    case 350:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(555, 559);
-                        break;
-                    case 351:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(560, 565);
-                        break;
-                    case 353:
-                        if (curChar == 40) {
-                            jjCheckNAddStates(566, 571);
-                        }
-                        break;
-                    case 354:
-                        if ((0xfffffc7a00000000L & l) != 0L) {
-                            jjCheckNAddStates(572, 575);
-                        }
-                        break;
-                    case 355:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddTwoStates(355, 356);
-                        }
-                        break;
-                    case 356:
-                        if (curChar == 41 && kind > 75) {
-                            kind = 75;
-                        }
-                        break;
-                    case 358:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(572, 575);
-                        }
-                        break;
-                    case 359:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(576, 580);
-                        }
-                        break;
-                    case 360:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(572, 575);
-                        }
-                        break;
-                    case 361:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(581, 588);
-                        }
-                        break;
-                    case 362:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(589, 592);
-                        }
-                        break;
-                    case 363:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(593, 597);
-                        }
-                        break;
-                    case 364:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(598, 603);
-                        }
-                        break;
-                    case 365:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(604, 610);
-                        }
-                        break;
-                    case 366:
-                        if (curChar == 39) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 367:
-                        if ((0xffffff7f00000200L & l) != 0L) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 368:
-                        if (curChar == 39) {
-                            jjCheckNAddTwoStates(355, 356);
-                        }
-                        break;
-                    case 370:
-                        if (curChar == 12) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 372:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 373:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(615, 620);
-                        }
-                        break;
-                    case 374:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 375:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(621, 629);
-                        }
-                        break;
-                    case 376:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(630, 634);
-                        }
-                        break;
-                    case 377:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(635, 640);
-                        }
-                        break;
-                    case 378:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(641, 647);
-                        }
-                        break;
-                    case 379:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(648, 655);
-                        }
-                        break;
-                    case 380:
-                        if (curChar == 13) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 381:
-                        if (curChar == 10) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 382:
-                        if (curChar == 13) {
-                            jjstateSet[jjnewStateCnt++] = 381;
-                        }
-                        break;
-                    case 383:
-                        if (curChar == 34) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 384:
-                        if ((0xfffffffb00000200L & l) != 0L) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 385:
-                        if (curChar == 34) {
-                            jjCheckNAddTwoStates(355, 356);
-                        }
-                        break;
-                    case 387:
-                        if (curChar == 12) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 389:
-                        if ((0xffffffff00000000L & l) != 0L) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 390:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(660, 665);
-                        }
-                        break;
-                    case 391:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 392:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(666, 674);
-                        }
-                        break;
-                    case 393:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(675, 679);
-                        }
-                        break;
-                    case 394:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(680, 685);
-                        }
-                        break;
-                    case 395:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(686, 692);
-                        }
-                        break;
-                    case 396:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(693, 700);
-                        }
-                        break;
-                    case 397:
-                        if (curChar == 13) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 398:
-                        if (curChar == 10) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 399:
-                        if (curChar == 13) {
-                            jjstateSet[jjnewStateCnt++] = 398;
-                        }
-                        break;
-                    case 400:
-                        if ((0x100003600L & l) != 0L) {
-                            jjCheckNAddStates(701, 707);
-                        }
-                        break;
-                    case 403:
-                        if (curChar == 43) {
-                            jjAddStates(708, 709);
-                        }
-                        break;
-                    case 404:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 405;
-                        break;
-                    case 405:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(710, 713);
-                        break;
-                    case 406:
-                        if (curChar == 63 && kind > 114) {
-                            kind = 114;
-                        }
-                        break;
-                    case 407:
-                    case 422:
-                    case 426:
-                    case 429:
-                    case 432:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAdd(406);
-                        break;
-                    case 408:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddTwoStates(406, 407);
-                        break;
-                    case 409:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(714, 716);
-                        break;
-                    case 410:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjAddStates(717, 722);
-                        break;
-                    case 411:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 412;
-                        }
-                        break;
-                    case 412:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 413;
-                        }
-                        break;
-                    case 413:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAdd(414);
-                        }
-                        break;
-                    case 414:
-                        if ((0x3ff000000000000L & l) != 0L && kind > 114) {
-                            kind = 114;
-                        }
-                        break;
-                    case 415:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 416;
-                        }
-                        break;
-                    case 416:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 417;
-                        }
-                        break;
-                    case 417:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 418;
-                        }
-                        break;
-                    case 418:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAdd(406);
-                        break;
-                    case 419:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 420;
-                        }
-                        break;
-                    case 420:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 421;
-                        }
-                        break;
-                    case 421:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 422;
-                        break;
-                    case 423:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 424;
-                        }
-                        break;
-                    case 424:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 425;
-                        break;
-                    case 425:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddTwoStates(406, 426);
-                        break;
-                    case 427:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 428;
-                        break;
-                    case 428:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(723, 725);
-                        break;
-                    case 430:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddTwoStates(406, 429);
-                        break;
-                    case 431:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(726, 729);
-                        break;
-                    case 433:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddTwoStates(406, 432);
-                        break;
-                    case 434:
-                        if (curChar != 63) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(730, 732);
-                        break;
-                    case 435:
-                        if (curChar == 43) {
-                            jjstateSet[jjnewStateCnt++] = 436;
-                        }
-                        break;
-                    case 436:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(437, 443);
-                        }
-                        break;
-                    case 437:
-                        if (curChar == 45) {
-                            jjstateSet[jjnewStateCnt++] = 438;
-                        }
-                        break;
-                    case 438:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 439;
-                        break;
-                    case 439:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(733, 736);
-                        break;
-                    case 440:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAdd(414);
-                        break;
-                    case 441:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddTwoStates(414, 440);
-                        break;
-                    case 442:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(737, 739);
-                        break;
-                    case 443:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(740, 744);
-                        }
-                        break;
-                    case 444:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAdd(437);
-                        }
-                        break;
-                    case 445:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(444, 437);
-                        }
-                        break;
-                    case 446:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(745, 747);
-                        }
-                        break;
-                    case 447:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(748, 751);
-                        }
-                        break;
-                    case 449:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(752, 755);
-                        break;
-                    case 450:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(756, 762);
-                        break;
-                    case 451:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(763, 765);
-                        break;
-                    case 452:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(766, 769);
-                        break;
-                    case 453:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(770, 774);
-                        break;
-                    case 454:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(775, 780);
-                        break;
-                    case 455:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(781, 785);
-                        }
-                        break;
-                    case 456:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(786, 793);
-                        }
-                        break;
-                    case 458:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(794, 798);
-                        }
-                        break;
-                    case 459:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(799, 804);
-                        }
-                        break;
-                    case 460:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(805, 811);
-                        }
-                        break;
-                    case 461:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 73) {
-                            kind = 73;
-                        }
-                        jjCheckNAddStates(12, 93);
-                        break;
-                    case 462:
-                        if ((0x3ff000000000000L & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 73) {
-                            kind = 73;
-                        }
-                        jjCheckNAdd(462);
-                        break;
-                    case 463:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(463, 464);
-                        }
-                        break;
-                    case 464:
-                        if (curChar == 46) {
-                            jjCheckNAdd(271);
-                        }
-                        break;
-                    case 465:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(465, 273);
-                        }
-                        break;
-                    case 466:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(466, 467);
-                        }
-                        break;
-                    case 467:
-                        if (curChar == 46) {
-                            jjCheckNAdd(272);
-                        }
-                        break;
-                    case 468:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(468, 276);
-                        }
-                        break;
-                    case 469:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(469, 470);
-                        }
-                        break;
-                    case 470:
-                        if (curChar == 46) {
-                            jjCheckNAdd(274);
-                        }
-                        break;
-                    case 471:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(471, 279);
-                        }
-                        break;
-                    case 472:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(472, 473);
-                        }
-                        break;
-                    case 473:
-                        if (curChar == 46) {
-                            jjCheckNAdd(277);
-                        }
-                        break;
-                    case 474:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(474, 282);
-                        }
-                        break;
-                    case 475:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(475, 476);
-                        }
-                        break;
-                    case 476:
-                        if (curChar == 46) {
-                            jjCheckNAdd(280);
-                        }
-                        break;
-                    case 477:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(477, 285);
-                        }
-                        break;
-                    case 478:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(478, 479);
-                        }
-                        break;
-                    case 479:
-                        if (curChar == 46) {
-                            jjCheckNAdd(283);
-                        }
-                        break;
-                    case 480:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(480, 288);
-                        }
-                        break;
-                    case 481:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(481, 482);
-                        }
-                        break;
-                    case 482:
-                        if (curChar == 46) {
-                            jjCheckNAdd(286);
-                        }
-                        break;
-                    case 483:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(483, 291);
-                        }
-                        break;
-                    case 484:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(484, 485);
-                        }
-                        break;
-                    case 485:
-                        if (curChar == 46) {
-                            jjCheckNAdd(289);
-                        }
-                        break;
-                    case 486:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(486, 294);
-                        }
-                        break;
-                    case 487:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(487, 488);
-                        }
-                        break;
-                    case 488:
-                        if (curChar == 46) {
-                            jjCheckNAdd(292);
-                        }
-                        break;
-                    case 489:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(489, 298);
-                        }
-                        break;
-                    case 490:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(490, 491);
-                        }
-                        break;
-                    case 491:
-                        if (curChar == 46) {
-                            jjCheckNAdd(295);
-                        }
-                        break;
-                    case 492:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(492, 302);
-                        }
-                        break;
-                    case 493:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(493, 494);
-                        }
-                        break;
-                    case 494:
-                        if (curChar == 46) {
-                            jjCheckNAdd(299);
-                        }
-                        break;
-                    case 495:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(495, 305);
-                        }
-                        break;
-                    case 496:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(496, 497);
-                        }
-                        break;
-                    case 497:
-                        if (curChar == 46) {
-                            jjCheckNAdd(303);
-                        }
-                        break;
-                    case 498:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(498, 309);
-                        }
-                        break;
-                    case 499:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(499, 500);
-                        }
-                        break;
-                    case 500:
-                        if (curChar == 46) {
-                            jjCheckNAdd(306);
-                        }
-                        break;
-                    case 501:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(501, 313);
-                        }
-                        break;
-                    case 502:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(502, 503);
-                        }
-                        break;
-                    case 503:
-                        if (curChar == 46) {
-                            jjCheckNAdd(310);
-                        }
-                        break;
-                    case 504:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(504, 318);
-                        }
-                        break;
-                    case 505:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(505, 506);
-                        }
-                        break;
-                    case 506:
-                        if (curChar == 46) {
-                            jjCheckNAdd(314);
-                        }
-                        break;
-                    case 507:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(507, 321);
-                        }
-                        break;
-                    case 508:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(508, 509);
-                        }
-                        break;
-                    case 509:
-                        if (curChar == 46) {
-                            jjCheckNAdd(319);
-                        }
-                        break;
-                    case 510:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(510, 323);
-                        }
-                        break;
-                    case 511:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(511, 512);
-                        }
-                        break;
-                    case 512:
-                        if (curChar == 46) {
-                            jjCheckNAdd(322);
-                        }
-                        break;
-                    case 513:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(513, 326);
-                        }
-                        break;
-                    case 514:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(514, 515);
-                        }
-                        break;
-                    case 515:
-                        if (curChar == 46) {
-                            jjCheckNAdd(324);
-                        }
-                        break;
-                    case 516:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(516, 330);
-                        }
-                        break;
-                    case 517:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(517, 518);
-                        }
-                        break;
-                    case 518:
-                        if (curChar == 46) {
-                            jjCheckNAdd(327);
-                        }
-                        break;
-                    case 519:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddStates(812, 816);
-                        }
-                        break;
-                    case 520:
-                        if ((0x3ff000000000000L & l) != 0L) {
-                            jjCheckNAddTwoStates(520, 521);
-                        }
-                        break;
-                    case 521:
-                        if (curChar == 46) {
-                            jjCheckNAdd(331);
-                        }
-                        break;
-                    default:
-                        break;
-                    }
-                } while (i != startsAt);
-            } else if (curChar < 128) {
-                long l = 1L << (curChar & 077);
-                do {
-                    switch (jjstateSet[--i]) {
-                    case 524:
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 264;
-                        } else if ((0x1000000010L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 254;
-                        }
-                        break;
-                    case 162:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 121);
-                        }
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 161;
-                        }
-                        break;
-                    case 29:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(227, 228);
-                        }
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(239, 240);
-                        }
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 28;
-                        }
-                        break;
-                    case 171:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 112);
-                        }
-                        break;
-                    case 525:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 112);
-                        }
-                        break;
-                    case 38:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        }
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 37;
-                        }
-                        break;
-                    case 173:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 112);
-                        }
-                        if ((0x8000000080000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 211;
-                        } else if ((0x800000008000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 172;
-                        }
-                        break;
-                    case 24:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddStates(817, 822);
-                        } else if (curChar == 92) {
-                            jjCheckNAddStates(823, 826);
-                        } else if (curChar == 64) {
-                            jjAddStates(827, 831);
-                        }
-                        if ((0x20000000200000L & l) != 0L) {
-                            jjAddStates(832, 834);
-                        } else if ((0x800000008L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 151;
-                        } else if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 141;
-                        } else if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 133;
-                        } else if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 29;
-                        } else if (curChar == 64) {
-                            jjAddStates(835, 838);
-                        }
-                        break;
-                    case 172:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 112);
-                        }
-                        if ((0x400000004000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 171;
-                        }
-                        break;
-                    case 170:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 112);
-                        }
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 169;
-                        }
-                        break;
-                    case 174:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 103) {
-                                kind = 103;
-                            }
-                            jjCheckNAddTwoStates(109, 110);
-                        }
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 212;
-                        } else if ((0x80000000800000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 200;
-                        } else if ((0x800000008000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 184;
-                        }
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 173;
-                        }
-                        break;
-                    case 75:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 76) {
-                                kind = 76;
-                            }
-                            jjCheckNAddTwoStates(77, 78);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(79, 89);
-                        }
-                        break;
-                    case 522:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(227, 228);
-                        }
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        } else if (curChar == 92) {
-                            jjCheckNAddTwoStates(239, 240);
-                        }
-                        break;
-                    case 1:
-                        if (curChar == 123) {
-                            jjstateSet[jjnewStateCnt++] = 2;
-                        }
-                        break;
-                    case 4:
-                    case 5:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            jjCheckNAddStates(138, 140);
-                        }
-                        break;
-                    case 6:
-                        if (curChar == 125 && kind > 39) {
-                            kind = 39;
-                        }
-                        break;
-                    case 7:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(8, 9);
-                        }
-                        break;
-                    case 8:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(138, 140);
-                        }
-                        break;
-                    case 9:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(141, 145);
-                        }
-                        break;
-                    case 11:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(146, 153);
-                        }
-                        break;
-                    case 12:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(154, 157);
-                        }
-                        break;
-                    case 13:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(158, 162);
-                        }
-                        break;
-                    case 14:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(163, 168);
-                        }
-                        break;
-                    case 15:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(169, 175);
-                        }
-                        break;
-                    case 17:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(8, 18);
-                        }
-                        break;
-                    case 18:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(176, 180);
-                        }
-                        break;
-                    case 19:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(181, 188);
-                        }
-                        break;
-                    case 20:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(189, 192);
-                        }
-                        break;
-                    case 21:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(193, 197);
-                        }
-                        break;
-                    case 22:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(198, 203);
-                        }
-                        break;
-                    case 23:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(204, 210);
-                        }
-                        break;
-                    case 25:
-                        if ((0x4000000040000L & l) != 0L && kind > 68) {
-                            kind = 68;
-                        }
-                        break;
-                    case 26:
-                    case 31:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjCheckNAdd(25);
-                        }
-                        break;
-                    case 27:
-                        if ((0x10000000100000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 26;
-                        }
-                        break;
-                    case 28:
-                        if ((0x100000001000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 27;
-                        }
-                        break;
-                    case 30:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 29;
-                        }
-                        break;
-                    case 32:
-                        if ((0x10000000100000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 31;
-                        }
-                        break;
-                    case 33:
-                        if ((0x100000001000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 32;
-                        }
-                        break;
-                    case 34:
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 33;
-                        }
-                        break;
-                    case 35:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 34;
-                        }
-                        break;
-                    case 37:
-                        if ((0x8000000080000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 36;
-                        }
-                        break;
-                    case 41:
-                    case 46:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 43:
-                        if (curChar == 92) {
-                            jjAddStates(839, 842);
-                        }
-                        break;
-                    case 45:
-                        if (curChar == 92) {
-                            jjAddStates(843, 844);
-                        }
-                        break;
-                    case 47:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(211, 216);
-                        }
-                        break;
-                    case 49:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(217, 225);
-                        }
-                        break;
-                    case 50:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(226, 230);
-                        }
-                        break;
-                    case 51:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(231, 236);
-                        }
-                        break;
-                    case 52:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(237, 243);
-                        }
-                        break;
-                    case 53:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(244, 251);
-                        }
-                        break;
-                    case 58:
-                    case 63:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 60:
-                        if (curChar == 92) {
-                            jjAddStates(845, 848);
-                        }
-                        break;
-                    case 62:
-                        if (curChar == 92) {
-                            jjAddStates(849, 850);
-                        }
-                        break;
-                    case 64:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(252, 257);
-                        }
-                        break;
-                    case 66:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(258, 266);
-                        }
-                        break;
-                    case 67:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(267, 271);
-                        }
-                        break;
-                    case 68:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(272, 277);
-                        }
-                        break;
-                    case 69:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(278, 284);
-                        }
-                        break;
-                    case 70:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(285, 292);
-                        }
-                        break;
-                    case 76:
-                    case 77:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddTwoStates(77, 78);
-                        break;
-                    case 78:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(79, 80);
-                        }
-                        break;
-                    case 79:
-                        if ((0x7fffffffffffffffL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddTwoStates(77, 78);
-                        break;
-                    case 80:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(293, 296);
-                        break;
-                    case 82:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(297, 303);
-                        break;
-                    case 83:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(304, 306);
-                        break;
-                    case 84:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(307, 310);
-                        break;
-                    case 85:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(311, 315);
-                        break;
-                    case 86:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(316, 321);
-                        break;
-                    case 88:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(79, 89);
-                        }
-                        break;
-                    case 89:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(322, 325);
-                        break;
-                    case 90:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(326, 332);
-                        break;
-                    case 91:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(333, 335);
-                        break;
-                    case 92:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(336, 339);
-                        break;
-                    case 93:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(340, 344);
-                        break;
-                    case 94:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddStates(345, 350);
-                        break;
-                    case 96:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddTwoStates(96, 97);
-                        break;
-                    case 97:
-                        if (curChar == 92) {
-                            jjAddStates(851, 852);
-                        }
-                        break;
-                    case 98:
-                        if ((0x7fffffffffffffffL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddTwoStates(96, 97);
-                        break;
-                    case 99:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(351, 354);
-                        break;
-                    case 101:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(355, 361);
-                        break;
-                    case 102:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(362, 364);
-                        break;
-                    case 103:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(365, 368);
-                        break;
-                    case 104:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(369, 373);
-                        break;
-                    case 105:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddStates(374, 379);
-                        break;
-                    case 106:
-                        if (curChar == 64) {
-                            jjAddStates(835, 838);
-                        }
-                        break;
-                    case 108:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 109:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 110:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 112);
-                        }
-                        break;
-                    case 111:
-                        if ((0x7fffffffffffffffL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 112:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(380, 383);
-                        break;
-                    case 114:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(384, 390);
-                        break;
-                    case 115:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(391, 393);
-                        break;
-                    case 116:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(394, 397);
-                        break;
-                    case 117:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(398, 402);
-                        break;
-                    case 118:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(403, 408);
-                        break;
-                    case 120:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(111, 121);
-                        }
-                        break;
-                    case 121:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(409, 412);
-                        break;
-                    case 122:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(413, 419);
-                        break;
-                    case 123:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(420, 422);
-                        break;
-                    case 124:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(423, 426);
-                        break;
-                    case 125:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(427, 431);
-                        break;
-                    case 126:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddStates(432, 437);
-                        break;
-                    case 127:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjAddStates(438, 439);
-                        }
-                        break;
-                    case 130:
-                        if ((0x40000000400000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 127;
-                        }
-                        break;
-                    case 131:
-                        if ((0x800000008000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 130;
-                        }
-                        break;
-                    case 132:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 131;
-                        }
-                        break;
-                    case 133:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 132;
-                        }
-                        break;
-                    case 134:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 133;
-                        }
-                        break;
-                    case 135:
-                        if ((0x1000000010L & l) != 0L) {
-                            jjAddStates(440, 441);
-                        }
-                        break;
-                    case 138:
-                        if ((0x400000004000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 135;
-                        }
-                        break;
-                    case 139:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 138;
-                        }
-                        break;
-                    case 140:
-                        if ((0x1000000010000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 139;
-                        }
-                        break;
-                    case 141:
-                        if ((0x1000000010000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 140;
-                        }
-                        break;
-                    case 142:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 141;
-                        }
-                        break;
-                    case 143:
-                        if ((0x8000000080000L & l) != 0L) {
-                            jjAddStates(442, 443);
-                        }
-                        break;
-                    case 146:
-                        if ((0x400000004000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 143;
-                        }
-                        break;
-                    case 147:
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 146;
-                        }
-                        break;
-                    case 148:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 147;
-                        }
-                        break;
-                    case 149:
-                        if ((0x10000000100000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 148;
-                        }
-                        break;
-                    case 150:
-                        if ((0x400000004000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 149;
-                        }
-                        break;
-                    case 151:
-                        if ((0x800000008000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 150;
-                        }
-                        break;
-                    case 152:
-                        if ((0x800000008L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 151;
-                        }
-                        break;
-                    case 153:
-                        if (curChar == 64) {
-                            jjAddStates(827, 831);
-                        }
-                        break;
-                    case 154:
-                        if ((0x8000000080000L & l) != 0L && kind > 102) {
-                            kind = 102;
-                        }
-                        break;
-                    case 155:
-                    case 163:
-                    case 176:
-                    case 187:
-                    case 203:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjCheckNAdd(154);
-                        }
-                        break;
-                    case 156:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 155;
-                        }
-                        break;
-                    case 157:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 156;
-                        }
-                        break;
-                    case 158:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 157;
-                        }
-                        break;
-                    case 159:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 158;
-                        }
-                        break;
-                    case 160:
-                        if ((0x200000002000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 159;
-                        }
-                        break;
-                    case 161:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 160;
-                        }
-                        break;
-                    case 164:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 163;
-                        }
-                        break;
-                    case 165:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 164;
-                        }
-                        break;
-                    case 166:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 165;
-                        }
-                        break;
-                    case 167:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 166;
-                        }
-                        break;
-                    case 168:
-                        if ((0x200000002000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 167;
-                        }
-                        break;
-                    case 169:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 168;
-                        }
-                        break;
-                    case 177:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 176;
-                        }
-                        break;
-                    case 178:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 177;
-                        }
-                        break;
-                    case 179:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 178;
-                        }
-                        break;
-                    case 180:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 179;
-                        }
-                        break;
-                    case 181:
-                        if ((0x200000002000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 180;
-                        }
-                        break;
-                    case 182:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 181;
-                        }
-                        break;
-                    case 183:
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 182;
-                        }
-                        break;
-                    case 185:
-                        if ((0x800000008000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 184;
-                        }
-                        break;
-                    case 188:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 187;
-                        }
-                        break;
-                    case 189:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 188;
-                        }
-                        break;
-                    case 190:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 189;
-                        }
-                        break;
-                    case 191:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 190;
-                        }
-                        break;
-                    case 192:
-                        if ((0x200000002000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 191;
-                        }
-                        break;
-                    case 193:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 192;
-                        }
-                        break;
-                    case 194:
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 193;
-                        }
-                        break;
-                    case 196:
-                        if ((0x10000000100000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 195;
-                        }
-                        break;
-                    case 197:
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 196;
-                        }
-                        break;
-                    case 198:
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 197;
-                        }
-                        break;
-                    case 199:
-                        if ((0x400000004L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 198;
-                        }
-                        break;
-                    case 200:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 199;
-                        }
-                        break;
-                    case 201:
-                        if ((0x80000000800000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 200;
-                        }
-                        break;
-                    case 204:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 203;
-                        }
-                        break;
-                    case 205:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 204;
-                        }
-                        break;
-                    case 206:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 205;
-                        }
-                        break;
-                    case 207:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 206;
-                        }
-                        break;
-                    case 208:
-                        if ((0x200000002000000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 207;
-                        }
-                        break;
-                    case 209:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 208;
-                        }
-                        break;
-                    case 210:
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 209;
-                        }
-                        break;
-                    case 212:
-                        if ((0x8000000080000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 211;
-                        }
-                        break;
-                    case 213:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 212;
-                        }
-                        break;
-                    case 217:
-                        if (kind > 2) {
-                            kind = 2;
-                        }
-                        jjAddStates(9, 11);
-                        break;
-                    case 222:
-                        if (kind > 3) {
-                            kind = 3;
-                        }
-                        break;
-                    case 225:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 226:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(227, 228);
-                        }
-                        break;
-                    case 227:
-                        if ((0x7fffffffffffffffL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 228:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(444, 447);
-                        break;
-                    case 230:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(448, 454);
-                        break;
-                    case 231:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(455, 457);
-                        break;
-                    case 232:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(458, 461);
-                        break;
-                    case 233:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(462, 466);
-                        break;
-                    case 234:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(467, 472);
-                        break;
-                    case 235:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 238:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(239, 240);
-                        }
-                        break;
-                    case 239:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 240:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(473, 477);
-                        }
-                        break;
-                    case 242:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(478, 485);
-                        }
-                        break;
-                    case 243:
-                    case 457:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(486, 489);
-                        }
-                        break;
-                    case 244:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(490, 494);
-                        }
-                        break;
-                    case 245:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(495, 500);
-                        }
-                        break;
-                    case 246:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(501, 507);
-                        }
-                        break;
-                    case 249:
-                        if ((0x10000000100000L & l) != 0L && kind > 70) {
-                            kind = 70;
-                        }
-                        break;
-                    case 250:
-                        if ((0x100000001000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 249;
-                        }
-                        break;
-                    case 251:
-                        if ((0x20000000200000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 250;
-                        }
-                        break;
-                    case 252:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 251;
-                        }
-                        break;
-                    case 253:
-                        if ((0x4000000040L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 252;
-                        }
-                        break;
-                    case 254:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 253;
-                        }
-                        break;
-                    case 255:
-                        if ((0x1000000010L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 254;
-                        }
-                        break;
-                    case 257:
-                        if ((0x10000000100000L & l) != 0L && kind > 104) {
-                            kind = 104;
-                        }
-                        break;
-                    case 258:
-                        if ((0x400000004000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 257;
-                        }
-                        break;
-                    case 259:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 258;
-                        }
-                        break;
-                    case 260:
-                        if ((0x10000000100000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 259;
-                        }
-                        break;
-                    case 261:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 260;
-                        }
-                        break;
-                    case 262:
-                        if ((0x800000008000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 261;
-                        }
-                        break;
-                    case 263:
-                        if ((0x1000000010000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 262;
-                        }
-                        break;
-                    case 264:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 263;
-                        }
-                        break;
-                    case 265:
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 264;
-                        }
-                        break;
-                    case 267:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 268:
-                        if ((0x7fffffe87fffffeL & l) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 269:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(817, 822);
-                        break;
-                    case 275:
-                        if ((0x10000000100000L & l) != 0L && kind > 78) {
-                            kind = 78;
-                        }
-                        break;
-                    case 276:
-                        if ((0x1000000010000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 275;
-                        }
-                        break;
-                    case 278:
-                        if ((0x200000002000L & l) != 0L && kind > 79) {
-                            kind = 79;
-                        }
-                        break;
-                    case 279:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 278;
-                        }
-                        break;
-                    case 281:
-                        if ((0x200000002000L & l) != 0L && kind > 80) {
-                            kind = 80;
-                        }
-                        break;
-                    case 282:
-                        if ((0x800000008L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 281;
-                        }
-                        break;
-                    case 284:
-                        if ((0x800000008L & l) != 0L && kind > 81) {
-                            kind = 81;
-                        }
-                        break;
-                    case 285:
-                        if ((0x1000000010000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 284;
-                        }
-                        break;
-                    case 287:
-                        if ((0x400000004000L & l) != 0L && kind > 82) {
-                            kind = 82;
-                        }
-                        break;
-                    case 288:
-                        if ((0x20000000200L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 287;
-                        }
-                        break;
-                    case 290:
-                        if ((0x100000001000000L & l) != 0L && kind > 83) {
-                            kind = 83;
-                        }
-                        break;
-                    case 291:
-                        if ((0x1000000010000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 290;
-                        }
-                        break;
-                    case 293:
-                        if ((0x200000002000L & l) != 0L && kind > 84) {
-                            kind = 84;
-                        }
-                        break;
-                    case 294:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 293;
-                        }
-                        break;
-                    case 296:
-                        if ((0x200000002000L & l) != 0L && kind > 85) {
-                            kind = 85;
-                        }
-                        break;
-                    case 297:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 296;
-                        }
-                        break;
-                    case 298:
-                        if ((0x100000001000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 297;
-                        }
-                        break;
-                    case 300:
-                        if ((0x200000002000L & l) != 0L && kind > 86) {
-                            kind = 86;
-                        }
-                        break;
-                    case 301:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 300;
-                        }
-                        break;
-                    case 302:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 301;
-                        }
-                        break;
-                    case 304:
-                        if ((0x100000001000000L & l) != 0L && kind > 87) {
-                            kind = 87;
-                        }
-                        break;
-                    case 305:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 304;
-                        }
-                        break;
-                    case 307:
-                        if ((0x8000000080L & l) != 0L && kind > 88) {
-                            kind = 88;
-                        }
-                        break;
-                    case 308:
-                        if ((0x2000000020L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 307;
-                        }
-                        break;
-                    case 309:
-                        if ((0x1000000010L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 308;
-                        }
-                        break;
-                    case 311:
-                        if ((0x1000000010L & l) != 0L && kind > 89) {
-                            kind = 89;
-                        }
-                        break;
-                    case 312:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 311;
-                        }
-                        break;
-                    case 313:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 312;
-                        }
-                        break;
-                    case 315:
-                        if ((0x1000000010L & l) != 0L && kind > 90) {
-                            kind = 90;
-                        }
-                        break;
-                    case 316:
-                        if ((0x200000002L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 315;
-                        }
-                        break;
-                    case 317:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 316;
-                        }
-                        break;
-                    case 318:
-                        if ((0x8000000080L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 317;
-                        }
-                        break;
-                    case 320:
-                        if ((0x8000000080000L & l) != 0L && kind > 91) {
-                            kind = 91;
-                        }
-                        break;
-                    case 321:
-                        if ((0x200000002000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 320;
-                        }
-                        break;
-                    case 323:
-                        if ((0x8000000080000L & l) != 0L && kind > 92) {
-                            kind = 92;
-                        }
-                        break;
-                    case 325:
-                        if ((0x400000004000000L & l) != 0L && kind > 93) {
-                            kind = 93;
-                        }
-                        break;
-                    case 326:
-                        if ((0x10000000100L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 325;
-                        }
-                        break;
-                    case 328:
-                        if ((0x400000004000000L & l) != 0L && kind > 94) {
-                            kind = 94;
-                        }
-                        break;
-                    case 329:
-                        if ((0x10000000100L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 328;
-                        }
-                        break;
-                    case 330:
-                        if ((0x80000000800L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 329;
-                        }
-                        break;
-                    case 333:
-                    case 334:
-                        if ((0x7fffffe87fffffeL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddTwoStates(334, 335);
-                        break;
-                    case 335:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(336, 337);
-                        }
-                        break;
-                    case 336:
-                        if ((0x7fffffffffffffffL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddTwoStates(334, 335);
-                        break;
-                    case 337:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(508, 511);
-                        break;
-                    case 339:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(512, 518);
-                        break;
-                    case 340:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(519, 521);
-                        break;
-                    case 341:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(522, 525);
-                        break;
-                    case 342:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(526, 530);
-                        break;
-                    case 343:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(531, 536);
-                        break;
-                    case 345:
-                        if (curChar == 92) {
-                            jjCheckNAddTwoStates(336, 346);
-                        }
-                        break;
-                    case 346:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(537, 540);
-                        break;
-                    case 347:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(541, 547);
-                        break;
-                    case 348:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(548, 550);
-                        break;
-                    case 349:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(551, 554);
-                        break;
-                    case 350:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(555, 559);
-                        break;
-                    case 351:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddStates(560, 565);
-                        break;
-                    case 352:
-                        if ((0x20000000200000L & l) != 0L) {
-                            jjAddStates(832, 834);
-                        }
-                        break;
-                    case 354:
-                    case 358:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(572, 575);
-                        }
-                        break;
-                    case 357:
-                        if (curChar == 92) {
-                            jjAddStates(853, 854);
-                        }
-                        break;
-                    case 359:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(576, 580);
-                        }
-                        break;
-                    case 361:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(581, 588);
-                        }
-                        break;
-                    case 362:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(589, 592);
-                        }
-                        break;
-                    case 363:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(593, 597);
-                        }
-                        break;
-                    case 364:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(598, 603);
-                        }
-                        break;
-                    case 365:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(604, 610);
-                        }
-                        break;
-                    case 367:
-                    case 372:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 369:
-                        if (curChar == 92) {
-                            jjAddStates(855, 858);
-                        }
-                        break;
-                    case 371:
-                        if (curChar == 92) {
-                            jjAddStates(859, 860);
-                        }
-                        break;
-                    case 373:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(615, 620);
-                        }
-                        break;
-                    case 375:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(621, 629);
-                        }
-                        break;
-                    case 376:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(630, 634);
-                        }
-                        break;
-                    case 377:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(635, 640);
-                        }
-                        break;
-                    case 378:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(641, 647);
-                        }
-                        break;
-                    case 379:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(648, 655);
-                        }
-                        break;
-                    case 384:
-                    case 389:
-                        if ((0x7fffffffffffffffL & l) != 0L) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    case 386:
-                        if (curChar == 92) {
-                            jjAddStates(861, 864);
-                        }
-                        break;
-                    case 388:
-                        if (curChar == 92) {
-                            jjAddStates(865, 866);
-                        }
-                        break;
-                    case 390:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(660, 665);
-                        }
-                        break;
-                    case 392:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(666, 674);
-                        }
-                        break;
-                    case 393:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(675, 679);
-                        }
-                        break;
-                    case 394:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(680, 685);
-                        }
-                        break;
-                    case 395:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(686, 692);
-                        }
-                        break;
-                    case 396:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(693, 700);
-                        }
-                        break;
-                    case 401:
-                        if ((0x100000001000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 353;
-                        }
-                        break;
-                    case 402:
-                        if ((0x4000000040000L & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 401;
-                        }
-                        break;
-                    case 410:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjAddStates(717, 722);
-                        break;
-                    case 411:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 412;
-                        }
-                        break;
-                    case 412:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 413;
-                        }
-                        break;
-                    case 413:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAdd(414);
-                        }
-                        break;
-                    case 414:
-                        if ((0x7e0000007eL & l) != 0L && kind > 114) {
-                            kind = 114;
-                        }
-                        break;
-                    case 415:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 416;
-                        }
-                        break;
-                    case 416:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 417;
-                        }
-                        break;
-                    case 417:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 418;
-                        }
-                        break;
-                    case 418:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 406;
-                        break;
-                    case 419:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 420;
-                        }
-                        break;
-                    case 420:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 421;
-                        }
-                        break;
-                    case 421:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 422;
-                        break;
-                    case 423:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjstateSet[jjnewStateCnt++] = 424;
-                        }
-                        break;
-                    case 424:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 425;
-                        break;
-                    case 427:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 428;
-                        break;
-                    case 436:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddTwoStates(437, 443);
-                        }
-                        break;
-                    case 438:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjstateSet[jjnewStateCnt++] = 439;
-                        break;
-                    case 439:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(733, 736);
-                        break;
-                    case 440:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAdd(414);
-                        break;
-                    case 441:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddTwoStates(414, 440);
-                        break;
-                    case 442:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 114) {
-                            kind = 114;
-                        }
-                        jjCheckNAddStates(737, 739);
-                        break;
-                    case 443:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(740, 744);
-                        }
-                        break;
-                    case 444:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAdd(437);
-                        }
-                        break;
-                    case 445:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddTwoStates(444, 437);
-                        }
-                        break;
-                    case 446:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(745, 747);
-                        }
-                        break;
-                    case 447:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(748, 751);
-                        }
-                        break;
-                    case 448:
-                        if (curChar == 92) {
-                            jjCheckNAddStates(823, 826);
-                        }
-                        break;
-                    case 449:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(752, 755);
-                        break;
-                    case 450:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(756, 762);
-                        break;
-                    case 451:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(763, 765);
-                        break;
-                    case 452:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(766, 769);
-                        break;
-                    case 453:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(770, 774);
-                        break;
-                    case 454:
-                        if ((0x7e0000007eL & l) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddStates(775, 780);
-                        break;
-                    case 455:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(781, 785);
-                        }
-                        break;
-                    case 456:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(786, 793);
-                        }
-                        break;
-                    case 458:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(794, 798);
-                        }
-                        break;
-                    case 459:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(799, 804);
-                        }
-                        break;
-                    case 460:
-                        if ((0x7e0000007eL & l) != 0L) {
-                            jjCheckNAddStates(805, 811);
-                        }
-                        break;
-                    default:
-                        break;
-                    }
-                } while (i != startsAt);
-            } else {
-                int i2 = (curChar & 0xff) >> 6;
-                long l2 = 1L << (curChar & 077);
-                do {
-                    switch (jjstateSet[--i]) {
-                    case 162:
-                    case 111:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 29:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        }
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 171:
-                    case 109:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 525:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 173:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 24:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 40) {
-                            kind = 40;
-                        }
-                        jjCheckNAddStates(817, 822);
-                        break;
-                    case 172:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 170:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 103) {
-                            kind = 103;
-                        }
-                        jjCheckNAddTwoStates(109, 110);
-                        break;
-                    case 75:
-                    case 77:
-                    case 79:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 76) {
-                            kind = 76;
-                        }
-                        jjCheckNAddTwoStates(77, 78);
-                        break;
-                    case 522:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            if (kind > 72) {
-                                kind = 72;
-                            }
-                            jjCheckNAddTwoStates(225, 226);
-                        }
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 5:
-                    case 8:
-                    case 16:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(138, 140);
-                        }
-                        break;
-                    case 41:
-                    case 46:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(130, 133);
-                        }
-                        break;
-                    case 58:
-                    case 63:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(126, 129);
-                        }
-                        break;
-                    case 96:
-                    case 98:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 96) {
-                            kind = 96;
-                        }
-                        jjCheckNAddTwoStates(96, 97);
-                        break;
-                    case 217:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 2) {
-                            kind = 2;
-                        }
-                        jjAddStates(9, 11);
-                        break;
-                    case 222:
-                        if ((jjbitVec0[i2] & l2) != 0L && kind > 3) {
-                            kind = 3;
-                        }
-                        break;
-                    case 225:
-                    case 227:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 72) {
-                            kind = 72;
-                        }
-                        jjCheckNAddTwoStates(225, 226);
-                        break;
-                    case 235:
-                    case 239:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(0, 3);
-                        }
-                        break;
-                    case 334:
-                    case 336:
-                    case 344:
-                        if ((jjbitVec0[i2] & l2) == 0L) {
-                            break;
-                        }
-                        if (kind > 95) {
-                            kind = 95;
-                        }
-                        jjCheckNAddTwoStates(334, 335);
-                        break;
-                    case 354:
-                    case 358:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(572, 575);
-                        }
-                        break;
-                    case 367:
-                    case 372:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(611, 614);
-                        }
-                        break;
-                    case 384:
-                    case 389:
-                        if ((jjbitVec0[i2] & l2) != 0L) {
-                            jjCheckNAddStates(656, 659);
-                        }
-                        break;
-                    default:
-                        break;
-                    }
-                } while (i != startsAt);
-            }
-            if (kind != 0x7fffffff) {
-                jjmatchedKind = kind;
-                jjmatchedPos = curPos;
-                kind = 0x7fffffff;
-            }
-            ++curPos;
-            if ((i = jjnewStateCnt) == (startsAt = 522 - (jjnewStateCnt = startsAt))) {
-                return curPos;
-            }
-            try {
-                curChar = input_stream.readChar();
-            } catch (java.io.IOException e) {
-                return curPos;
-            }
-        }
-    }
+/** Get the next Token. */
+public Token getNextToken() 
+{
+  Token specialToken = null;
+  Token matchedToken;
+  int curPos = 0;
 
-    private int jjMoveStringLiteralDfa0_2() {
-        switch (curChar) {
-        case 42:
-            return jjMoveStringLiteralDfa1_2(0x40L);
-        default:
-            return 1;
-        }
-    }
+  EOFLoop :
+  for (;;)
+  {
+   try
+   {
+      curChar = input_stream.BeginToken();
+   }
+   catch(java.io.IOException e)
+   {
+      jjmatchedKind = 0;
+      matchedToken = jjFillToken();
+      matchedToken.specialToken = specialToken;
+      return matchedToken;
+   }
+   image = jjimage;
+   image.setLength(0);
+   jjimageLen = 0;
 
-    private int jjMoveStringLiteralDfa1_2(long active0) {
-        try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            return 1;
+   for (;;)
+   {
+     switch(curLexState)
+     {
+       case 0:
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_0();
+         if (jjmatchedPos == 0 && jjmatchedKind > 119)
+         {
+            jjmatchedKind = 119;
+         }
+         break;
+       case 1:
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_1();
+         if (jjmatchedPos == 0 && jjmatchedKind > 7)
+         {
+            jjmatchedKind = 7;
+         }
+         break;
+       case 2:
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_2();
+         if (jjmatchedPos == 0 && jjmatchedKind > 7)
+         {
+            jjmatchedKind = 7;
+         }
+         break;
+     }
+     if (jjmatchedKind != 0x7fffffff)
+     {
+        if (jjmatchedPos + 1 < curPos)
+           input_stream.backup(curPos - jjmatchedPos - 1);
+        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+        {
+           matchedToken = jjFillToken();
+           matchedToken.specialToken = specialToken;
+           TokenLexicalActions(matchedToken);
+       if (jjnewLexState[jjmatchedKind] != -1)
+         curLexState = jjnewLexState[jjmatchedKind];
+           return matchedToken;
         }
-        switch (curChar) {
-        case 47:
-            if ((active0 & 0x40L) != 0L) {
-                return jjStopAtPos(1, 6);
-            }
-            break;
-        default:
-            return 2;
+        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+        {
+           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+           {
+              matchedToken = jjFillToken();
+              if (specialToken == null)
+                 specialToken = matchedToken;
+              else
+              {
+                 matchedToken.specialToken = specialToken;
+                 specialToken = (specialToken.next = matchedToken);
+              }
+              SkipLexicalActions(matchedToken);
+           }
+           else
+              SkipLexicalActions(null);
+         if (jjnewLexState[jjmatchedKind] != -1)
+           curLexState = jjnewLexState[jjmatchedKind];
+           continue EOFLoop;
         }
-        return 2;
-    }
-
-    private int jjMoveStringLiteralDfa0_1() {
-        switch (curChar) {
-        case 42:
-            return jjMoveStringLiteralDfa1_1(0x20L);
-        default:
-            return 1;
-        }
-    }
-
-    private int jjMoveStringLiteralDfa1_1(long active0) {
+        MoreLexicalActions();
+      if (jjnewLexState[jjmatchedKind] != -1)
+        curLexState = jjnewLexState[jjmatchedKind];
+        curPos = 0;
+        jjmatchedKind = 0x7fffffff;
         try {
-            curChar = input_stream.readChar();
-        } catch (java.io.IOException e) {
-            return 1;
+           curChar = input_stream.readChar();
+           continue;
         }
-        switch (curChar) {
-        case 47:
-            if ((active0 & 0x20L) != 0L) {
-                return jjStopAtPos(1, 5);
-            }
-            break;
-        default:
-            return 2;
+        catch (java.io.IOException e1) { }
+     }
+     int error_line = input_stream.getEndLine();
+     int error_column = input_stream.getEndColumn();
+     String error_after = null;
+     boolean EOFSeen = false;
+     try { input_stream.readChar(); input_stream.backup(1); }
+     catch (java.io.IOException e1) {
+        EOFSeen = true;
+        error_after = curPos <= 1 ? "" : input_stream.GetImage();
+        if (curChar == '\n' || curChar == '\r') {
+           error_line++;
+           error_column = 0;
         }
-        return 2;
-    }
-
-    static final int[] jjnextStates = { 235, 236, 237, 238, 331, 332, 333, 344,
-            345, 217, 218, 220, 462, 463, 464, 465, 466, 467, 273, 468, 469,
-            470, 276, 471, 472, 473, 279, 474, 475, 476, 282, 477, 478, 479,
-            285, 480, 481, 482, 288, 483, 484, 485, 291, 486, 487, 488, 294,
-            489, 490, 491, 298, 492, 493, 494, 302, 495, 496, 497, 305, 498,
-            499, 500, 309, 501, 502, 503, 313, 504, 505, 506, 318, 507, 508,
-            509, 321, 510, 511, 512, 323, 513, 514, 515, 326, 516, 517, 518,
-            330, 519, 520, 521, 332, 333, 344, 345, 271, 272, 274, 277, 280,
-            283, 286, 289, 292, 295, 299, 303, 306, 310, 314, 319, 322, 324,
-            327, 331, 267, 268, 248, 255, 256, 265, 216, 223, 75, 76, 87, 88,
-            58, 59, 60, 62, 41, 42, 43, 45, 3, 4, 16, 17, 5, 6, 7, 5, 10, 6, 7,
-            11, 5, 12, 10, 6, 7, 13, 14, 15, 5, 10, 6, 7, 5, 12, 10, 6, 7, 5,
-            12, 10, 6, 7, 13, 5, 12, 10, 6, 7, 13, 14, 10, 5, 6, 7, 19, 20, 10,
-            5, 6, 7, 21, 22, 23, 10, 5, 6, 7, 20, 10, 5, 6, 7, 20, 10, 5, 6, 7,
-            21, 20, 10, 5, 6, 7, 21, 22, 41, 48, 42, 43, 45, 49, 41, 50, 48,
-            42, 43, 45, 51, 52, 53, 41, 48, 42, 43, 45, 41, 50, 48, 42, 43, 45,
-            41, 50, 48, 42, 43, 45, 51, 41, 50, 48, 42, 43, 45, 51, 52, 58, 65,
-            59, 60, 62, 66, 58, 67, 65, 59, 60, 62, 68, 69, 70, 58, 65, 59, 60,
-            62, 58, 67, 65, 59, 60, 62, 58, 67, 65, 59, 60, 62, 68, 58, 67, 65,
-            59, 60, 62, 68, 69, 77, 81, 78, 82, 77, 83, 81, 78, 84, 85, 86, 77,
-            81, 78, 77, 83, 81, 78, 77, 83, 81, 78, 84, 77, 83, 81, 78, 84, 85,
-            81, 77, 78, 90, 91, 81, 77, 78, 92, 93, 94, 81, 77, 78, 91, 81, 77,
-            78, 91, 81, 77, 78, 92, 91, 81, 77, 78, 92, 93, 96, 100, 97, 101,
-            96, 102, 100, 97, 103, 104, 105, 96, 100, 97, 96, 102, 100, 97, 96,
-            102, 100, 97, 103, 96, 102, 100, 97, 103, 104, 109, 113, 110, 114,
-            109, 115, 113, 110, 116, 117, 118, 109, 113, 110, 109, 115, 113,
-            110, 109, 115, 113, 110, 116, 109, 115, 113, 110, 116, 117, 113,
-            109, 110, 122, 123, 113, 109, 110, 124, 125, 126, 113, 109, 110,
-            123, 113, 109, 110, 123, 113, 109, 110, 124, 123, 113, 109, 110,
-            124, 125, 128, 129, 136, 137, 144, 145, 225, 229, 226, 230, 225,
-            231, 229, 226, 232, 233, 234, 225, 229, 226, 225, 231, 229, 226,
-            225, 231, 229, 226, 232, 225, 231, 229, 226, 232, 233, 235, 237,
-            238, 241, 242, 235, 243, 237, 238, 241, 244, 245, 246, 235, 237,
-            238, 241, 235, 243, 237, 238, 241, 235, 243, 237, 238, 241, 244,
-            235, 243, 237, 238, 241, 244, 245, 334, 338, 335, 339, 334, 340,
-            338, 335, 341, 342, 343, 334, 338, 335, 334, 340, 338, 335, 334,
-            340, 338, 335, 341, 334, 340, 338, 335, 341, 342, 338, 334, 335,
-            347, 348, 338, 334, 335, 349, 350, 351, 338, 334, 335, 348, 338,
-            334, 335, 348, 338, 334, 335, 349, 348, 338, 334, 335, 349, 350,
-            354, 366, 383, 356, 357, 400, 354, 355, 356, 357, 354, 356, 357,
-            360, 361, 354, 362, 356, 357, 360, 363, 364, 365, 354, 356, 357,
-            360, 354, 362, 356, 357, 360, 354, 362, 356, 357, 360, 363, 354,
-            362, 356, 357, 360, 363, 364, 367, 368, 369, 371, 367, 374, 368,
-            369, 371, 375, 367, 376, 374, 368, 369, 371, 377, 378, 379, 367,
-            374, 368, 369, 371, 367, 376, 374, 368, 369, 371, 367, 376, 374,
-            368, 369, 371, 377, 367, 376, 374, 368, 369, 371, 377, 378, 384,
-            385, 386, 388, 384, 391, 385, 386, 388, 392, 384, 393, 391, 385,
-            386, 388, 394, 395, 396, 384, 391, 385, 386, 388, 384, 393, 391,
-            385, 386, 388, 384, 393, 391, 385, 386, 388, 394, 384, 393, 391,
-            385, 386, 388, 394, 395, 354, 366, 383, 355, 356, 357, 400, 404,
-            410, 406, 407, 408, 409, 406, 407, 408, 411, 415, 419, 423, 427,
-            431, 406, 429, 430, 406, 432, 433, 434, 406, 432, 433, 414, 440,
-            441, 442, 414, 440, 441, 444, 437, 445, 446, 447, 444, 437, 445,
-            444, 437, 445, 446, 229, 225, 226, 450, 451, 229, 225, 226, 452,
-            453, 454, 229, 225, 226, 451, 229, 225, 226, 451, 229, 225, 226,
-            452, 451, 229, 225, 226, 452, 453, 235, 237, 238, 241, 456, 457,
-            235, 237, 238, 241, 458, 459, 460, 457, 235, 237, 238, 241, 457,
-            235, 237, 238, 241, 458, 457, 235, 237, 238, 241, 458, 459, 519,
-            332, 333, 344, 345, 225, 235, 236, 237, 238, 226, 227, 449, 239,
-            455, 162, 175, 186, 202, 214, 402, 403, 435, 107, 108, 119, 120,
-            44, 54, 56, 55, 46, 47, 61, 71, 73, 72, 63, 64, 98, 99, 358, 359,
-            370, 380, 382, 381, 372, 373, 387, 397, 399, 398, 389, 390, };
-
-    /** Token literal values. */
-    public static final String[] jjstrLiteralImages = { "", null, null, null,
-            null, null, null, null, "\74\41\55\55", "\55\55\76", "\173",
-            "\175", "\174\75", "\136\75", "\44\75", "\52\75", "\176\75", "\75",
-            "\53", "\55", "\54", "\73", "\76", "\176", "\74", "\57", "\133",
-            "\135", "\52", "\45", "\46", "\56", "\50", "\51", "\75\75",
-            "\174\174", "\46\46", "\41\75", "\72", null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null, null, null, null, null, null, null, null, null, };
-
-    /** Lexer state names. */
-    public static final String[] lexStateNames = { "DEFAULT",
-            "IN_FORMAL_COMMENT", "IN_MULTI_LINE_COMMENT", };
-
-    /** Lex State array. */
-    public static final int[] jjnewLexState = { -1, -1, -1, 1, 2, 0, 0, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, };
-    static final long[] jjtoToken = { 0xfffe01ffffffff03L, 0xfc01fffffffbffL, };
-    static final long[] jjtoSkip = { 0x64L, 0x0L, };
-    static final long[] jjtoSpecial = { 0x24L, 0x0L, };
-    static final long[] jjtoMore = { 0x98L, 0x0L, };
-    protected CharStream input_stream;
-    private final int[] jjrounds = new int[522];
-    private final int[] jjstateSet = new int[1044];
-    private final StringBuilder jjimage = new StringBuilder();
-    private StringBuilder image = jjimage;
-    private int jjimageLen;
-    private int lengthOfMatch;
-    protected char curChar;
-
-    /** Constructor. */
-    public ParserTokenManager(CharStream stream) {
-        input_stream = stream;
-    }
-
-    /** Constructor. */
-    public ParserTokenManager(CharStream stream, int lexState) {
-        this(stream);
-        SwitchTo(lexState);
-    }
-
-    /** Reinitialise parser. */
-    public void ReInit(CharStream stream) {
-        jjmatchedPos = jjnewStateCnt = 0;
-        curLexState = defaultLexState;
-        input_stream = stream;
-        ReInitRounds();
-    }
-
-    private void ReInitRounds() {
-        int i;
-        jjround = 0x80000001;
-        for (i = 522; i-- > 0;) {
-            jjrounds[i] = 0x80000000;
-        }
-    }
-
-    /** Reinitialise parser. */
-    public void ReInit(CharStream stream, int lexState) {
-        ReInit(stream);
-        SwitchTo(lexState);
-    }
-
-    /** Switch to specified lex state. */
-    public void SwitchTo(int lexState) {
-        if (lexState >= 3 || lexState < 0) {
-            throw new TokenMgrError("Error: Ignoring invalid lexical state : "
-                    + lexState + ". State unchanged.",
-                    TokenMgrError.INVALID_LEXICAL_STATE);
-        } else {
-            curLexState = lexState;
-        }
-    }
-
-    protected Token jjFillToken() {
-        final Token t;
-        final String curTokenImage;
-        final int beginLine;
-        final int endLine;
-        final int beginColumn;
-        final int endColumn;
-        String im = jjstrLiteralImages[jjmatchedKind];
-        curTokenImage = (im == null) ? input_stream.GetImage() : im;
-        beginLine = input_stream.getBeginLine();
-        beginColumn = input_stream.getBeginColumn();
-        endLine = input_stream.getEndLine();
-        endColumn = input_stream.getEndColumn();
-        t = Token.newToken(jjmatchedKind, curTokenImage);
-
-        t.beginLine = beginLine;
-        t.endLine = endLine;
-        t.beginColumn = beginColumn;
-        t.endColumn = endColumn;
-
-        return t;
-    }
-
-    int curLexState = 0;
-    int defaultLexState = 0;
-    int jjnewStateCnt;
-    int jjround;
-    int jjmatchedPos;
-    int jjmatchedKind;
-
-    /** Get the next Token. */
-    public Token getNextToken() {
-        Token specialToken = null;
-        Token matchedToken;
-        int curPos = 0;
-
-        EOFLoop: for (;;) {
-            try {
-                curChar = input_stream.BeginToken();
-            } catch (java.io.IOException e) {
-                jjmatchedKind = 0;
-                matchedToken = jjFillToken();
-                matchedToken.specialToken = specialToken;
-                return matchedToken;
-            }
-            image = jjimage;
-            image.setLength(0);
-            jjimageLen = 0;
-
-            for (;;) {
-                switch (curLexState) {
-                case 0:
-                    jjmatchedKind = 0x7fffffff;
-                    jjmatchedPos = 0;
-                    curPos = jjMoveStringLiteralDfa0_0();
-                    if (jjmatchedPos == 0 && jjmatchedKind > 119) {
-                        jjmatchedKind = 119;
-                    }
-                    break;
-                case 1:
-                    jjmatchedKind = 0x7fffffff;
-                    jjmatchedPos = 0;
-                    curPos = jjMoveStringLiteralDfa0_1();
-                    if (jjmatchedPos == 0 && jjmatchedKind > 7) {
-                        jjmatchedKind = 7;
-                    }
-                    break;
-                case 2:
-                    jjmatchedKind = 0x7fffffff;
-                    jjmatchedPos = 0;
-                    curPos = jjMoveStringLiteralDfa0_2();
-                    if (jjmatchedPos == 0 && jjmatchedKind > 7) {
-                        jjmatchedKind = 7;
-                    }
-                    break;
-                }
-                if (jjmatchedKind != 0x7fffffff) {
-                    if (jjmatchedPos + 1 < curPos) {
-                        input_stream.backup(curPos - jjmatchedPos - 1);
-                    }
-                    if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
-                        matchedToken = jjFillToken();
-                        matchedToken.specialToken = specialToken;
-                        TokenLexicalActions(matchedToken);
-                        if (jjnewLexState[jjmatchedKind] != -1) {
-                            curLexState = jjnewLexState[jjmatchedKind];
-                        }
-                        return matchedToken;
-                    } else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
-                        if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
-                            matchedToken = jjFillToken();
-                            if (specialToken == null) {
-                                specialToken = matchedToken;
-                            } else {
-                                matchedToken.specialToken = specialToken;
-                                specialToken = (specialToken.next = matchedToken);
-                            }
-                            SkipLexicalActions(matchedToken);
-                        } else {
-                            SkipLexicalActions(null);
-                        }
-                        if (jjnewLexState[jjmatchedKind] != -1) {
-                            curLexState = jjnewLexState[jjmatchedKind];
-                        }
-                        continue EOFLoop;
-                    }
-                    MoreLexicalActions();
-                    if (jjnewLexState[jjmatchedKind] != -1) {
-                        curLexState = jjnewLexState[jjmatchedKind];
-                    }
-                    curPos = 0;
-                    jjmatchedKind = 0x7fffffff;
-                    try {
-                        curChar = input_stream.readChar();
-                        continue;
-                    } catch (java.io.IOException e1) {
-                    }
-                }
-                int error_line = input_stream.getEndLine();
-                int error_column = input_stream.getEndColumn();
-                String error_after = null;
-                boolean EOFSeen = false;
-                try {
-                    input_stream.readChar();
-                    input_stream.backup(1);
-                } catch (java.io.IOException e1) {
-                    EOFSeen = true;
-                    error_after = curPos <= 1 ? "" : input_stream.GetImage();
-                    if (curChar == '\n' || curChar == '\r') {
-                        error_line++;
-                        error_column = 0;
-                    } else {
-                        error_column++;
-                    }
-                }
-                if (!EOFSeen) {
-                    input_stream.backup(1);
-                    error_after = curPos <= 1 ? "" : input_stream.GetImage();
-                }
-                throw new TokenMgrError(EOFSeen, curLexState, error_line,
-                        error_column, error_after, curChar,
-                        TokenMgrError.LEXICAL_ERROR);
-            }
-        }
-    }
-
-    void SkipLexicalActions(Token matchedToken) {
-        switch (jjmatchedKind) {
-        default:
-            break;
-        }
-    }
-
-    void MoreLexicalActions() {
-        jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-        switch (jjmatchedKind) {
-        case 3:
-            image.append(input_stream.GetSuffix(jjimageLen));
-            jjimageLen = 0;
-            input_stream.backup(1);
-            break;
-        default:
-            break;
-        }
-    }
-
-    void TokenLexicalActions(Token matchedToken) {
-        switch (jjmatchedKind) {
-        case 1:
-            image.append(input_stream.GetSuffix(jjimageLen
-                    + (lengthOfMatch = jjmatchedPos + 1)));
-            image = Parser.SPACE;
-            break;
-        default:
-            break;
-        }
-    }
-
-    private void jjCheckNAdd(int state) {
-        if (jjrounds[state] != jjround) {
-            jjstateSet[jjnewStateCnt++] = state;
-            jjrounds[state] = jjround;
-        }
-    }
-
-    private void jjAddStates(int start, int end) {
-        do {
-            jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-        } while (start++ != end);
-    }
+        else
+           error_column++;
+     }
+     if (!EOFSeen) {
+        input_stream.backup(1);
+        error_after = curPos <= 1 ? "" : input_stream.GetImage();
+     }
+     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+   }
+  }
+}
 
-    private void jjCheckNAddTwoStates(int state1, int state2) {
-        jjCheckNAdd(state1);
-        jjCheckNAdd(state2);
-    }
+void SkipLexicalActions(Token matchedToken)
+{
+   switch(jjmatchedKind)
+   {
+      default :
+         break;
+   }
+}
+void MoreLexicalActions()
+{
+   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+   switch(jjmatchedKind)
+   {
+      case 3 :
+         image.append(input_stream.GetSuffix(jjimageLen));
+         jjimageLen = 0;
+                   input_stream.backup(1);
+         break;
+      default :
+         break;
+   }
+}
+void TokenLexicalActions(Token matchedToken)
+{
+   switch(jjmatchedKind)
+   {
+      case 1 :
+        image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
+          image = Parser.SPACE;
+         break;
+      default :
+         break;
+   }
+}
+private void jjCheckNAdd(int state)
+{
+   if (jjrounds[state] != jjround)
+   {
+      jjstateSet[jjnewStateCnt++] = state;
+      jjrounds[state] = jjround;
+   }
+}
+private void jjAddStates(int start, int end)
+{
+   do {
+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+   } while (start++ != end);
+}
+private void jjCheckNAddTwoStates(int state1, int state2)
+{
+   jjCheckNAdd(state1);
+   jjCheckNAdd(state2);
+}
 
-    private void jjCheckNAddStates(int start, int end) {
-        do {
-            jjCheckNAdd(jjnextStates[start]);
-        } while (start++ != end);
-    }
+private void jjCheckNAddStates(int start, int end)
+{
+   do {
+      jjCheckNAdd(jjnextStates[start]);
+   } while (start++ != end);
+}
 
 }
diff --git a/theme-compiler/tests/resources/w3ctests/scss/css3-modsel-15b.0.scss b/theme-compiler/tests/resources/w3ctests/scss/css3-modsel-15b.0.scss
new file mode 100644 (file)
index 0000000..b2fb3ac
--- /dev/null
@@ -0,0 +1,9 @@
+/* Source: http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-15b.html */
+
+p { background: green; color: white; }
+#test#fail { background: red; color: yellow; }
+#fail#test { background: red; color: yellow; }
+#fail { background: red; color: yellow; }
+div { background: red; color: yellow; }
+#pass#pass { background: green; color: white; }
+
index fcb8e9a70afbbcf1fe95cd6b1dc48515798fe435..274ca382ca50b46f2b3473f986c55630385b033d 100644 (file)
@@ -131,8 +131,6 @@ public class W3ConformanceTests extends AbstractDirectoryScanningSassTests {
          * required!
          */
         final String[] excludelist = new String[] {
-                // Probable bug/limitation (filed as #12832)
-                "http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-15b.html",
 
                 // Probable bug/limitation (filed as #12833)
                 "http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-67.html",
@@ -148,7 +146,7 @@ public class W3ConformanceTests extends AbstractDirectoryScanningSassTests {
                 "http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-76b.html",
                 "http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-83.html",
 
-                // Probable bug/limitation (files as #12835)
+                // Invalid CSS, although sass-lang compiler accepts (see #12835)
                 "http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-154.html",
 
                 // Invalid CSS? sass-lang compiler fails