Add support of IOT tables:
 - add boolean iot property to TableType
 - fix DDLParser.jjt to support ORGANIZATION INDEX clause
 - take out ALTER clause support 'cause IOT tables do not format
   properly even if TRANSFORM_CONSTRAINT_AS_ALTER is true
 - fix DDLParser.jjt to support in-line PRIMARY KEY clause in
   columnDeclarations - CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO",
                            "ENAME") ENABLE
    . change transforms.properties to set _AS_ALTER to false
diff --git a/.settings/sf.eclipse.javacc.prefs b/.settings/sf.eclipse.javacc.prefs
index 51032e4..a99d800 100644
--- a/.settings/sf.eclipse.javacc.prefs
+++ b/.settings/sf.eclipse.javacc.prefs
@@ -1,8 +1,8 @@
 #Thu Jul 21 13:19:02 EDT 2011

 CLEAR_CONSOLE=false

-JAVACC_OPTIONS=-STATIC\=false -SUPPORT_CLASS_VISIBILITY_PUBLIC\=true -IGNORE_CASE\=true -JAVA_UNICODE_ESCAPE\=true

+JAVACC_OPTIONS=

 JJDOC_OPTIONS=

-JJTREE_OPTIONS=-BUILD_NODE_FILES\=false -TRACK_TOKENS\=true -VISITOR\=true

+JJTREE_OPTIONS=

 JJ_NATURE=false

 JTB_OPTIONS=-ia -jd -tk

 RUNTIME_JJJAR=${eclipse_home}/plugins/sf.eclipse.javacc_1.5.24/javacc.jar

diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/TableType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/TableType.java
index d7f2a7b..aa38ca8 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/TableType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/TableType.java
@@ -21,6 +21,7 @@
     protected String tableName;

     protected String schema;

     protected List<FieldType> columns = new ArrayList<FieldType>();

+    protected boolean iot = false;

     

     public TableType(String tableName) {

 		super(null);

@@ -50,6 +51,14 @@
     public List<FieldType> getColumns() {

     	return columns;

     }

+

+    public void setIOT(boolean iot) {

+        this.iot = iot;

+    }

+

+    public boolean iot() {

+       return iot;

+    }

     

     public int numberOfPKColumns() {

     	int pkColumns = 0;

@@ -92,6 +101,9 @@
             sb.append(")\n");

         }

         sb.append(")");

+        if (iot) {

+            sb.append("ORGANIZATION INDEX");

+        }

         return sb.toString();

     }

 

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
index 4449547..562f0cf 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
@@ -1,3907 +1,3586 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. DDLParser.java */
-/*******************************************************************************
- * Copyright (c) 2011 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *     Mike Norman - June 10 2011, created DDL parser package
- ******************************************************************************/
-package org.eclipse.persistence.tools.oracleddl.parser;
-
-//javase imports
-import java.io.InputStream;
-
-//metadata imports
-import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;
-import org.eclipse.persistence.tools.oracleddl.metadata.CharType;
-import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;
-import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;
-import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;
-import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;
-import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;
-import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;
-import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;
-import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;
-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;
-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;
-import org.eclipse.persistence.tools.oracleddl.metadata.LongType;
-import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;
-import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;
-import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;
-import org.eclipse.persistence.tools.oracleddl.metadata.NestedTableType;
-import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;
-import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;
-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;
-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;
-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;
-import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;
-import org.eclipse.persistence.tools.oracleddl.metadata.RawType;
-import org.eclipse.persistence.tools.oracleddl.metadata.RealType;
-import org.eclipse.persistence.tools.oracleddl.metadata.TableType;
-import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;
-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;
-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;
-import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;
-import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;
-import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;
-import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;
-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIMESTAMP_TYPE;
-
+/* Generated By:JJTree&JavaCC: Do not edit this line. DDLParser.java */

+/*******************************************************************************

+ * Copyright (c) 2011 Oracle. All rights reserved.

+ * This program and the accompanying materials are made available under the

+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

+ * which accompanies this distribution.

+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

+ * and the Eclipse Distribution License is available at

+ * http://www.eclipse.org/org/documents/edl-v10.php.

+ *

+ * Contributors:

+ *     Mike Norman - June 10 2011, created DDL parser package

+ ******************************************************************************/

+package org.eclipse.persistence.tools.oracleddl.parser;

+

+//javase imports

+import java.io.InputStream;

+import java.util.List;

+

+//metadata imports

+import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;

+import org.eclipse.persistence.tools.oracleddl.metadata.CharType;

+import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;

+import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;

+import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;

+import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;

+import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;

+import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;

+import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;

+import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;

+import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;

+import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;

+import org.eclipse.persistence.tools.oracleddl.metadata.LongType;

+import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;

+import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;

+import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;

+import org.eclipse.persistence.tools.oracleddl.metadata.NestedTableType;

+import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;

+import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;

+import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;

+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;

+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;

+import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;

+import org.eclipse.persistence.tools.oracleddl.metadata.RawType;

+import org.eclipse.persistence.tools.oracleddl.metadata.RealType;

+import org.eclipse.persistence.tools.oracleddl.metadata.TableType;

+import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;

+import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;

+import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;

+import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;

+import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;

+import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;

+import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;

+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIMESTAMP_TYPE;

+

 @SuppressWarnings("all")
-public class DDLParser/*@bgen(jjtree)*/implements DDLParserTreeConstants, DDLParserConstants {/*@bgen(jjtree)*/
-  protected static JJTDDLParserState jjtree = new JJTDDLParserState();
-    protected DatabaseTypesRepository typesRepository = new DatabaseTypesRepository();
-
-    public DDLParser() {
-        super();
-    }
-
-    public void setTypesRepository(DatabaseTypesRepository typesRepository) {
-        this.typesRepository = typesRepository;
-    }
-
-// stripped-down version of PLSQL grammar: only parses package/top-level DDL specifications
-
-// PLSQLPackage at 'top-level'
-  final public PLSQLPackageType parsePLSQLPackage() throws ParseException {
- /*@bgen(jjtree) parsePLSQLPackage */
- SimpleNode jjtn000 = new SimpleNode(JJTPARSEPLSQLPACKAGE);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));String schema = null;
- String packageName = null;
- PLSQLPackageType packageType = new PLSQLPackageType();
-    try {
-      jj_consume_token(K_CREATE);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_OR:
-        jj_consume_token(K_OR);
-        jj_consume_token(K_REPLACE);
-        break;
-      default:
-        jj_la1[0] = jj_gen;
-        ;
-      }
-      jj_consume_token(K_PACKAGE);
-      if (jj_2_1(2)) {
-        schema = OracleObjectName();
-        jj_consume_token(O_DOT);
-      } else {
-        ;
-      }
-      packageName = OracleObjectName();
-          if (schema != null) {
-            packageType.setPackageName(schema + "." + packageName);
-          }
-          else {
-            packageType.setPackageName(packageName);
-          }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_AUTHID:
-        jj_consume_token(K_AUTHID);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_CURRENT_USER:
-        case K_DEFINER:
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case K_CURRENT_USER:
-            jj_consume_token(K_CURRENT_USER);
-            break;
-          case K_DEFINER:
-            jj_consume_token(K_DEFINER);
-            break;
-          default:
-            jj_la1[1] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-          break;
-        default:
-          jj_la1[2] = jj_gen;
-          ;
-        }
-        break;
-      default:
-        jj_la1[3] = jj_gen;
-        ;
-      }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_AS:
-      case K_IS:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_AS:
-          jj_consume_token(K_AS);
-          break;
-        case K_IS:
-          jj_consume_token(K_IS);
-          break;
-        default:
-          jj_la1[4] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        break;
-      default:
-        jj_la1[5] = jj_gen;
-        ;
-      }
-      label_1:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_CURSOR:
-        case K_FUNCTION:
-        case K_PRAGMA:
-        case K_PROCEDURE:
-        case K_TYPE:
-        case S_IDENTIFIER:
-          ;
-          break;
-        default:
-          jj_la1[6] = jj_gen;
-          break label_1;
-        }
-        packageDeclaration(packageType);
-      }
-      jj_consume_token(K_END);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case S_IDENTIFIER:
-      case S_QUOTED_IDENTIFIER:
-        OracleObjectName();
-        break;
-      default:
-        jj_la1[7] = jj_gen;
-        ;
-      }
-      jj_consume_token(O_SEMICOLON);
-      jj_consume_token(0);
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      typesRepository.setDatabaseType(packageName, packageType);
-      {if (true) return packageType;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-// procedure at 'top-level'
-  final public ProcedureType parseTopLevelProcedure() throws ParseException {
- /*@bgen(jjtree) parseTopLevelProcedure */
- SimpleNode jjtn000 = new SimpleNode(JJTPARSETOPLEVELPROCEDURE);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));ProcedureType procedureType = null;
- String schema = null;
- String procedureName = null;
-    try {
-      jj_consume_token(K_CREATE);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_OR:
-        jj_consume_token(K_OR);
-        jj_consume_token(K_REPLACE);
-        break;
-      default:
-        jj_la1[8] = jj_gen;
-        ;
-      }
-      jj_consume_token(K_PROCEDURE);
-      if (jj_2_2(2)) {
-        schema = OracleObjectName();
-        jj_consume_token(O_DOT);
-      } else {
-        ;
-      }
-      procedureName = OracleObjectName();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_OPENPAREN:
-        jj_consume_token(O_OPENPAREN);
-        argumentList();
-        jj_consume_token(O_CLOSEPAREN);
-        break;
-      default:
-        jj_la1[9] = jj_gen;
-        ;
-      }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_AS:
-      case K_IS:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_AS:
-          jj_consume_token(K_AS);
-          break;
-        case K_IS:
-          jj_consume_token(K_IS);
-          break;
-        default:
-          jj_la1[10] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        break;
-      default:
-        jj_la1[11] = jj_gen;
-        ;
-      }
-      skipToEnd();
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      procedureType = new ProcedureType(procedureName);
-      if (schema != null) {
-          procedureType.setSchema(schema);
-      }
-      typesRepository.setDatabaseType(procedureName, procedureType);
-      {if (true) return procedureType;}
-    } catch (Throwable jjte000) {
-    if (jjtc000) {
-      jjtree.clearNodeScope(jjtn000);
-      jjtc000 = false;
-    } else {
-      jjtree.popNode();
-    }
-    if (jjte000 instanceof RuntimeException) {
-      {if (true) throw (RuntimeException)jjte000;}
-    }
-    if (jjte000 instanceof ParseException) {
-      {if (true) throw (ParseException)jjte000;}
-    }
-    {if (true) throw (Error)jjte000;}
-    } finally {
-    if (jjtc000) {
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtn000.jjtSetLastToken(getToken(0));
-    }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-// function at 'top-level'
-  final public FunctionType parseTopLevelFunction() throws ParseException {
- /*@bgen(jjtree) parseTopLevelFunction */
- SimpleNode jjtn000 = new SimpleNode(JJTPARSETOPLEVELFUNCTION);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));FunctionType functionType = null;
- String schema = null;
- String functionName = null;
-    try {
-      jj_consume_token(K_CREATE);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_OR:
-        jj_consume_token(K_OR);
-        jj_consume_token(K_REPLACE);
-        break;
-      default:
-        jj_la1[12] = jj_gen;
-        ;
-      }
-      jj_consume_token(K_FUNCTION);
-      if (jj_2_3(2)) {
-        schema = OracleObjectName();
-        jj_consume_token(O_DOT);
-      } else {
-        ;
-      }
-      functionName = OracleObjectName();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_OPENPAREN:
-        jj_consume_token(O_OPENPAREN);
-        argumentList();
-        jj_consume_token(O_CLOSEPAREN);
-        break;
-      default:
-        jj_la1[13] = jj_gen;
-        ;
-      }
-      functionReturnSpec();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_AS:
-      case K_IS:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_AS:
-          jj_consume_token(K_AS);
-          break;
-        case K_IS:
-          jj_consume_token(K_IS);
-          break;
-        default:
-          jj_la1[14] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        break;
-      default:
-        jj_la1[15] = jj_gen;
-        ;
-      }
-      skipToEnd();
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      functionType = new FunctionType(functionName);
-      if (schema != null) {
-          functionType.setSchema(schema);
-      }
-      //TODO - figure out returnType
-      typesRepository.setDatabaseType(functionName, functionType);
-      {if (true) return functionType;}
-    } catch (Throwable jjte000) {
-    if (jjtc000) {
-      jjtree.clearNodeScope(jjtn000);
-      jjtc000 = false;
-    } else {
-      jjtree.popNode();
-    }
-    if (jjte000 instanceof RuntimeException) {
-      {if (true) throw (RuntimeException)jjte000;}
-    }
-    if (jjte000 instanceof ParseException) {
-      {if (true) throw (ParseException)jjte000;}
-    }
-    {if (true) throw (Error)jjte000;}
-    } finally {
-    if (jjtc000) {
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtn000.jjtSetLastToken(getToken(0));
-    }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-// table at 'top-level'
-  final public TableType parseTable() throws ParseException {
- /*@bgen(jjtree) parseTable */
- SimpleNode jjtn000 = new SimpleNode(JJTPARSETABLE);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));TableType tableType = null;
- String schema = null;
- String tableName = null;
-    try {
-      jj_consume_token(K_CREATE);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_GLOBAL:
-        jj_consume_token(K_GLOBAL);
-        jj_consume_token(K_TEMPORARY);
-        break;
-      default:
-        jj_la1[16] = jj_gen;
-        ;
-      }
-      jj_consume_token(K_TABLE);
-      if (jj_2_4(2)) {
-        schema = OracleObjectName();
-        jj_consume_token(O_DOT);
-      } else {
-        ;
-      }
-      tableName = OracleObjectName();
-            tableType = new TableType(tableName);
-                    if (schema != null) {
-                         tableType.setSchema(schema);
-                    }
-      jj_consume_token(O_OPENPAREN);
-      columnDeclarations(tableType);
-      jj_consume_token(O_CLOSEPAREN);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_ON:
-        jj_consume_token(K_ON);
-        jj_consume_token(K_COMMIT);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_DELETE:
-        case K_PRESERVE:
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case K_DELETE:
-            jj_consume_token(K_DELETE);
-            break;
-          case K_PRESERVE:
-            jj_consume_token(K_PRESERVE);
-            break;
-          default:
-            jj_la1[17] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-          break;
-        default:
-          jj_la1[18] = jj_gen;
-          ;
-        }
-        jj_consume_token(K_ROWS);
-        break;
-      default:
-        jj_la1[19] = jj_gen;
-        ;
-      }
-      jj_consume_token(O_SEMICOLON);
-      label_2:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_ALTER:
-          ;
-          break;
-        default:
-          jj_la1[20] = jj_gen;
-          break label_2;
-        }
-        alterDeclaration(tableType);
-        jj_consume_token(O_SEMICOLON);
-      }
-      jj_consume_token(0);
-       jjtree.closeNodeScope(jjtn000, true);
-       jjtc000 = false;
-       jjtn000.jjtSetLastToken(getToken(0));
-         typesRepository.setDatabaseType(tableName, tableType);
-         {if (true) return tableType;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public SimpleNode alterDeclaration(TableType table) throws ParseException {
- /*@bgen(jjtree) alterDeclaration */
-  SimpleNode jjtn000 = new SimpleNode(JJTALTERDECLARATION);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtn000.jjtSetFirstToken(getToken(1));
-    try {
-      jj_consume_token(K_ALTER);
-      jj_consume_token(K_TABLE);
-      columnSpec();
-      jj_consume_token(K_ADD);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_CONSTRAINT:
-        jj_consume_token(K_CONSTRAINT);
-        OracleObjectName();
-        break;
-      default:
-        jj_la1[21] = jj_gen;
-        ;
-      }
-      jj_consume_token(K_PRIMARY);
-      jj_consume_token(K_KEY);
-      jj_consume_token(O_OPENPAREN);
-      OracleObjectName();
-      label_3:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case O_COMMA:
-          ;
-          break;
-        default:
-          jj_la1[22] = jj_gen;
-          break label_3;
-        }
-        jj_consume_token(O_COMMA);
-        OracleObjectName();
-      }
-      jj_consume_token(O_CLOSEPAREN);
-      jj_consume_token(K_ENABLE);
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      Token first = jjtn000.jjtGetFirstToken();
-      Token last = jjtn000.jjtGetLastToken();
-      Token cur = first;
-      while (cur.kind != O_OPENPAREN) {
-          cur = cur.next;
-      }
-      cur = cur.next;
-      while (cur.kind != O_CLOSEPAREN) {
-        if (cur.kind == O_COMMA) {
-            cur = cur.next;
-            continue;
-        }
-        String str = cur.image;
-        if (str.startsWith("\u005c"")) {
-          str = str.substring(1, str.length());
-        }
-        if (str.endsWith("\u005c"")) {
-          str = str.substring(0, str.length() - 1);
-        }
-        for (FieldType col : table.getColumns()) {
-          if (col.getFieldName().equals(str)) {
-              col.setPk();
-              break;
-          }
-        }
-        cur = cur.next;
-      }
-      {if (true) return jjtn000;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-// type at 'top-level'
-  final public CompositeDatabaseType parseType() throws ParseException {
- /*@bgen(jjtree) parseType */
- SimpleNode jjtn000 = new SimpleNode(JJTPARSETYPE);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));CompositeDatabaseType databaseType = null;
- String schema = null;
- String typeName = null;
- boolean varray = false;
- boolean nestedTable = false;
-    try {
-      jj_consume_token(K_CREATE);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_OR:
-        jj_consume_token(K_OR);
-        jj_consume_token(K_REPLACE);
-        break;
-      default:
-        jj_la1[23] = jj_gen;
-        ;
-      }
-      jj_consume_token(K_TYPE);
-      if (jj_2_5(2)) {
-        schema = OracleObjectName();
-        jj_consume_token(O_DOT);
-      } else {
-        ;
-      }
-      typeName = OracleObjectName();
-      jj_consume_token(K_AS);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_OBJECT:
-      case K_TABLE:
-      case K_VARRAY:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_OBJECT:
-          jj_consume_token(K_OBJECT);
-          jj_consume_token(O_OPENPAREN);
-                databaseType = new ObjectType(typeName);
-                if (schema != null) {
-                    ((ObjectType)databaseType).setSchema(schema);
-                }
-          columnDeclarations(databaseType);
-          jj_consume_token(O_CLOSEPAREN);
-          break;
-        case K_VARRAY:
-          jj_consume_token(K_VARRAY);
-          jj_consume_token(O_OPENPAREN);
-          jj_consume_token(S_NUMBER);
-          jj_consume_token(O_CLOSEPAREN);
-          jj_consume_token(K_OF);
-                databaseType = new VArrayType(typeName);
-                if (schema != null) {
-                    ((VArrayType)databaseType).setSchema(schema);
-                }
-          columnTypeSpec(databaseType);
-          break;
-        case K_TABLE:
-          jj_consume_token(K_TABLE);
-          jj_consume_token(K_OF);
-                databaseType = new NestedTableType(typeName);
-                if (schema != null) {
-                    ((NestedTableType)databaseType).setSchema(schema);
-                }
-          columnTypeSpec(databaseType);
-          break;
-        default:
-          jj_la1[24] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        break;
-      default:
-        jj_la1[25] = jj_gen;
-        ;
-      }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_SEMICOLON:
-        jj_consume_token(O_SEMICOLON);
-        break;
-      default:
-        jj_la1[26] = jj_gen;
-        ;
-      }
-      jj_consume_token(0);
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-        typesRepository.setDatabaseType(typeName, databaseType);
-        {if (true) return databaseType;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void columnDeclarations(CompositeDatabaseType enclosingType) throws ParseException {
-    columnDeclaration(enclosingType);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_COMMA:
-      jj_consume_token(O_COMMA);
-      columnDeclarations(enclosingType);
-      break;
-    default:
-      jj_la1[27] = jj_gen;
-      ;
-    }
-  }
-
-  final public void columnDeclaration(CompositeDatabaseType enclosingType) throws ParseException {
- String s = null;
- String pk = null;
- boolean notNull = false;
- DatabaseType columnType = null;
- FieldType column = null;
-    s = OracleObjectName();
-            column = new FieldType(s);
-            if (enclosingType != null) {
-                enclosingType.addCompositeType(column);
-            }
-    columnType = columnTypeSpec(enclosingType);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_NOT:
-      jj_consume_token(K_NOT);
-      jj_consume_token(K_NULL);
-      jj_consume_token(K_ENABLE);
-                                                                                notNull = true;
-      break;
-    default:
-      jj_la1[28] = jj_gen;
-      ;
-    }
-      column.setDataType(columnType);
-      if (notNull) {
-          column.setNotNull();
-      }
-  }
-
-  final public DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType) throws ParseException {
- /*@bgen(jjtree) columnTypeSpec */
- SimpleNode jjtn000 = new SimpleNode(JJTCOLUMNTYPESPEC);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));String s = null;
- Token t = null;
- DatabaseType dt = null;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_BFILE:
-      case K_BINARY_DOUBLE:
-      case K_BINARY_FLOAT:
-      case K_BINARY_INTEGER:
-      case K_BLOB:
-      case K_BOOLEAN:
-      case K_CHAR:
-      case K_CHARACTER:
-      case K_CLOB:
-      case K_DATE:
-      case K_DEC:
-      case K_DECIMAL:
-      case K_DOUBLE:
-      case K_FLOAT:
-      case K_INT:
-      case K_INTEGER:
-      case K_INTERVAL:
-      case K_LONG:
-      case K_MLSLABEL:
-      case K_NATIONAL:
-      case K_NATURAL:
-      case K_NCHAR:
-      case K_NCLOB:
-      case K_NUMBER:
-      case K_NUMERIC:
-      case K_NVARCHAR2:
-      case K_NVARCHAR:
-      case K_PLS_INTEGER:
-      case K_POSITIVE:
-      case K_RAW:
-      case K_REAL:
-      case K_ROWID:
-      case K_SIMPLE_INTEGER:
-      case K_SMALLINT:
-      case K_TIME:
-      case K_TIMESTAMP:
-      case K_UROWID:
-      case K_VARCHAR2:
-      case K_VARCHAR:
-        dt = datatype();
-        break;
-      case S_IDENTIFIER:
-      case S_QUOTED_IDENTIFIER:
-        s = columnSpec();
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case O_OPENPAREN:
-          jj_consume_token(O_OPENPAREN);
-          t = jj_consume_token(S_NUMBER);
-          jj_consume_token(O_CLOSEPAREN);
-          break;
-        default:
-          jj_la1[29] = jj_gen;
-          ;
-        }
-        break;
-      default:
-        jj_la1[30] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      if (s != null) {
-          if (t != null) {
-              Long size = Long.decode(t.image);
-              dt = new UnresolvedSizedType(s, size);
-          }
-          else {
-              dt = new UnresolvedType(s);
-          }
-      }
-      {if (true) return dt;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void packageDeclaration(PLSQLPackageType packageType) throws ParseException {
-    if (jj_2_6(2)) {
-      variableDeclaration(packageType);
-    } else {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_TYPE:
-        typeDeclaration(packageType);
-        break;
-      case K_CURSOR:
-        cursorDeclaration(packageType);
-        break;
-      case K_PROCEDURE:
-        procedureSpec(packageType);
-        break;
-      case K_FUNCTION:
-        functionSpec(packageType);
-        break;
-      case S_IDENTIFIER:
-        exceptionDeclaration(packageType);
-        break;
-      case K_PRAGMA:
-        pragmaDeclaration(packageType);
-        break;
-      default:
-        jj_la1[31] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    }
-  }
-
-  final public void variableDeclaration(PLSQLPackageType packageType) throws ParseException {
- /*@bgen(jjtree) variableDeclaration */
-  SimpleNode jjtn000 = new SimpleNode(JJTVARIABLEDECLARATION);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtn000.jjtSetFirstToken(getToken(1));
-    try {
-      jj_consume_token(S_IDENTIFIER);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_CONSTANT:
-        jj_consume_token(K_CONSTANT);
-        break;
-      default:
-        jj_la1[32] = jj_gen;
-        ;
-      }
-      typeSpec();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_NOT:
-        jj_consume_token(K_NOT);
-        jj_consume_token(K_NULL);
-        break;
-      default:
-        jj_la1[33] = jj_gen;
-        ;
-      }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_DEFAULT:
-      case O_ASSIGN:
-        variableDefaultAssignment();
-        break;
-      default:
-        jj_la1[34] = jj_gen;
-        ;
-      }
-      jj_consume_token(O_SEMICOLON);
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-  }
-
-  final public void variableDefaultAssignment() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_ASSIGN:
-      jj_consume_token(O_ASSIGN);
-      break;
-    case K_DEFAULT:
-      jj_consume_token(K_DEFAULT);
-      break;
-    default:
-      jj_la1[35] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-    skipToSemiColon();
-  }
-
-  final public DatabaseType datatype() throws ParseException {
- /*@bgen(jjtree) datatype */
- SimpleNode jjtn000 = new SimpleNode(JJTDATATYPE);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));Token t = null;
- DatabaseType dt = null;
- Token precision = null;
- Long sl;
- Long pl;
- Token scale = null;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_BINARY_INTEGER:
-        jj_consume_token(K_BINARY_INTEGER);
-                          jjtree.closeNodeScope(jjtn000, true);
-                          jjtc000 = false;
-                          jjtn000.jjtSetLastToken(getToken(0));
-                          {if (true) return BINARY_INTEGER_TYPE;}
-        break;
-      case K_BINARY_FLOAT:
-        jj_consume_token(K_BINARY_FLOAT);
-                          jjtree.closeNodeScope(jjtn000, true);
-                          jjtc000 = false;
-                          jjtn000.jjtSetLastToken(getToken(0));
-                          {if (true) return BINARY_FLOAT_TYPE;}
-        break;
-      case K_BINARY_DOUBLE:
-        jj_consume_token(K_BINARY_DOUBLE);
-                          jjtree.closeNodeScope(jjtn000, true);
-                          jjtc000 = false;
-                          jjtn000.jjtSetLastToken(getToken(0));
-                          {if (true) return BINARY_DOUBLE_TYPE;}
-        break;
-      case K_NATURAL:
-        jj_consume_token(K_NATURAL);
-                          jjtree.closeNodeScope(jjtn000, true);
-                          jjtc000 = false;
-                          jjtn000.jjtSetLastToken(getToken(0));
-                          {if (true) return NATURAL_TYPE;}
-        break;
-      case K_POSITIVE:
-        jj_consume_token(K_POSITIVE);
-                          jjtree.closeNodeScope(jjtn000, true);
-                          jjtc000 = false;
-                          jjtn000.jjtSetLastToken(getToken(0));
-                          {if (true) return POSITIVE_TYPE;}
-        break;
-      case K_DEC:
-      case K_DECIMAL:
-      case K_NUMBER:
-      case K_NUMERIC:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_NUMBER:
-          t = jj_consume_token(K_NUMBER);
-          break;
-        case K_NUMERIC:
-          t = jj_consume_token(K_NUMERIC);
-          break;
-        case K_DECIMAL:
-          t = jj_consume_token(K_DECIMAL);
-          break;
-        case K_DEC:
-          t = jj_consume_token(K_DEC);
-          break;
-        default:
-          jj_la1[36] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case O_OPENPAREN:
-          jj_consume_token(O_OPENPAREN);
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case O_ASTERISK:
-          case S_NUMBER:
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_ASTERISK:
-              precision = jj_consume_token(O_ASTERISK);
-              break;
-            case S_NUMBER:
-              precision = jj_consume_token(S_NUMBER);
-              break;
-            default:
-              jj_la1[37] = jj_gen;
-              jj_consume_token(-1);
-              throw new ParseException();
-            }
-            break;
-          default:
-            jj_la1[38] = jj_gen;
-            ;
-          }
-          label_4:
-          while (true) {
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_COMMA:
-              ;
-              break;
-            default:
-              jj_la1[39] = jj_gen;
-              break label_4;
-            }
-            jj_consume_token(O_COMMA);
-            scale = jj_consume_token(S_NUMBER);
-          }
-          jj_consume_token(O_CLOSEPAREN);
-          break;
-        default:
-          jj_la1[40] = jj_gen;
-          ;
-        }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-            if (t.kind == K_NUMBER || t.kind == K_NUMERIC) {
-                if (precision != null && precision.image.equals("*")) {
-                    precision = null;
-                }
-                if (precision == null) {
-                    if (scale != null && scale.image.equals("0")) {
-                        dt = INTEGER_TYPE;
-                    }
-                    else {
-                        dt = new NumericType();
-                    }
-                }
-                    else {
-                        pl = Long.decode(precision.image);
-                        if (scale == null) {
-                        dt = new NumericType(pl);
-                    }
-                    else {
-                        sl = Long.decode(scale.image);
-                        dt = new NumericType(pl, sl);
-                        }
-                    }
-            }
-            else  if (t.kind == K_DECIMAL || t.kind == K_DEC) {
-                if (precision != null && precision.image.equals("*")) {
-                    precision = null;
-                }
-                if (precision == null) {
-                    dt = new DecimalType();
-                }
-                else {
-                    pl = Long.decode(precision.image);
-                    if (scale == null) {
-                        dt = new DecimalType(pl);
-                    }
-                    else {
-                        sl = Long.decode(scale.image);
-                        dt = new DecimalType(pl, sl);
-                    }
-                }
-            }
-            {if (true) return dt;}
-        break;
-      case K_LONG:
-        jj_consume_token(K_LONG);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_RAW:
-          t = jj_consume_token(K_RAW);
-          break;
-        default:
-          jj_la1[41] = jj_gen;
-          ;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case O_OPENPAREN:
-          jj_consume_token(O_OPENPAREN);
-          precision = jj_consume_token(S_NUMBER);
-          jj_consume_token(O_CLOSEPAREN);
-          break;
-        default:
-          jj_la1[42] = jj_gen;
-          ;
-        }
-              jjtree.closeNodeScope(jjtn000, true);
-              jjtc000 = false;
-              jjtn000.jjtSetLastToken(getToken(0));
-              if (t == null) {
-              if (precision == null) {
-                  dt = new LongType();
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  dt = new LongType(pl);
-              }
-              }
-              else {
-              if (precision == null) {
-                  dt = new LongRawType();
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  dt = new LongRawType(pl);
-              }
-            }
-            {if (true) return dt;}
-        break;
-      case K_RAW:
-        jj_consume_token(K_RAW);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case O_OPENPAREN:
-          jj_consume_token(O_OPENPAREN);
-          precision = jj_consume_token(S_NUMBER);
-          jj_consume_token(O_CLOSEPAREN);
-          break;
-        default:
-          jj_la1[43] = jj_gen;
-          ;
-        }
-              jjtree.closeNodeScope(jjtn000, true);
-              jjtc000 = false;
-              jjtn000.jjtSetLastToken(getToken(0));
-            if (precision == null) {
-                dt = new RawType();
-            }
-            else {
-                pl = Long.decode(precision.image);
-                dt = new RawType(pl);
-            }
-            {if (true) return dt;}
-        break;
-      case K_BOOLEAN:
-        jj_consume_token(K_BOOLEAN);
-                    jjtree.closeNodeScope(jjtn000, true);
-                    jjtc000 = false;
-                    jjtn000.jjtSetLastToken(getToken(0));
-                    {if (true) return BOOLEAN_TYPE;}
-        break;
-      case K_DATE:
-        jj_consume_token(K_DATE);
-                 jjtree.closeNodeScope(jjtn000, true);
-                 jjtc000 = false;
-                 jjtn000.jjtSetLastToken(getToken(0));
-                 {if (true) return DATE_TYPE;}
-        break;
-      default:
-        jj_la1[82] = jj_gen;
-        if (jj_2_15(2)) {
-          jj_consume_token(K_INTERVAL);
-          jj_consume_token(K_DAY);
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case O_OPENPAREN:
-            jj_consume_token(O_OPENPAREN);
-            precision = jj_consume_token(S_NUMBER);
-            jj_consume_token(O_CLOSEPAREN);
-            break;
-          default:
-            jj_la1[44] = jj_gen;
-            ;
-          }
-          jj_consume_token(K_TO);
-          jj_consume_token(K_SECOND);
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case O_OPENPAREN:
-            jj_consume_token(O_OPENPAREN);
-            scale = jj_consume_token(S_NUMBER);
-            jj_consume_token(O_CLOSEPAREN);
-            break;
-          default:
-            jj_la1[45] = jj_gen;
-            ;
-          }
-              jjtree.closeNodeScope(jjtn000, true);
-              jjtc000 = false;
-              jjtn000.jjtSetLastToken(getToken(0));
-                if (precision == null) {
-                dt = new IntervalDayToSecond();
-            }
-            else {
-                pl = Long.decode(precision.image);
-                if (scale == null) {
-                    dt = new IntervalDayToSecond(pl);
-                }
-                else {
-                    sl = Long.decode(scale.image);
-                    dt = new IntervalDayToSecond(pl, sl);
-                }
-            }
-            {if (true) return dt;}
-        } else {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case K_INTERVAL:
-            jj_consume_token(K_INTERVAL);
-            jj_consume_token(K_YEAR);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[46] = jj_gen;
-              ;
-            }
-            jj_consume_token(K_TO);
-            jj_consume_token(K_MONTH);
-              jjtree.closeNodeScope(jjtn000, true);
-              jjtc000 = false;
-              jjtn000.jjtSetLastToken(getToken(0));
-            if (precision == null) {
-                dt = new IntervalYearToMonth();
-            }
-            else {
-                pl = Long.decode(precision.image);
-                dt = new IntervalYearToMonth(pl);
-            }
-            {if (true) return dt;}
-            break;
-          case K_TIME:
-          case K_TIMESTAMP:
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_TIME:
-              jj_consume_token(K_TIME);
-                   {if (true) return TIME_TYPE;}
-              break;
-            case K_TIMESTAMP:
-              jj_consume_token(K_TIMESTAMP);
-                          {if (true) return TIMESTAMP_TYPE;}
-              break;
-            default:
-              jj_la1[47] = jj_gen;
-              jj_consume_token(-1);
-              throw new ParseException();
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[48] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_WITH:
-              jj_consume_token(K_WITH);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case K_LOCAL:
-                jj_consume_token(K_LOCAL);
-                break;
-              default:
-                jj_la1[49] = jj_gen;
-                ;
-              }
-              jj_consume_token(K_TIME);
-              jj_consume_token(K_ZONE);
-              break;
-            default:
-              jj_la1[50] = jj_gen;
-              ;
-            }
-            break;
-          case K_INTEGER:
-            jj_consume_token(K_INTEGER);
-                     jjtree.closeNodeScope(jjtn000, true);
-                     jjtc000 = false;
-                     jjtn000.jjtSetLastToken(getToken(0));
-                     {if (true) return INTEGER_TYPE;}
-            break;
-          case K_INT:
-            jj_consume_token(K_INT);
-                     jjtree.closeNodeScope(jjtn000, true);
-                     jjtc000 = false;
-                     jjtn000.jjtSetLastToken(getToken(0));
-                     {if (true) return INTEGER_TYPE;}
-            break;
-          case K_SMALLINT:
-            jj_consume_token(K_SMALLINT);
-                     jjtree.closeNodeScope(jjtn000, true);
-                     jjtc000 = false;
-                     jjtn000.jjtSetLastToken(getToken(0));
-                     {if (true) return SMALLINT_TYPE;}
-            break;
-          case K_FLOAT:
-            jj_consume_token(K_FLOAT);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[51] = jj_gen;
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (precision == null) {
-              {if (true) return new FloatType();}
-          }
-          else {
-              pl = Long.decode(precision.image);
-              FloatType ft = new FloatType(pl);
-              {if (true) return ft;}
-          }
-            break;
-          case K_REAL:
-            jj_consume_token(K_REAL);
-                 jjtree.closeNodeScope(jjtn000, true);
-                 jjtc000 = false;
-                 jjtn000.jjtSetLastToken(getToken(0));
-                 {if (true) return new RealType();}
-            break;
-          case K_MLSLABEL:
-            jj_consume_token(K_MLSLABEL);
-                     jjtree.closeNodeScope(jjtn000, true);
-                     jjtc000 = false;
-                     jjtn000.jjtSetLastToken(getToken(0));
-                     {if (true) return MLSLABEL_TYPE;}
-            break;
-          case K_PLS_INTEGER:
-            jj_consume_token(K_PLS_INTEGER);
-                        jjtree.closeNodeScope(jjtn000, true);
-                        jjtc000 = false;
-                        jjtn000.jjtSetLastToken(getToken(0));
-                        {if (true) return PLS_INTEGER_TYPE;}
-            break;
-          case K_SIMPLE_INTEGER:
-            jj_consume_token(K_SIMPLE_INTEGER);
-                           jjtree.closeNodeScope(jjtn000, true);
-                           jjtc000 = false;
-                           jjtn000.jjtSetLastToken(getToken(0));
-                           {if (true) return SIMPLE_INTEGER_TYPE;}
-            break;
-          case K_BLOB:
-            jj_consume_token(K_BLOB);
-                  jjtree.closeNodeScope(jjtn000, true);
-                  jjtc000 = false;
-                  jjtn000.jjtSetLastToken(getToken(0));
-                  {if (true) return new BlobType();}
-            break;
-          case K_NCLOB:
-            jj_consume_token(K_NCLOB);
-                  jjtree.closeNodeScope(jjtn000, true);
-                  jjtc000 = false;
-                  jjtn000.jjtSetLastToken(getToken(0));
-                  {if (true) return new NClobType();}
-            break;
-          case K_BFILE:
-            jj_consume_token(K_BFILE);
-                   jjtree.closeNodeScope(jjtn000, true);
-                   jjtc000 = false;
-                   jjtn000.jjtSetLastToken(getToken(0));
-                   {if (true) return BFILE_TYPE;}
-            break;
-          case K_ROWID:
-            jj_consume_token(K_ROWID);
-                  jjtree.closeNodeScope(jjtn000, true);
-                  jjtc000 = false;
-                  jjtn000.jjtSetLastToken(getToken(0));
-                  {if (true) return ROWID_TYPE;}
-            break;
-          case K_UROWID:
-            jj_consume_token(K_UROWID);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[52] = jj_gen;
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (precision == null) {
-              {if (true) return new URowIdType();}
-          }
-          else {
-              pl = Long.decode(precision.image);
-              {if (true) return new URowIdType(pl);}
-          }
-            break;
-          case K_DOUBLE:
-            jj_consume_token(K_DOUBLE);
-            jj_consume_token(K_PRECISION);
-                                 jjtree.closeNodeScope(jjtn000, true);
-                                 jjtc000 = false;
-                                 jjtn000.jjtSetLastToken(getToken(0));
-                                 {if (true) return new DoubleType();}
-            break;
-          case K_CHAR:
-            jj_consume_token(K_CHAR);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_VARYING:
-              t = jj_consume_token(K_VARYING);
-              break;
-            default:
-              jj_la1[53] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case K_BYTE:
-              case K_CHAR:
-                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                case K_BYTE:
-                  jj_consume_token(K_BYTE);
-                  break;
-                case K_CHAR:
-                  jj_consume_token(K_CHAR);
-                  break;
-                default:
-                  jj_la1[54] = jj_gen;
-                  jj_consume_token(-1);
-                  throw new ParseException();
-                }
-                break;
-              default:
-                jj_la1[55] = jj_gen;
-                ;
-              }
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[56] = jj_gen;
-              ;
-            }
-            if (jj_2_8(2)) {
-              jj_consume_token(K_CHARACTER);
-              jj_consume_token(K_SET);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case S_IDENTIFIER:
-              case S_QUOTED_IDENTIFIER:
-                if (jj_2_7(2)) {
-                  jj_consume_token(S_IDENTIFIER);
-                } else {
-                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                  case S_IDENTIFIER:
-                  case S_QUOTED_IDENTIFIER:
-                    columnSpec();
-                    jj_consume_token(K_CHARSET);
-                    break;
-                  default:
-                    jj_la1[57] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                  }
-                }
-                break;
-              default:
-                jj_la1[58] = jj_gen;
-                ;
-              }
-            } else {
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (t == null) {
-              if (precision == null) {
-                  {if (true) return new CharType();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new CharType(pl);}
-              }
-          }
-          else {
-              // ANSI syntax for VARCHAR2
-              if (precision == null) {
-                  {if (true) return new VarChar2Type();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new VarChar2Type(pl);}
-              }
-          }
-            break;
-          case K_VARCHAR:
-            jj_consume_token(K_VARCHAR);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_VARYING:
-              jj_consume_token(K_VARYING);
-              break;
-            default:
-              jj_la1[59] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case K_BYTE:
-              case K_CHAR:
-                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                case K_BYTE:
-                  jj_consume_token(K_BYTE);
-                  break;
-                case K_CHAR:
-                  jj_consume_token(K_CHAR);
-                  break;
-                default:
-                  jj_la1[60] = jj_gen;
-                  jj_consume_token(-1);
-                  throw new ParseException();
-                }
-                break;
-              default:
-                jj_la1[61] = jj_gen;
-                ;
-              }
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[62] = jj_gen;
-              ;
-            }
-            if (jj_2_10(2)) {
-              jj_consume_token(K_CHARACTER);
-              jj_consume_token(K_SET);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case S_IDENTIFIER:
-              case S_QUOTED_IDENTIFIER:
-                if (jj_2_9(2)) {
-                  jj_consume_token(S_IDENTIFIER);
-                } else {
-                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                  case S_IDENTIFIER:
-                  case S_QUOTED_IDENTIFIER:
-                    columnSpec();
-                    jj_consume_token(K_CHARSET);
-                    break;
-                  default:
-                    jj_la1[63] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                  }
-                }
-                break;
-              default:
-                jj_la1[64] = jj_gen;
-                ;
-              }
-            } else {
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (precision == null) {
-              {if (true) return new VarCharType();}
-          }
-          else {
-              pl = Long.decode(precision.image);
-              {if (true) return new VarCharType(pl);}
-          }
-            break;
-          case K_VARCHAR2:
-            jj_consume_token(K_VARCHAR2);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_VARYING:
-              jj_consume_token(K_VARYING);
-              break;
-            default:
-              jj_la1[65] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case K_BYTE:
-              case K_CHAR:
-                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                case K_BYTE:
-                  jj_consume_token(K_BYTE);
-                  break;
-                case K_CHAR:
-                  jj_consume_token(K_CHAR);
-                  break;
-                default:
-                  jj_la1[66] = jj_gen;
-                  jj_consume_token(-1);
-                  throw new ParseException();
-                }
-                break;
-              default:
-                jj_la1[67] = jj_gen;
-                ;
-              }
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[68] = jj_gen;
-              ;
-            }
-            if (jj_2_12(2)) {
-              jj_consume_token(K_CHARACTER);
-              jj_consume_token(K_SET);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case S_IDENTIFIER:
-              case S_QUOTED_IDENTIFIER:
-                if (jj_2_11(2)) {
-                  jj_consume_token(S_IDENTIFIER);
-                } else {
-                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                  case S_IDENTIFIER:
-                  case S_QUOTED_IDENTIFIER:
-                    columnSpec();
-                    jj_consume_token(K_CHARSET);
-                    break;
-                  default:
-                    jj_la1[69] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                  }
-                }
-                break;
-              default:
-                jj_la1[70] = jj_gen;
-                ;
-              }
-            } else {
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-            if (precision == null) {
-                {if (true) return new VarChar2Type();}
-            }
-            else {
-                pl = Long.decode(precision.image);
-                {if (true) return new VarChar2Type(pl);}
-            }
-            break;
-          case K_CHARACTER:
-            jj_consume_token(K_CHARACTER);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_VARYING:
-              t = jj_consume_token(K_VARYING);
-              break;
-            default:
-              jj_la1[71] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[72] = jj_gen;
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (t == null) {
-              if (precision == null) {
-                  {if (true) return new CharType();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new CharType(pl);}
-              }
-          }
-          else {
-              // ANSI syntax for VARCHAR
-              if (precision == null) {
-                  {if (true) return new VarCharType();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new VarCharType(pl);}
-              }
-          }
-            break;
-          case K_NCHAR:
-            jj_consume_token(K_NCHAR);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_VARYING:
-              t = jj_consume_token(K_VARYING);
-              break;
-            default:
-              jj_la1[73] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[74] = jj_gen;
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (t == null) {
-              if (precision == null) {
-                  {if (true) return new NCharType();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new NCharType(pl);}
-              }
-          }
-          else {
-              // ANSI syntax for NVARCHAR2
-              if (precision == null) {
-                  {if (true) return new NVarChar2Type();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new NVarChar2Type(pl);}
-              }
-          }
-            break;
-          case K_NVARCHAR:
-            jj_consume_token(K_NVARCHAR);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[75] = jj_gen;
-              ;
-            }
-              jjtree.closeNodeScope(jjtn000, true);
-              jjtc000 = false;
-              jjtn000.jjtSetLastToken(getToken(0));
-            if (precision == null) {
-                {if (true) return new NVarChar2Type();}
-            }
-            else {
-                pl = Long.decode(precision.image);
-                {if (true) return new NVarChar2Type(pl);}
-            }
-            break;
-          case K_NVARCHAR2:
-            jj_consume_token(K_NVARCHAR2);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[76] = jj_gen;
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-            if (precision == null) {
-                {if (true) return new NVarChar2Type();}
-            }
-            else {
-                pl = Long.decode(precision.image);
-                {if (true) return new NVarChar2Type(pl);}
-            }
-            break;
-          case K_NATIONAL:
-            jj_consume_token(K_NATIONAL);
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_CHARACTER:
-              jj_consume_token(K_CHARACTER);
-              break;
-            case K_CHAR:
-              jj_consume_token(K_CHAR);
-              break;
-            default:
-              jj_la1[77] = jj_gen;
-              jj_consume_token(-1);
-              throw new ParseException();
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_VARYING:
-              t = jj_consume_token(K_VARYING);
-              break;
-            default:
-              jj_la1[78] = jj_gen;
-              ;
-            }
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              precision = jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[79] = jj_gen;
-              ;
-            }
-          jjtree.closeNodeScope(jjtn000, true);
-          jjtc000 = false;
-          jjtn000.jjtSetLastToken(getToken(0));
-          if (t == null) {
-              if (precision == null) {
-                  {if (true) return new NCharType();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new NCharType(pl);}
-              }
-          }
-          else {
-              // ANSI syntax for NVARCHAR2
-              if (precision == null) {
-                  {if (true) return new NVarChar2Type();}
-              }
-              else {
-                  pl = Long.decode(precision.image);
-                  {if (true) return new NVarChar2Type(pl);}
-              }
-          }
-            break;
-          case K_CLOB:
-            jj_consume_token(K_CLOB);
-            if (jj_2_14(2)) {
-              jj_consume_token(K_CHARACTER);
-              jj_consume_token(K_SET);
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case S_IDENTIFIER:
-              case S_QUOTED_IDENTIFIER:
-                if (jj_2_13(2)) {
-                  jj_consume_token(S_IDENTIFIER);
-                } else {
-                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-                  case S_IDENTIFIER:
-                  case S_QUOTED_IDENTIFIER:
-                    columnSpec();
-                    jj_consume_token(K_CHARSET);
-                    break;
-                  default:
-                    jj_la1[80] = jj_gen;
-                    jj_consume_token(-1);
-                    throw new ParseException();
-                  }
-                }
-                break;
-              default:
-                jj_la1[81] = jj_gen;
-                ;
-              }
-            } else {
-              ;
-            }
-                                                                                                                   jjtree.closeNodeScope(jjtn000, true);
-                                                                                                                   jjtc000 = false;
-                                                                                                                   jjtn000.jjtSetLastToken(getToken(0));
-                                                                                                                   {if (true) return new ClobType();}
-            break;
-          default:
-            jj_la1[83] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-        }
-      }
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String typeSpec() throws ParseException {
- /*@bgen(jjtree) typeSpec */
- SimpleNode jjtn000 = new SimpleNode(JJTTYPESPEC);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));String s = null;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_BFILE:
-      case K_BINARY_DOUBLE:
-      case K_BINARY_FLOAT:
-      case K_BINARY_INTEGER:
-      case K_BLOB:
-      case K_BOOLEAN:
-      case K_CHAR:
-      case K_CHARACTER:
-      case K_CLOB:
-      case K_DATE:
-      case K_DEC:
-      case K_DECIMAL:
-      case K_DOUBLE:
-      case K_FLOAT:
-      case K_INT:
-      case K_INTEGER:
-      case K_INTERVAL:
-      case K_LONG:
-      case K_MLSLABEL:
-      case K_NATIONAL:
-      case K_NATURAL:
-      case K_NCHAR:
-      case K_NCLOB:
-      case K_NUMBER:
-      case K_NUMERIC:
-      case K_NVARCHAR2:
-      case K_NVARCHAR:
-      case K_PLS_INTEGER:
-      case K_POSITIVE:
-      case K_RAW:
-      case K_REAL:
-      case K_ROWID:
-      case K_SIMPLE_INTEGER:
-      case K_SMALLINT:
-      case K_TIME:
-      case K_TIMESTAMP:
-      case K_UROWID:
-      case K_VARCHAR2:
-      case K_VARCHAR:
-        datatype();
-        break;
-      default:
-        jj_la1[85] = jj_gen;
-        if (jj_2_16(3)) {
-          columnSpec();
-          jj_consume_token(K_TYPE2);
-        } else if (jj_2_17(3)) {
-          tableSpec();
-          jj_consume_token(K_ROWTYPE);
-        } else {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case S_IDENTIFIER:
-          case S_QUOTED_IDENTIFIER:
-            typeName();
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case O_OPENPAREN:
-              jj_consume_token(O_OPENPAREN);
-              jj_consume_token(S_NUMBER);
-              jj_consume_token(O_CLOSEPAREN);
-              break;
-            default:
-              jj_la1[84] = jj_gen;
-              ;
-            }
-            break;
-          default:
-            jj_la1[86] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-        }
-      }
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      Token first = jjtn000.jjtGetFirstToken();
-      Token last = jjtn000.jjtGetLastToken();
-      Token cur = first;
-      StringBuilder sb = new StringBuilder();
-      sb.append(first.image);
-      while (cur != last) {
-          cur = cur.next;
-          sb.append(cur.image);
-      }
-      jjtn000.jjtSetValue(sb.toString());
-      {if (true) return sb.toString();}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String columnSpec() throws ParseException {
- String s1 = null;
- String s2 = null;
- String s3 = null;
-    s1 = OracleObjectName();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_DOT:
-      jj_consume_token(O_DOT);
-      s2 = OracleObjectName();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_DOT:
-        jj_consume_token(O_DOT);
-        s3 = OracleObjectName();
-        break;
-      default:
-        jj_la1[87] = jj_gen;
-        ;
-      }
-      break;
-    default:
-      jj_la1[88] = jj_gen;
-      ;
-    }
-      StringBuilder sb = new StringBuilder(s1);
-      if (s2 != null) {
-          sb.append('.');
-          sb.append(s2);
-          if (s3 != null) {
-              sb.append('.');
-              sb.append(s3);
-          }
-      }
-      {if (true) return sb.toString();}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String tableSpec() throws ParseException {
-    OracleObjectName();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_DOT:
-      jj_consume_token(O_DOT);
-      OracleObjectName();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_ATSIGN:
-        jj_consume_token(O_ATSIGN);
-        jj_consume_token(S_IDENTIFIER);
-        break;
-      default:
-        jj_la1[89] = jj_gen;
-        ;
-      }
-      break;
-    default:
-      jj_la1[90] = jj_gen;
-      ;
-    }
-     {if (true) return token.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String typeName() throws ParseException {
-    OracleObjectName();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_DOT:
-      jj_consume_token(O_DOT);
-      OracleObjectName();
-      break;
-    default:
-      jj_la1[91] = jj_gen;
-      ;
-    }
-     {if (true) return token.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void typeDeclaration(PLSQLPackageType packageType) throws ParseException {
- String s = null;
-    jj_consume_token(K_TYPE);
-    s = typeName();
-    jj_consume_token(K_IS);
-    aTypeDeclaration(packageType);
-    jj_consume_token(O_SEMICOLON);
-  }
-
-  final public void aTypeDeclaration(PLSQLPackageType packageType) throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_RECORD:
-      recordDeclaration(packageType);
-      break;
-    case K_SUBTYPE:
-      subtypeDeclaration(packageType);
-      break;
-    case K_TABLE:
-      plsqlTableDeclaration(packageType);
-      break;
-    case K_VARRAY:
-    case K_VARYING:
-      varrayDeclaration(packageType);
-      break;
-    case K_REF:
-      refCursorDeclaration(packageType);
-      break;
-    default:
-      jj_la1[92] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-  }
-
-  final public void recordDeclaration(PLSQLPackageType packageType) throws ParseException {
-    jj_consume_token(K_RECORD);
-    jj_consume_token(O_OPENPAREN);
-    fieldDeclarations();
-    jj_consume_token(O_CLOSEPAREN);
-  }
-
-  final public void fieldDeclarations() throws ParseException {
-    fieldDeclaration();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_COMMA:
-      jj_consume_token(O_COMMA);
-      fieldDeclarations();
-      break;
-    default:
-      jj_la1[93] = jj_gen;
-      ;
-    }
-  }
-
-  final public SimpleNode fieldDeclaration() throws ParseException {
- /*@bgen(jjtree) fieldDeclaration */
- SimpleNode jjtn000 = new SimpleNode(JJTFIELDDECLARATION);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));String s = null;
-    try {
-      s = typeName();
-      typeSpec();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_NOT:
-        jj_consume_token(K_NOT);
-        jj_consume_token(K_NULL);
-        break;
-      default:
-        jj_la1[94] = jj_gen;
-        ;
-      }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_DEFAULT:
-      case O_ASSIGN:
-        variableDefaultAssignment();
-        break;
-      default:
-        jj_la1[95] = jj_gen;
-        ;
-      }
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      jjtn000.jjtSetValue(s);
-      {if (true) return jjtn000;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void subtypeDeclaration(PLSQLPackageType packageType) throws ParseException {
-    jj_consume_token(K_SUBTYPE);
-    OracleObjectName();
-    jj_consume_token(K_IS);
-    datatype();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_RANGE:
-      jj_consume_token(K_RANGE);
-      jj_consume_token(S_NUMBER);
-      jj_consume_token(O_DOUBLEDOT);
-      jj_consume_token(S_NUMBER);
-      break;
-    case S_NUMBER:
-      jj_consume_token(S_NUMBER);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_COMMA:
-        jj_consume_token(O_COMMA);
-        jj_consume_token(S_NUMBER);
-        break;
-      default:
-        jj_la1[96] = jj_gen;
-        ;
-      }
-      break;
-    case K_CHARACTER:
-      jj_consume_token(K_CHARACTER);
-      jj_consume_token(K_SET);
-      jj_consume_token(S_IDENTIFIER);
-      break;
-    default:
-      jj_la1[97] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_NOT:
-      jj_consume_token(K_NOT);
-      jj_consume_token(K_NULL);
-      break;
-    default:
-      jj_la1[98] = jj_gen;
-      ;
-    }
-  }
-
-  final public void plsqlTableDeclaration(PLSQLPackageType packageType) throws ParseException {
-    jj_consume_token(K_TABLE);
-    jj_consume_token(K_OF);
-    typeSpec();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_NOT:
-      jj_consume_token(K_NOT);
-      jj_consume_token(K_NULL);
-      break;
-    default:
-      jj_la1[99] = jj_gen;
-      ;
-    }
-    jj_consume_token(K_INDEX);
-    jj_consume_token(K_BY);
-    plsqlTableIndexByDeclaration(packageType);
-  }
-
-  final public void plsqlTableIndexByDeclaration(PLSQLPackageType packageType) throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_PLS_INTEGER:
-      jj_consume_token(K_PLS_INTEGER);
-      break;
-    case K_BINARY_INTEGER:
-      jj_consume_token(K_BINARY_INTEGER);
-      break;
-    case K_VARCHAR2:
-      jj_consume_token(K_VARCHAR2);
-      jj_consume_token(O_OPENPAREN);
-      jj_consume_token(S_NUMBER);
-      jj_consume_token(O_CLOSEPAREN);
-      break;
-    case K_STRING:
-      jj_consume_token(K_STRING);
-      jj_consume_token(O_OPENPAREN);
-      jj_consume_token(S_NUMBER);
-      jj_consume_token(O_CLOSEPAREN);
-      break;
-    default:
-      jj_la1[100] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-  }
-
-  final public void varrayDeclaration(PLSQLPackageType packageType) throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_VARRAY:
-      jj_consume_token(K_VARRAY);
-      break;
-    case K_VARYING:
-      jj_consume_token(K_VARYING);
-      jj_consume_token(K_ARRAY);
-      break;
-    default:
-      jj_la1[101] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-    jj_consume_token(O_OPENPAREN);
-    jj_consume_token(S_NUMBER);
-    jj_consume_token(O_CLOSEPAREN);
-    jj_consume_token(K_OF);
-    datatype();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_NOT:
-      jj_consume_token(K_NOT);
-      jj_consume_token(K_NULL);
-      break;
-    default:
-      jj_la1[102] = jj_gen;
-      ;
-    }
-  }
-
-  final public void refCursorDeclaration(PLSQLPackageType packageType) throws ParseException {
- String s = null;
-    jj_consume_token(K_REF);
-    jj_consume_token(K_CURSOR);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_RETURN:
-      refCursorTypeSpec(packageType);
-      break;
-    default:
-      jj_la1[103] = jj_gen;
-      ;
-    }
-  }
-
-  final public void refCursorTypeSpec(PLSQLPackageType packageType) throws ParseException {
- String s = null;
-    jj_consume_token(K_RETURN);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case S_IDENTIFIER:
-    case S_QUOTED_IDENTIFIER:
-      if (jj_2_18(3)) {
-        s = columnSpec();
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_TYPE2:
-          jj_consume_token(K_TYPE2);
-          break;
-        default:
-          jj_la1[104] = jj_gen;
-          ;
-        }
-      } else if (jj_2_19(3)) {
-        s = tableSpec();
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_ROWTYPE:
-          jj_consume_token(K_ROWTYPE);
-          break;
-        default:
-          jj_la1[105] = jj_gen;
-          ;
-        }
-      } else {
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      break;
-    default:
-      jj_la1[106] = jj_gen;
-      ;
-    }
-  }
-
-  final public void cursorDeclaration(PLSQLPackageType packageType) throws ParseException {
- Token t = null;
-    jj_consume_token(K_CURSOR);
-    t = jj_consume_token(S_IDENTIFIER);
-    jj_consume_token(O_SEMICOLON);
-  }
-
-// Procedure Specification
-  final public void procedureSpec(PLSQLPackageType packageType) throws ParseException {
- Token t = null;
-    jj_consume_token(K_PROCEDURE);
-    t = jj_consume_token(S_IDENTIFIER);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_OPENPAREN:
-      jj_consume_token(O_OPENPAREN);
-      argumentList();
-      jj_consume_token(O_CLOSEPAREN);
-      break;
-    default:
-      jj_la1[107] = jj_gen;
-      ;
-    }
-    jj_consume_token(O_SEMICOLON);
-  }
-
-  final public void argumentList() throws ParseException {
-    argument();
-    label_5:
-    while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_COMMA:
-        ;
-        break;
-      default:
-        jj_la1[108] = jj_gen;
-        break label_5;
-      }
-      jj_consume_token(O_COMMA);
-      argument();
-    }
-  }
-
-// Function Specification
-  final public void functionSpec(PLSQLPackageType packageType) throws ParseException {
- Token t = null;
-    jj_consume_token(K_FUNCTION);
-    t = jj_consume_token(S_IDENTIFIER);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case O_OPENPAREN:
-      jj_consume_token(O_OPENPAREN);
-      argumentList();
-      jj_consume_token(O_CLOSEPAREN);
-      break;
-    default:
-      jj_la1[109] = jj_gen;
-      ;
-    }
-    functionReturnSpec();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_DETERMINISTIC:
-    case K_PARALLEL_ENABLE:
-    case K_PIPELINED:
-    case K_RESULT_CACHE:
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_DETERMINISTIC:
-        jj_consume_token(K_DETERMINISTIC);
-        break;
-      case K_PIPELINED:
-        jj_consume_token(K_PIPELINED);
-        break;
-      case K_PARALLEL_ENABLE:
-        jj_consume_token(K_PARALLEL_ENABLE);
-        break;
-      case K_RESULT_CACHE:
-        jj_consume_token(K_RESULT_CACHE);
-        break;
-      default:
-        jj_la1[110] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      break;
-    default:
-      jj_la1[111] = jj_gen;
-      ;
-    }
-    jj_consume_token(O_SEMICOLON);
-  }
-
-  final public SimpleNode functionReturnSpec() throws ParseException {
- /*@bgen(jjtree) functionReturnSpec */
-  SimpleNode jjtn000 = new SimpleNode(JJTFUNCTIONRETURNSPEC);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtn000.jjtSetFirstToken(getToken(1));
-    try {
-      jj_consume_token(K_RETURN);
-      typeSpec();
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      jjtn000.jjtSetValue("RETURN");
-      {if (true) return jjtn000;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public SimpleNode argument() throws ParseException {
- /*@bgen(jjtree) argument */
- SimpleNode jjtn000 = new SimpleNode(JJTARGUMENT);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);
- jjtn000.jjtSetFirstToken(getToken(1));Token t = null;
- String direction = null;
-    try {
-      t = jj_consume_token(S_IDENTIFIER);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_IN:
-      case K_OUT:
-        direction = direction();
-        break;
-      default:
-        jj_la1[112] = jj_gen;
-        ;
-      }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_NOCOPY:
-        jj_consume_token(K_NOCOPY);
-        break;
-      default:
-        jj_la1[113] = jj_gen;
-        ;
-      }
-      typeSpec();
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_DEFAULT:
-      case O_ASSIGN:
-        argumentDefaultAssignment();
-        break;
-      default:
-        jj_la1[114] = jj_gen;
-        ;
-      }
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      if (direction != null) {
-          jjtn000.jjtSetValue(direction + " " + t.image);
-      }
-      else {
-          // by default, arguments are IN
-          jjtn000.jjtSetValue("IN " + t.image);
-      }
-      {if (true) return jjtn000;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String direction() throws ParseException {
-    if (jj_2_20(2)) {
-      jj_consume_token(K_IN);
-      jj_consume_token(K_OUT);
-                                  {if (true) return "IN OUT";}
-    } else {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_IN:
-        jj_consume_token(K_IN);
-               {if (true) return "IN";}
-        break;
-      case K_OUT:
-        jj_consume_token(K_OUT);
-                 {if (true) return "OUT";}
-        break;
-      default:
-        jj_la1[115] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public SimpleNode argumentDefaultAssignment() throws ParseException {
- /*@bgen(jjtree) argumentDefaultAssignment */
-  SimpleNode jjtn000 = new SimpleNode(JJTARGUMENTDEFAULTASSIGNMENT);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtn000.jjtSetFirstToken(getToken(1));
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case O_ASSIGN:
-        jj_consume_token(O_ASSIGN);
-        break;
-      case K_DEFAULT:
-        jj_consume_token(K_DEFAULT);
-        break;
-      default:
-        jj_la1[116] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      skipToNextArg();
-      jjtree.closeNodeScope(jjtn000, true);
-      jjtc000 = false;
-      jjtn000.jjtSetLastToken(getToken(0));
-      jjtn000.jjtSetValue(" (optional)");
-      {if (true) return jjtn000;}
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtn000.jjtSetLastToken(getToken(0));
-      }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void exceptionDeclaration(PLSQLPackageType packageType) throws ParseException {
-    jj_consume_token(S_IDENTIFIER);
-    jj_consume_token(K_EXCEPTION);
-    jj_consume_token(O_SEMICOLON);
-  }
-
-  final public void pragmaDeclaration(PLSQLPackageType packageType) throws ParseException {
-    jj_consume_token(K_PRAGMA);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case K_AUTONOMOUS_TRANSACTION:
-    case K_EXCEPTION_INIT:
-    case K_INLINE:
-    case K_RESTRICT_REFERENCES:
-    case K_SERIALLY_REUSABLE:
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case K_AUTONOMOUS_TRANSACTION:
-        jj_consume_token(K_AUTONOMOUS_TRANSACTION);
-        break;
-      case K_EXCEPTION_INIT:
-        jj_consume_token(K_EXCEPTION_INIT);
-        jj_consume_token(O_OPENPAREN);
-        jj_consume_token(S_IDENTIFIER);
-        jj_consume_token(O_COMMA);
-        jj_consume_token(S_NUMBER);
-        jj_consume_token(O_CLOSEPAREN);
-        break;
-      case K_SERIALLY_REUSABLE:
-        jj_consume_token(K_SERIALLY_REUSABLE);
-        break;
-      case K_INLINE:
-        jj_consume_token(K_INLINE);
-        jj_consume_token(O_OPENPAREN);
-        jj_consume_token(S_IDENTIFIER);
-        jj_consume_token(O_COMMA);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_NO:
-        case K_YES:
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case K_YES:
-            jj_consume_token(K_YES);
-            break;
-          case K_NO:
-            jj_consume_token(K_NO);
-            break;
-          default:
-            jj_la1[117] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-          break;
-        default:
-          jj_la1[118] = jj_gen;
-          ;
-        }
-        jj_consume_token(O_CLOSEPAREN);
-        break;
-      case K_RESTRICT_REFERENCES:
-        jj_consume_token(K_RESTRICT_REFERENCES);
-        jj_consume_token(O_OPENPAREN);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case K_DEFAULT:
-        case S_IDENTIFIER:
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case S_IDENTIFIER:
-            jj_consume_token(S_IDENTIFIER);
-            break;
-          case K_DEFAULT:
-            jj_consume_token(K_DEFAULT);
-            break;
-          default:
-            jj_la1[119] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-          break;
-        default:
-          jj_la1[120] = jj_gen;
-          ;
-        }
-        label_6:
-        while (true) {
-          jj_consume_token(O_COMMA);
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case K_RNDS:
-          case K_RNPS:
-          case K_TRUST:
-          case K_WNDS:
-          case K_WNPS:
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case K_RNDS:
-              jj_consume_token(K_RNDS);
-              break;
-            case K_WNDS:
-              jj_consume_token(K_WNDS);
-              break;
-            case K_RNPS:
-              jj_consume_token(K_RNPS);
-              break;
-            case K_WNPS:
-              jj_consume_token(K_WNPS);
-              break;
-            case K_TRUST:
-              jj_consume_token(K_TRUST);
-              break;
-            default:
-              jj_la1[121] = jj_gen;
-              jj_consume_token(-1);
-              throw new ParseException();
-            }
-            break;
-          default:
-            jj_la1[122] = jj_gen;
-            ;
-          }
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case O_COMMA:
-            ;
-            break;
-          default:
-            jj_la1[123] = jj_gen;
-            break label_6;
-          }
-        }
-        jj_consume_token(O_CLOSEPAREN);
-        break;
-      default:
-        jj_la1[124] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      break;
-    default:
-      jj_la1[125] = jj_gen;
-      ;
-    }
-    jj_consume_token(O_SEMICOLON);
-  }
-
-  final public String OracleObjectName() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case S_IDENTIFIER:
-      jj_consume_token(S_IDENTIFIER);
-     {if (true) return token.image;}
-      break;
-    case S_QUOTED_IDENTIFIER:
-      jj_consume_token(S_QUOTED_IDENTIFIER);
-      String s = token.image;
-      {if (true) return s.substring(1, s.length() - 1);} // strip-off quotes
-
-      break;
-    default:
-      jj_la1[126] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void skipToSemiColon() throws ParseException {
-        Token t = getNextToken();
-        while (t.kind != O_SEMICOLON) {
-                t = getNextToken();
-        }
-        token_source.input_stream.backup(1);
-  }
-
-  final public void skipToNextArg() throws ParseException {
-        Token t = getNextToken();
-        while (t.kind != O_COMMA && t.kind != O_CLOSEPAREN) {
-            t = getNextToken();
-        }
-        token_source.input_stream.backup(1);
-  }
-
-  final public void skipToEnd() throws ParseException {
-      /** skip through all the tokens. */
-      Token t = getNextToken();
-      while (t.kind != EOF) {
-          t = getNextToken();
-      }
-  }
-
-  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_2_10(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_10(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(9, xla); }
-  }
-
-  private boolean jj_2_11(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_11(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(10, xla); }
-  }
-
-  private boolean jj_2_12(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_12(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(11, xla); }
-  }
-
-  private boolean jj_2_13(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_13(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(12, xla); }
-  }
-
-  private boolean jj_2_14(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_14(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(13, xla); }
-  }
-
-  private boolean jj_2_15(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_15(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(14, xla); }
-  }
-
-  private boolean jj_2_16(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_16(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(15, xla); }
-  }
-
-  private boolean jj_2_17(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_17(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(16, xla); }
-  }
-
-  private boolean jj_2_18(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_18(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(17, xla); }
-  }
-
-  private boolean jj_2_19(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_19(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(18, xla); }
-  }
-
-  private boolean jj_2_20(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_20(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(19, xla); }
-  }
-
-  private boolean jj_3R_33() {
-    if (jj_scan_token(K_INT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_32() {
-    if (jj_scan_token(K_INTEGER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_55() {
-    if (jj_scan_token(K_TIME)) return true;
-    return false;
-  }
-
-  private boolean jj_3_20() {
-    if (jj_scan_token(K_IN)) return true;
-    if (jj_scan_token(K_OUT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_31() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_55()) {
-    jj_scanpos = xsp;
-    if (jj_3R_56()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_30() {
-    if (jj_scan_token(K_INTERVAL)) return true;
-    return false;
-  }
-
-  private boolean jj_3_4() {
-    if (jj_3R_7()) return true;
-    if (jj_scan_token(O_DOT)) return true;
-    return false;
-  }
-
-  private boolean jj_3_14() {
-    if (jj_scan_token(K_CHARACTER)) return true;
-    if (jj_scan_token(K_SET)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_17() {
-    if (jj_3R_19()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_49() {
-    if (jj_scan_token(K_CHARACTER)) return true;
-    return false;
-  }
-
-  private boolean jj_3_17() {
-    if (jj_3R_10()) return true;
-    if (jj_scan_token(K_ROWTYPE)) return true;
-    return false;
-  }
-
-  private boolean jj_3_16() {
-    if (jj_3R_9()) return true;
-    if (jj_scan_token(K_TYPE2)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_16() {
-    if (jj_3R_18()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_25() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(116)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(117)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(48)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(47)) return true;
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3_7() {
-    if (jj_scan_token(S_IDENTIFIER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_24() {
-    if (jj_scan_token(K_POSITIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_23() {
-    if (jj_scan_token(K_NATURAL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_13() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_16()) {
-    jj_scanpos = xsp;
-    if (jj_3_16()) {
-    jj_scanpos = xsp;
-    if (jj_3_17()) {
-    jj_scanpos = xsp;
-    if (jj_3R_17()) return true;
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_22() {
-    if (jj_scan_token(K_BINARY_DOUBLE)) return true;
-    return false;
-  }
-
-  private boolean jj_3_12() {
-    if (jj_scan_token(K_CHARACTER)) return true;
-    if (jj_scan_token(K_SET)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_21() {
-    if (jj_scan_token(K_BINARY_FLOAT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_54() {
-    if (jj_scan_token(K_CLOB)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_18() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_20()) {
-    jj_scanpos = xsp;
-    if (jj_3R_21()) {
-    jj_scanpos = xsp;
-    if (jj_3R_22()) {
-    jj_scanpos = xsp;
-    if (jj_3R_23()) {
-    jj_scanpos = xsp;
-    if (jj_3R_24()) {
-    jj_scanpos = xsp;
-    if (jj_3R_25()) {
-    jj_scanpos = xsp;
-    if (jj_3R_26()) {
-    jj_scanpos = xsp;
-    if (jj_3R_27()) {
-    jj_scanpos = xsp;
-    if (jj_3R_28()) {
-    jj_scanpos = xsp;
-    if (jj_3R_29()) {
-    jj_scanpos = xsp;
-    if (jj_3_15()) {
-    jj_scanpos = xsp;
-    if (jj_3R_30()) {
-    jj_scanpos = xsp;
-    if (jj_3R_31()) {
-    jj_scanpos = xsp;
-    if (jj_3R_32()) {
-    jj_scanpos = xsp;
-    if (jj_3R_33()) {
-    jj_scanpos = xsp;
-    if (jj_3R_34()) {
-    jj_scanpos = xsp;
-    if (jj_3R_35()) {
-    jj_scanpos = xsp;
-    if (jj_3R_36()) {
-    jj_scanpos = xsp;
-    if (jj_3R_37()) {
-    jj_scanpos = xsp;
-    if (jj_3R_38()) {
-    jj_scanpos = xsp;
-    if (jj_3R_39()) {
-    jj_scanpos = xsp;
-    if (jj_3R_40()) {
-    jj_scanpos = xsp;
-    if (jj_3R_41()) {
-    jj_scanpos = xsp;
-    if (jj_3R_42()) {
-    jj_scanpos = xsp;
-    if (jj_3R_43()) {
-    jj_scanpos = xsp;
-    if (jj_3R_44()) {
-    jj_scanpos = xsp;
-    if (jj_3R_45()) {
-    jj_scanpos = xsp;
-    if (jj_3R_46()) {
-    jj_scanpos = xsp;
-    if (jj_3R_47()) {
-    jj_scanpos = xsp;
-    if (jj_3R_48()) {
-    jj_scanpos = xsp;
-    if (jj_3R_49()) {
-    jj_scanpos = xsp;
-    if (jj_3R_50()) {
-    jj_scanpos = xsp;
-    if (jj_3R_51()) {
-    jj_scanpos = xsp;
-    if (jj_3R_52()) {
-    jj_scanpos = xsp;
-    if (jj_3R_53()) {
-    jj_scanpos = xsp;
-    if (jj_3R_54()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_20() {
-    if (jj_scan_token(K_BINARY_INTEGER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_48() {
-    if (jj_scan_token(K_VARCHAR2)) return true;
-    return false;
-  }
-
-  private boolean jj_3_15() {
-    if (jj_scan_token(K_INTERVAL)) return true;
-    if (jj_scan_token(K_DAY)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_29() {
-    if (jj_scan_token(K_DATE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_28() {
-    if (jj_scan_token(K_BOOLEAN)) return true;
-    return false;
-  }
-
-  private boolean jj_3_10() {
-    if (jj_scan_token(K_CHARACTER)) return true;
-    if (jj_scan_token(K_SET)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_47() {
-    if (jj_scan_token(K_VARCHAR)) return true;
-    return false;
-  }
-
-  private boolean jj_3_3() {
-    if (jj_3R_7()) return true;
-    if (jj_scan_token(O_DOT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_27() {
-    if (jj_scan_token(K_RAW)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_8() {
-    if (jj_scan_token(S_IDENTIFIER)) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(35)) jj_scanpos = xsp;
-    if (jj_3R_13()) return true;
-    return false;
-  }
-
-  private boolean jj_3_5() {
-    if (jj_3R_7()) return true;
-    if (jj_scan_token(O_DOT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_53() {
-    if (jj_scan_token(K_NATIONAL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_15() {
-    if (jj_scan_token(O_DOT)) return true;
-    if (jj_3R_7()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_12() {
-    if (jj_scan_token(S_QUOTED_IDENTIFIER)) return true;
-    return false;
-  }
-
-  private boolean jj_3_8() {
-    if (jj_scan_token(K_CHARACTER)) return true;
-    if (jj_scan_token(K_SET)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_52() {
-    if (jj_scan_token(K_NVARCHAR2)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_7() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_11()) {
-    jj_scanpos = xsp;
-    if (jj_3R_12()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_11() {
-    if (jj_scan_token(S_IDENTIFIER)) return true;
-    return false;
-  }
-
-  private boolean jj_3_6() {
-    if (jj_3R_8()) return true;
-    return false;
-  }
-
-  private boolean jj_3_18() {
-    if (jj_3R_9()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(188)) jj_scanpos = xsp;
-    return false;
-  }
-
-  private boolean jj_3_2() {
-    if (jj_3R_7()) return true;
-    if (jj_scan_token(O_DOT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_46() {
-    if (jj_scan_token(K_CHAR)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_45() {
-    if (jj_scan_token(K_DOUBLE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_26() {
-    if (jj_scan_token(K_LONG)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_19() {
-    if (jj_3R_7()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_14() {
-    if (jj_scan_token(O_DOT)) return true;
-    if (jj_3R_7()) return true;
-    return false;
-  }
-
-  private boolean jj_3_19() {
-    if (jj_3R_10()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(162)) jj_scanpos = xsp;
-    return false;
-  }
-
-  private boolean jj_3R_51() {
-    if (jj_scan_token(K_NVARCHAR)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_44() {
-    if (jj_scan_token(K_UROWID)) return true;
-    return false;
-  }
-
-  private boolean jj_3_13() {
-    if (jj_scan_token(S_IDENTIFIER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_10() {
-    if (jj_3R_7()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_15()) jj_scanpos = xsp;
-    return false;
-  }
-
-  private boolean jj_3R_43() {
-    if (jj_scan_token(K_ROWID)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_42() {
-    if (jj_scan_token(K_BFILE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_41() {
-    if (jj_scan_token(K_NCLOB)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_40() {
-    if (jj_scan_token(K_BLOB)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_39() {
-    if (jj_scan_token(K_SIMPLE_INTEGER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_38() {
-    if (jj_scan_token(K_PLS_INTEGER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_37() {
-    if (jj_scan_token(K_MLSLABEL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_36() {
-    if (jj_scan_token(K_REAL)) return true;
-    return false;
-  }
-
-  private boolean jj_3_11() {
-    if (jj_scan_token(S_IDENTIFIER)) return true;
-    return false;
-  }
-
-  private boolean jj_3_1() {
-    if (jj_3R_7()) return true;
-    if (jj_scan_token(O_DOT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_50() {
-    if (jj_scan_token(K_NCHAR)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_9() {
-    if (jj_3R_7()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_14()) jj_scanpos = xsp;
-    return false;
-  }
-
-  private boolean jj_3R_35() {
-    if (jj_scan_token(K_FLOAT)) return true;
-    return false;
-  }
-
-  private boolean jj_3_9() {
-    if (jj_scan_token(S_IDENTIFIER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_56() {
-    if (jj_scan_token(K_TIMESTAMP)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_34() {
-    if (jj_scan_token(K_SMALLINT)) return true;
-    return false;
-  }
-
-  /** Generated Token Manager. */
-  public DDLParserTokenManager token_source;
-  JavaCharStream jj_input_stream;
-  /** 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[127];
-  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 private int[] jj_la1_4;
-  static private int[] jj_la1_5;
-  static private int[] jj_la1_6;
-  static private int[] jj_la1_7;
-  static {
-      jj_la1_init_0();
-      jj_la1_init_1();
-      jj_la1_init_2();
-      jj_la1_init_3();
-      jj_la1_init_4();
-      jj_la1_init_5();
-      jj_la1_init_6();
-      jj_la1_init_7();
-   }
-   private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0x0,0x0,0x0,0x2000,0x1000,0x1000,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x1000,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb0be0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,0x0,0x0,0x9c0000,0xb0220000,0x0,0xb0be0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x8000,0x0,};
-   }
-   private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x80400,0x80400,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100000,0x100000,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x819000,0x800,0x8,0x0,0x40000,0x40000,0x18000,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,0x19000,0x800000,0x0,0x819000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x0,0x0,0x40000,0x0,0x40000,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x80000000,0x80000000,0x0,};
-   }
-   private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x100000,0x100000,0x40,0x0,0x0,0x0,0x100000,0x100000,0x0,0x0,0x100000,0x100000,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800b0010,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,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,0x80000000,0xb0010,0x0,0x800b0010,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,0x400,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,};
-   }
-   private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0x20000000,0x1000000,0x1000000,0x0,0x0,0x20000,0x0,0xf01b10,0x0,0x0,0x20000,0x0,0x0,0x300000,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,0x300200,0xc01910,0x0,0xf01b10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x0,0x0,0x0,0x20000,0x20000,0x0,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x10000,0x0,0x40000000,0x0,0x4000,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
-   }
-   private static void jj_la1_init_4() {
-      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x840,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14030,0x840,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,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,0x4020,0x10010,0x0,0x14030,0x0,0x0,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x10,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000a,0x80000a,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x30000000,0x0,0x400000,0x400000,0x0,};
-   }
-   private static void jj_la1_init_5() {
-      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x0,0x603001,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,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,0x603001,0x0,0x603001,0x0,0x0,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x10000000,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x4000000,0x0,0x40,0x40,0x0,};
-   }
-   private static void jj_la1_init_6() {
-      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x20,0x20,0x0,0x200000,0x0,0x0,0x1a,0x0,0x0,0x0,0x8000,0x8000,0x0,0x10000,0x10000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x40,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x1a,0x0,0x1a,0x0,0x400000,0x400000,0x20000,0x400000,0x400000,0x60,0x200000,0x0,0x8000,0x200000,0x0,0x0,0x0,0x8,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x8000,0x2000,0x2000,0x0,0x0,0x600,0x600,0x200000,0x0,0x0,0x0,};
-   }
-   private static void jj_la1_init_7() {
-      jj_la1_7 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x84000,0x0,0x8,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x8,0x84000,0x4000,0x0,0x0,0x0,0x0,0x0,0x400,0x400,0x0,0x8,0x0,0x8,0x8,0x8,0x8,0x8,0x0,0x8,0x0,0x0,0x8,0x8,0x0,0x0,0x0,0x8,0x84000,0x84000,0x0,0x0,0x0,0x8,0x84000,0x84000,0x0,0x0,0x0,0x8,0x84000,0x84000,0x0,0x8,0x0,0x8,0x8,0x8,0x0,0x0,0x8,0x84000,0x84000,0x0,0x0,0x8,0x0,0x84000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x84000,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x0,0x0,0x0,0x84000,};
-   }
-  final private JJCalls[] jj_2_rtns = new JJCalls[20];
-  private boolean jj_rescan = false;
-  private int jj_gc = 0;
-
-  /** Constructor with InputStream. */
-  public DDLParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  /** Constructor with InputStream and supplied encoding */
-  public DDLParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new DDLParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 127; 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(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  /** Reinitialise. */
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 127; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  /** Constructor. */
-  public DDLParser(java.io.Reader stream) {
-    jj_input_stream = new JavaCharStream(stream, 1, 1);
-    token_source = new DDLParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 127; 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(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 127; 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 DDLParser(DDLParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 127; 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(DDLParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 127; 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[244];
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 127; 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;
-          }
-          if ((jj_la1_4[i] & (1<<j)) != 0) {
-            la1tokens[128+j] = true;
-          }
-          if ((jj_la1_5[i] & (1<<j)) != 0) {
-            la1tokens[160+j] = true;
-          }
-          if ((jj_la1_6[i] & (1<<j)) != 0) {
-            la1tokens[192+j] = true;
-          }
-          if ((jj_la1_7[i] & (1<<j)) != 0) {
-            la1tokens[224+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 244; 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 < 20; 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;
-            case 9: jj_3_10(); break;
-            case 10: jj_3_11(); break;
-            case 11: jj_3_12(); break;
-            case 12: jj_3_13(); break;
-            case 13: jj_3_14(); break;
-            case 14: jj_3_15(); break;
-            case 15: jj_3_16(); break;
-            case 16: jj_3_17(); break;
-            case 17: jj_3_18(); break;
-            case 18: jj_3_19(); break;
-            case 19: jj_3_20(); 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;
-  }
-
-}
+public class DDLParser/*@bgen(jjtree)*/implements DDLParserTreeConstants, DDLParserConstants {/*@bgen(jjtree)*/

+  protected JJTDDLParserState jjtree = new JJTDDLParserState();

+    protected DatabaseTypesRepository typesRepository = new DatabaseTypesRepository();

+

+    public DDLParser() {

+        super();

+    }

+

+    public void setTypesRepository(DatabaseTypesRepository typesRepository) {

+        this.typesRepository = typesRepository;

+    }

+

+// stripped-down version of PLSQL grammar: only parses package/top-level DDL specifications

+

+// PLSQLPackage at 'top-level'

+  final public PLSQLPackageType parsePLSQLPackage() throws ParseException {

+ /*@bgen(jjtree) parsePLSQLPackage */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTPARSEPLSQLPACKAGE);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));String schema = null;

+ String packageName = null;

+ PLSQLPackageType packageType = new PLSQLPackageType();

+    try {

+      jj_consume_token(K_CREATE);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_OR:

+        jj_consume_token(K_OR);

+        jj_consume_token(K_REPLACE);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(K_PACKAGE);

+      if (jj_2_1(2)) {

+        schema = OracleObjectName();

+        jj_consume_token(O_DOT);

+      } else {

+        ;

+      }

+      packageName = OracleObjectName();

+          if (schema != null) {

+            packageType.setPackageName(schema + "." + packageName);

+          }

+          else {

+            packageType.setPackageName(packageName);

+          }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_AUTHID:

+        jj_consume_token(K_AUTHID);

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_CURRENT_USER:

+        case K_DEFINER:

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case K_CURRENT_USER:

+            jj_consume_token(K_CURRENT_USER);

+            break;

+          case K_DEFINER:

+            jj_consume_token(K_DEFINER);

+            break;

+          default:

+            jj_consume_token(-1);

+            throw new ParseException();

+          }

+          break;

+        default:

+          ;

+        }

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_AS:

+      case K_IS:

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_AS:

+          jj_consume_token(K_AS);

+          break;

+        case K_IS:

+          jj_consume_token(K_IS);

+          break;

+        default:

+          jj_consume_token(-1);

+          throw new ParseException();

+        }

+        break;

+      default:

+        ;

+      }

+      label_1:

+      while (true) {

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_CURSOR:

+        case K_FUNCTION:

+        case K_PRAGMA:

+        case K_PROCEDURE:

+        case K_TYPE:

+        case S_IDENTIFIER:

+          ;

+          break;

+        default:

+          break label_1;

+        }

+        packageDeclaration(packageType);

+      }

+      jj_consume_token(K_END);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case S_IDENTIFIER:

+      case S_QUOTED_IDENTIFIER:

+        OracleObjectName();

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(O_SEMICOLON);

+      jj_consume_token(0);

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      typesRepository.setDatabaseType(packageName, packageType);

+      {if (true) return packageType;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+// procedure at 'top-level'

+  final public ProcedureType parseTopLevelProcedure() throws ParseException {

+ /*@bgen(jjtree) parseTopLevelProcedure */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTPARSETOPLEVELPROCEDURE);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));ProcedureType procedureType = null;

+ String schema = null;

+ String procedureName = null;

+    try {

+      jj_consume_token(K_CREATE);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_OR:

+        jj_consume_token(K_OR);

+        jj_consume_token(K_REPLACE);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(K_PROCEDURE);

+      if (jj_2_2(2)) {

+        schema = OracleObjectName();

+        jj_consume_token(O_DOT);

+      } else {

+        ;

+      }

+      procedureName = OracleObjectName();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_OPENPAREN:

+        jj_consume_token(O_OPENPAREN);

+        argumentList();

+        jj_consume_token(O_CLOSEPAREN);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_AS:

+      case K_IS:

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_AS:

+          jj_consume_token(K_AS);

+          break;

+        case K_IS:

+          jj_consume_token(K_IS);

+          break;

+        default:

+          jj_consume_token(-1);

+          throw new ParseException();

+        }

+        break;

+      default:

+        ;

+      }

+      skipToEnd();

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      procedureType = new ProcedureType(procedureName);

+      if (schema != null) {

+          procedureType.setSchema(schema);

+      }

+      typesRepository.setDatabaseType(procedureName, procedureType);

+      {if (true) return procedureType;}

+    } catch (Throwable jjte000) {

+    if (jjtc000) {

+      jjtree.clearNodeScope(jjtn000);

+      jjtc000 = false;

+    } else {

+      jjtree.popNode();

+    }

+    if (jjte000 instanceof RuntimeException) {

+      {if (true) throw (RuntimeException)jjte000;}

+    }

+    if (jjte000 instanceof ParseException) {

+      {if (true) throw (ParseException)jjte000;}

+    }

+    {if (true) throw (Error)jjte000;}

+    } finally {

+    if (jjtc000) {

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtn000.jjtSetLastToken(getToken(0));

+    }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+// function at 'top-level'

+  final public FunctionType parseTopLevelFunction() throws ParseException {

+ /*@bgen(jjtree) parseTopLevelFunction */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTPARSETOPLEVELFUNCTION);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));FunctionType functionType = null;

+ String schema = null;

+ String functionName = null;

+    try {

+      jj_consume_token(K_CREATE);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_OR:

+        jj_consume_token(K_OR);

+        jj_consume_token(K_REPLACE);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(K_FUNCTION);

+      if (jj_2_3(2)) {

+        schema = OracleObjectName();

+        jj_consume_token(O_DOT);

+      } else {

+        ;

+      }

+      functionName = OracleObjectName();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_OPENPAREN:

+        jj_consume_token(O_OPENPAREN);

+        argumentList();

+        jj_consume_token(O_CLOSEPAREN);

+        break;

+      default:

+        ;

+      }

+      functionReturnSpec();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_AS:

+      case K_IS:

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_AS:

+          jj_consume_token(K_AS);

+          break;

+        case K_IS:

+          jj_consume_token(K_IS);

+          break;

+        default:

+          jj_consume_token(-1);

+          throw new ParseException();

+        }

+        break;

+      default:

+        ;

+      }

+      skipToEnd();

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      functionType = new FunctionType(functionName);

+      if (schema != null) {

+          functionType.setSchema(schema);

+      }

+      //TODO - figure out returnType

+      typesRepository.setDatabaseType(functionName, functionType);

+      {if (true) return functionType;}

+    } catch (Throwable jjte000) {

+    if (jjtc000) {

+      jjtree.clearNodeScope(jjtn000);

+      jjtc000 = false;

+    } else {

+      jjtree.popNode();

+    }

+    if (jjte000 instanceof RuntimeException) {

+      {if (true) throw (RuntimeException)jjte000;}

+    }

+    if (jjte000 instanceof ParseException) {

+      {if (true) throw (ParseException)jjte000;}

+    }

+    {if (true) throw (Error)jjte000;}

+    } finally {

+    if (jjtc000) {

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtn000.jjtSetLastToken(getToken(0));

+    }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+// table at 'top-level'

+  final public TableType parseTable() throws ParseException {

+ /*@bgen(jjtree) parseTable */

+SimpleNode jjtn000 = new SimpleNode(this, JJTPARSETABLE);

+boolean jjtc000 = true;

+jjtree.openNodeScope(jjtn000);

+jjtn000.jjtSetFirstToken(getToken(1));TableType tableType = null;

+String schema = null;

+String tableName = null;

+Token iot = null;

+    try {

+      jj_consume_token(K_CREATE);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_GLOBAL:

+        jj_consume_token(K_GLOBAL);

+        jj_consume_token(K_TEMPORARY);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(K_TABLE);

+      if (jj_2_4(2)) {

+        schema = OracleObjectName();

+        jj_consume_token(O_DOT);

+      } else {

+        ;

+      }

+      tableName = OracleObjectName();

+            tableType = new TableType(tableName);

+                    if (schema != null) {

+                         tableType.setSchema(schema);

+                    }

+      jj_consume_token(O_OPENPAREN);

+      columnDeclarations(tableType);

+      jj_consume_token(O_CLOSEPAREN);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_ORGANIZATION:

+        jj_consume_token(K_ORGANIZATION);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_INDEX:

+        iot = jj_consume_token(K_INDEX);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_NOCOMPRESS:

+        jj_consume_token(K_NOCOMPRESS);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_OVERFLOW:

+        jj_consume_token(K_OVERFLOW);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_ON:

+        jj_consume_token(K_ON);

+        jj_consume_token(K_COMMIT);

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_DELETE:

+        case K_PRESERVE:

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case K_DELETE:

+            jj_consume_token(K_DELETE);

+            break;

+          case K_PRESERVE:

+            jj_consume_token(K_PRESERVE);

+            break;

+          default:

+            jj_consume_token(-1);

+            throw new ParseException();

+          }

+          break;

+        default:

+          ;

+        }

+        jj_consume_token(K_ROWS);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(O_SEMICOLON);

+      jj_consume_token(0);

+       jjtree.closeNodeScope(jjtn000, true);

+       jjtc000 = false;

+       jjtn000.jjtSetLastToken(getToken(0));

+         if (iot != null) {

+             tableType.setIOT(true);

+         }

+         typesRepository.setDatabaseType(tableName, tableType);

+         {if (true) return tableType;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+// type at 'top-level'

+  final public CompositeDatabaseType parseType() throws ParseException {

+ /*@bgen(jjtree) parseType */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTPARSETYPE);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));CompositeDatabaseType databaseType = null;

+ String schema = null;

+ String typeName = null;

+ boolean varray = false;

+ boolean nestedTable = false;

+    try {

+      jj_consume_token(K_CREATE);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_OR:

+        jj_consume_token(K_OR);

+        jj_consume_token(K_REPLACE);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(K_TYPE);

+      if (jj_2_5(2)) {

+        schema = OracleObjectName();

+        jj_consume_token(O_DOT);

+      } else {

+        ;

+      }

+      typeName = OracleObjectName();

+      jj_consume_token(K_AS);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_OBJECT:

+      case K_TABLE:

+      case K_VARRAY:

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_OBJECT:

+          jj_consume_token(K_OBJECT);

+          jj_consume_token(O_OPENPAREN);

+                databaseType = new ObjectType(typeName);

+                if (schema != null) {

+                    ((ObjectType)databaseType).setSchema(schema);

+                }

+          columnDeclarations(databaseType);

+          jj_consume_token(O_CLOSEPAREN);

+          break;

+        case K_VARRAY:

+          jj_consume_token(K_VARRAY);

+          jj_consume_token(O_OPENPAREN);

+          jj_consume_token(S_NUMBER);

+          jj_consume_token(O_CLOSEPAREN);

+          jj_consume_token(K_OF);

+                databaseType = new VArrayType(typeName);

+                if (schema != null) {

+                    ((VArrayType)databaseType).setSchema(schema);

+                }

+          columnTypeSpec(databaseType);

+          break;

+        case K_TABLE:

+          jj_consume_token(K_TABLE);

+          jj_consume_token(K_OF);

+                databaseType = new NestedTableType(typeName);

+                if (schema != null) {

+                    ((NestedTableType)databaseType).setSchema(schema);

+                }

+          columnTypeSpec(databaseType);

+          break;

+        default:

+          jj_consume_token(-1);

+          throw new ParseException();

+        }

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_SEMICOLON:

+        jj_consume_token(O_SEMICOLON);

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(0);

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+        typesRepository.setDatabaseType(typeName, databaseType);

+        {if (true) return databaseType;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public void columnDeclarations(CompositeDatabaseType enclosingType) throws ParseException {

+    columnDeclaration(enclosingType);

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_COMMA:

+      jj_consume_token(O_COMMA);

+      columnDeclarations(enclosingType);

+      break;

+    default:

+      ;

+    }

+  }

+

+  final public void columnDeclaration(CompositeDatabaseType enclosingType) throws ParseException {

+ String s = null;

+ String pk = null;

+ boolean notNull = false;

+ DatabaseType columnType = null;

+ FieldType column = null;

+    if (jj_2_6(2)) {

+      s = OracleObjectName();

+           column = new FieldType(s);

+           if (enclosingType != null) {

+               enclosingType.addCompositeType(column);

+           }

+      columnType = columnTypeSpec(enclosingType);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_NOT:

+        jj_consume_token(K_NOT);

+        jj_consume_token(K_NULL);

+        jj_consume_token(K_ENABLE);

+                                                                                 notNull = true;

+        break;

+      default:

+        ;

+      }

+    } else if (jj_2_7(2)) {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_CONSTRAINT:

+        jj_consume_token(K_CONSTRAINT);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case S_IDENTIFIER:

+      case S_QUOTED_IDENTIFIER:

+        OracleObjectName();

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(K_PRIMARY);

+      jj_consume_token(K_KEY);

+      jj_consume_token(O_OPENPAREN);

+      pkList((TableType)enclosingType);

+      jj_consume_token(O_CLOSEPAREN);

+      jj_consume_token(K_ENABLE);

+    } else {

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+      if (column != null) {

+              column.setDataType(columnType);

+              if (notNull) {

+                  column.setNotNull();

+              }

+          }

+  }

+

+  final public DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType) throws ParseException {

+ /*@bgen(jjtree) columnTypeSpec */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTCOLUMNTYPESPEC);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));String s = null;

+ Token t = null;

+ DatabaseType dt = null;

+    try {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_BFILE:

+      case K_BINARY_DOUBLE:

+      case K_BINARY_FLOAT:

+      case K_BINARY_INTEGER:

+      case K_BLOB:

+      case K_BOOLEAN:

+      case K_CHAR:

+      case K_CHARACTER:

+      case K_CLOB:

+      case K_DATE:

+      case K_DEC:

+      case K_DECIMAL:

+      case K_DOUBLE:

+      case K_FLOAT:

+      case K_INT:

+      case K_INTEGER:

+      case K_INTERVAL:

+      case K_LONG:

+      case K_MLSLABEL:

+      case K_NATIONAL:

+      case K_NATURAL:

+      case K_NCHAR:

+      case K_NCLOB:

+      case K_NUMBER:

+      case K_NUMERIC:

+      case K_NVARCHAR2:

+      case K_NVARCHAR:

+      case K_PLS_INTEGER:

+      case K_POSITIVE:

+      case K_RAW:

+      case K_REAL:

+      case K_ROWID:

+      case K_SIMPLE_INTEGER:

+      case K_SMALLINT:

+      case K_TIME:

+      case K_TIMESTAMP:

+      case K_UROWID:

+      case K_VARCHAR2:

+      case K_VARCHAR:

+        dt = datatype();

+        break;

+      case S_IDENTIFIER:

+      case S_QUOTED_IDENTIFIER:

+        s = columnSpec();

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case O_OPENPAREN:

+          jj_consume_token(O_OPENPAREN);

+          t = jj_consume_token(S_NUMBER);

+          jj_consume_token(O_CLOSEPAREN);

+          break;

+        default:

+          ;

+        }

+        break;

+      default:

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      if (s != null) {

+          if (t != null) {

+              Long size = Long.decode(t.image);

+              dt = new UnresolvedSizedType(s, size);

+          }

+          else {

+              dt = new UnresolvedType(s);

+          }

+      }

+      {if (true) return dt;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public void pkList(TableType tableType) throws ParseException {

+    pk(tableType);

+    label_2:

+    while (true) {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_COMMA:

+        ;

+        break;

+      default:

+        break label_2;

+      }

+      jj_consume_token(O_COMMA);

+      pk(tableType);

+    }

+  }

+

+  final public void pk(TableType tableType) throws ParseException {

+String s = null;

+    s = OracleObjectName();

+       List<FieldType> columns = tableType.getColumns();

+       for (FieldType column : columns) {

+            if (column.getFieldName().equals(s)) {

+                column.setPk();

+                break;

+            }

+       }

+  }

+

+  final public void packageDeclaration(PLSQLPackageType packageType) throws ParseException {

+    if (jj_2_8(2)) {

+      variableDeclaration(packageType);

+    } else {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_TYPE:

+        typeDeclaration(packageType);

+        break;

+      case K_CURSOR:

+        cursorDeclaration(packageType);

+        break;

+      case K_PROCEDURE:

+        procedureSpec(packageType);

+        break;

+      case K_FUNCTION:

+        functionSpec(packageType);

+        break;

+      case S_IDENTIFIER:

+        exceptionDeclaration(packageType);

+        break;

+      case K_PRAGMA:

+        pragmaDeclaration(packageType);

+        break;

+      default:

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+    }

+  }

+

+  final public void variableDeclaration(PLSQLPackageType packageType) throws ParseException {

+ /*@bgen(jjtree) variableDeclaration */

+  SimpleNode jjtn000 = new SimpleNode(this, JJTVARIABLEDECLARATION);

+  boolean jjtc000 = true;

+  jjtree.openNodeScope(jjtn000);

+  jjtn000.jjtSetFirstToken(getToken(1));

+    try {

+      jj_consume_token(S_IDENTIFIER);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_CONSTANT:

+        jj_consume_token(K_CONSTANT);

+        break;

+      default:

+        ;

+      }

+      typeSpec();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_NOT:

+        jj_consume_token(K_NOT);

+        jj_consume_token(K_NULL);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_DEFAULT:

+      case O_ASSIGN:

+        variableDefaultAssignment();

+        break;

+      default:

+        ;

+      }

+      jj_consume_token(O_SEMICOLON);

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+  }

+

+  final public void variableDefaultAssignment() throws ParseException {

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_ASSIGN:

+      jj_consume_token(O_ASSIGN);

+      break;

+    case K_DEFAULT:

+      jj_consume_token(K_DEFAULT);

+      break;

+    default:

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+    skipToSemiColon();

+  }

+

+  final public DatabaseType datatype() throws ParseException {

+ /*@bgen(jjtree) datatype */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTDATATYPE);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));Token t = null;

+ DatabaseType dt = null;

+ Token precision = null;

+ Long sl;

+ Long pl;

+ Token scale = null;

+    try {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_BINARY_INTEGER:

+        jj_consume_token(K_BINARY_INTEGER);

+                          jjtree.closeNodeScope(jjtn000, true);

+                          jjtc000 = false;

+                          jjtn000.jjtSetLastToken(getToken(0));

+                          {if (true) return BINARY_INTEGER_TYPE;}

+        break;

+      case K_BINARY_FLOAT:

+        jj_consume_token(K_BINARY_FLOAT);

+                          jjtree.closeNodeScope(jjtn000, true);

+                          jjtc000 = false;

+                          jjtn000.jjtSetLastToken(getToken(0));

+                          {if (true) return BINARY_FLOAT_TYPE;}

+        break;

+      case K_BINARY_DOUBLE:

+        jj_consume_token(K_BINARY_DOUBLE);

+                          jjtree.closeNodeScope(jjtn000, true);

+                          jjtc000 = false;

+                          jjtn000.jjtSetLastToken(getToken(0));

+                          {if (true) return BINARY_DOUBLE_TYPE;}

+        break;

+      case K_NATURAL:

+        jj_consume_token(K_NATURAL);

+                          jjtree.closeNodeScope(jjtn000, true);

+                          jjtc000 = false;

+                          jjtn000.jjtSetLastToken(getToken(0));

+                          {if (true) return NATURAL_TYPE;}

+        break;

+      case K_POSITIVE:

+        jj_consume_token(K_POSITIVE);

+                          jjtree.closeNodeScope(jjtn000, true);

+                          jjtc000 = false;

+                          jjtn000.jjtSetLastToken(getToken(0));

+                          {if (true) return POSITIVE_TYPE;}

+        break;

+      case K_DEC:

+      case K_DECIMAL:

+      case K_NUMBER:

+      case K_NUMERIC:

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_NUMBER:

+          t = jj_consume_token(K_NUMBER);

+          break;

+        case K_NUMERIC:

+          t = jj_consume_token(K_NUMERIC);

+          break;

+        case K_DECIMAL:

+          t = jj_consume_token(K_DECIMAL);

+          break;

+        case K_DEC:

+          t = jj_consume_token(K_DEC);

+          break;

+        default:

+          jj_consume_token(-1);

+          throw new ParseException();

+        }

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case O_OPENPAREN:

+          jj_consume_token(O_OPENPAREN);

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case O_ASTERISK:

+          case S_NUMBER:

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_ASTERISK:

+              precision = jj_consume_token(O_ASTERISK);

+              break;

+            case S_NUMBER:

+              precision = jj_consume_token(S_NUMBER);

+              break;

+            default:

+              jj_consume_token(-1);

+              throw new ParseException();

+            }

+            break;

+          default:

+            ;

+          }

+          label_3:

+          while (true) {

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_COMMA:

+              ;

+              break;

+            default:

+              break label_3;

+            }

+            jj_consume_token(O_COMMA);

+            scale = jj_consume_token(S_NUMBER);

+          }

+          jj_consume_token(O_CLOSEPAREN);

+          break;

+        default:

+          ;

+        }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+            if (t.kind == K_NUMBER || t.kind == K_NUMERIC) {

+                if (precision != null && precision.image.equals("*")) {

+                    precision = null;

+                }

+                if (precision == null) {

+                    if (scale != null && scale.image.equals("0")) {

+                        dt = INTEGER_TYPE;

+                    }

+                    else {

+                        dt = new NumericType();

+                    }

+                }

+                    else {

+                        pl = Long.decode(precision.image);

+                        if (scale == null) {

+                        dt = new NumericType(pl);

+                    }

+                    else {

+                        sl = Long.decode(scale.image);

+                        dt = new NumericType(pl, sl);

+                        }

+                    }

+            }

+            else  if (t.kind == K_DECIMAL || t.kind == K_DEC) {

+                if (precision != null && precision.image.equals("*")) {

+                    precision = null;

+                }

+                if (precision == null) {

+                    dt = new DecimalType();

+                }

+                else {

+                    pl = Long.decode(precision.image);

+                    if (scale == null) {

+                        dt = new DecimalType(pl);

+                    }

+                    else {

+                        sl = Long.decode(scale.image);

+                        dt = new DecimalType(pl, sl);

+                    }

+                }

+            }

+            {if (true) return dt;}

+        break;

+      case K_LONG:

+        jj_consume_token(K_LONG);

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_RAW:

+          t = jj_consume_token(K_RAW);

+          break;

+        default:

+          ;

+        }

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case O_OPENPAREN:

+          jj_consume_token(O_OPENPAREN);

+          precision = jj_consume_token(S_NUMBER);

+          jj_consume_token(O_CLOSEPAREN);

+          break;

+        default:

+          ;

+        }

+              jjtree.closeNodeScope(jjtn000, true);

+              jjtc000 = false;

+              jjtn000.jjtSetLastToken(getToken(0));

+              if (t == null) {

+              if (precision == null) {

+                  dt = new LongType();

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  dt = new LongType(pl);

+              }

+              }

+              else {

+              if (precision == null) {

+                  dt = new LongRawType();

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  dt = new LongRawType(pl);

+              }

+            }

+            {if (true) return dt;}

+        break;

+      case K_RAW:

+        jj_consume_token(K_RAW);

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case O_OPENPAREN:

+          jj_consume_token(O_OPENPAREN);

+          precision = jj_consume_token(S_NUMBER);

+          jj_consume_token(O_CLOSEPAREN);

+          break;

+        default:

+          ;

+        }

+              jjtree.closeNodeScope(jjtn000, true);

+              jjtc000 = false;

+              jjtn000.jjtSetLastToken(getToken(0));

+            if (precision == null) {

+                dt = new RawType();

+            }

+            else {

+                pl = Long.decode(precision.image);

+                dt = new RawType(pl);

+            }

+            {if (true) return dt;}

+        break;

+      case K_BOOLEAN:

+        jj_consume_token(K_BOOLEAN);

+                    jjtree.closeNodeScope(jjtn000, true);

+                    jjtc000 = false;

+                    jjtn000.jjtSetLastToken(getToken(0));

+                    {if (true) return BOOLEAN_TYPE;}

+        break;

+      case K_DATE:

+        jj_consume_token(K_DATE);

+                 jjtree.closeNodeScope(jjtn000, true);

+                 jjtc000 = false;

+                 jjtn000.jjtSetLastToken(getToken(0));

+                 {if (true) return DATE_TYPE;}

+        break;

+      default:

+        if (jj_2_17(2)) {

+          jj_consume_token(K_INTERVAL);

+          jj_consume_token(K_DAY);

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case O_OPENPAREN:

+            jj_consume_token(O_OPENPAREN);

+            precision = jj_consume_token(S_NUMBER);

+            jj_consume_token(O_CLOSEPAREN);

+            break;

+          default:

+            ;

+          }

+          jj_consume_token(K_TO);

+          jj_consume_token(K_SECOND);

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case O_OPENPAREN:

+            jj_consume_token(O_OPENPAREN);

+            scale = jj_consume_token(S_NUMBER);

+            jj_consume_token(O_CLOSEPAREN);

+            break;

+          default:

+            ;

+          }

+              jjtree.closeNodeScope(jjtn000, true);

+              jjtc000 = false;

+              jjtn000.jjtSetLastToken(getToken(0));

+                if (precision == null) {

+                dt = new IntervalDayToSecond();

+            }

+            else {

+                pl = Long.decode(precision.image);

+                if (scale == null) {

+                    dt = new IntervalDayToSecond(pl);

+                }

+                else {

+                    sl = Long.decode(scale.image);

+                    dt = new IntervalDayToSecond(pl, sl);

+                }

+            }

+            {if (true) return dt;}

+        } else {

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case K_INTERVAL:

+            jj_consume_token(K_INTERVAL);

+            jj_consume_token(K_YEAR);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+            jj_consume_token(K_TO);

+            jj_consume_token(K_MONTH);

+              jjtree.closeNodeScope(jjtn000, true);

+              jjtc000 = false;

+              jjtn000.jjtSetLastToken(getToken(0));

+            if (precision == null) {

+                dt = new IntervalYearToMonth();

+            }

+            else {

+                pl = Long.decode(precision.image);

+                dt = new IntervalYearToMonth(pl);

+            }

+            {if (true) return dt;}

+            break;

+          case K_TIME:

+          case K_TIMESTAMP:

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_TIME:

+              jj_consume_token(K_TIME);

+                   {if (true) return TIME_TYPE;}

+              break;

+            case K_TIMESTAMP:

+              jj_consume_token(K_TIMESTAMP);

+                          {if (true) return TIMESTAMP_TYPE;}

+              break;

+            default:

+              jj_consume_token(-1);

+              throw new ParseException();

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_WITH:

+              jj_consume_token(K_WITH);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case K_LOCAL:

+                jj_consume_token(K_LOCAL);

+                break;

+              default:

+                ;

+              }

+              jj_consume_token(K_TIME);

+              jj_consume_token(K_ZONE);

+              break;

+            default:

+              ;

+            }

+            break;

+          case K_INTEGER:

+            jj_consume_token(K_INTEGER);

+                     jjtree.closeNodeScope(jjtn000, true);

+                     jjtc000 = false;

+                     jjtn000.jjtSetLastToken(getToken(0));

+                     {if (true) return INTEGER_TYPE;}

+            break;

+          case K_INT:

+            jj_consume_token(K_INT);

+                     jjtree.closeNodeScope(jjtn000, true);

+                     jjtc000 = false;

+                     jjtn000.jjtSetLastToken(getToken(0));

+                     {if (true) return INTEGER_TYPE;}

+            break;

+          case K_SMALLINT:

+            jj_consume_token(K_SMALLINT);

+                     jjtree.closeNodeScope(jjtn000, true);

+                     jjtc000 = false;

+                     jjtn000.jjtSetLastToken(getToken(0));

+                     {if (true) return SMALLINT_TYPE;}

+            break;

+          case K_FLOAT:

+            jj_consume_token(K_FLOAT);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (precision == null) {

+              {if (true) return new FloatType();}

+          }

+          else {

+              pl = Long.decode(precision.image);

+              FloatType ft = new FloatType(pl);

+              {if (true) return ft;}

+          }

+            break;

+          case K_REAL:

+            jj_consume_token(K_REAL);

+                 jjtree.closeNodeScope(jjtn000, true);

+                 jjtc000 = false;

+                 jjtn000.jjtSetLastToken(getToken(0));

+                 {if (true) return new RealType();}

+            break;

+          case K_MLSLABEL:

+            jj_consume_token(K_MLSLABEL);

+                     jjtree.closeNodeScope(jjtn000, true);

+                     jjtc000 = false;

+                     jjtn000.jjtSetLastToken(getToken(0));

+                     {if (true) return MLSLABEL_TYPE;}

+            break;

+          case K_PLS_INTEGER:

+            jj_consume_token(K_PLS_INTEGER);

+                        jjtree.closeNodeScope(jjtn000, true);

+                        jjtc000 = false;

+                        jjtn000.jjtSetLastToken(getToken(0));

+                        {if (true) return PLS_INTEGER_TYPE;}

+            break;

+          case K_SIMPLE_INTEGER:

+            jj_consume_token(K_SIMPLE_INTEGER);

+                           jjtree.closeNodeScope(jjtn000, true);

+                           jjtc000 = false;

+                           jjtn000.jjtSetLastToken(getToken(0));

+                           {if (true) return SIMPLE_INTEGER_TYPE;}

+            break;

+          case K_BLOB:

+            jj_consume_token(K_BLOB);

+                  jjtree.closeNodeScope(jjtn000, true);

+                  jjtc000 = false;

+                  jjtn000.jjtSetLastToken(getToken(0));

+                  {if (true) return new BlobType();}

+            break;

+          case K_NCLOB:

+            jj_consume_token(K_NCLOB);

+                  jjtree.closeNodeScope(jjtn000, true);

+                  jjtc000 = false;

+                  jjtn000.jjtSetLastToken(getToken(0));

+                  {if (true) return new NClobType();}

+            break;

+          case K_BFILE:

+            jj_consume_token(K_BFILE);

+                   jjtree.closeNodeScope(jjtn000, true);

+                   jjtc000 = false;

+                   jjtn000.jjtSetLastToken(getToken(0));

+                   {if (true) return BFILE_TYPE;}

+            break;

+          case K_ROWID:

+            jj_consume_token(K_ROWID);

+                  jjtree.closeNodeScope(jjtn000, true);

+                  jjtc000 = false;

+                  jjtn000.jjtSetLastToken(getToken(0));

+                  {if (true) return ROWID_TYPE;}

+            break;

+          case K_UROWID:

+            jj_consume_token(K_UROWID);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (precision == null) {

+              {if (true) return new URowIdType();}

+          }

+          else {

+              pl = Long.decode(precision.image);

+              {if (true) return new URowIdType(pl);}

+          }

+            break;

+          case K_DOUBLE:

+            jj_consume_token(K_DOUBLE);

+            jj_consume_token(K_PRECISION);

+                                 jjtree.closeNodeScope(jjtn000, true);

+                                 jjtc000 = false;

+                                 jjtn000.jjtSetLastToken(getToken(0));

+                                 {if (true) return new DoubleType();}

+            break;

+          case K_CHAR:

+            jj_consume_token(K_CHAR);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_VARYING:

+              t = jj_consume_token(K_VARYING);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case K_BYTE:

+              case K_CHAR:

+                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                case K_BYTE:

+                  jj_consume_token(K_BYTE);

+                  break;

+                case K_CHAR:

+                  jj_consume_token(K_CHAR);

+                  break;

+                default:

+                  jj_consume_token(-1);

+                  throw new ParseException();

+                }

+                break;

+              default:

+                ;

+              }

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+            if (jj_2_10(2)) {

+              jj_consume_token(K_CHARACTER);

+              jj_consume_token(K_SET);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case S_IDENTIFIER:

+              case S_QUOTED_IDENTIFIER:

+                if (jj_2_9(2)) {

+                  jj_consume_token(S_IDENTIFIER);

+                } else {

+                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                  case S_IDENTIFIER:

+                  case S_QUOTED_IDENTIFIER:

+                    columnSpec();

+                    jj_consume_token(K_CHARSET);

+                    break;

+                  default:

+                    jj_consume_token(-1);

+                    throw new ParseException();

+                  }

+                }

+                break;

+              default:

+                ;

+              }

+            } else {

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (t == null) {

+              if (precision == null) {

+                  {if (true) return new CharType();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new CharType(pl);}

+              }

+          }

+          else {

+              // ANSI syntax for VARCHAR2

+              if (precision == null) {

+                  {if (true) return new VarChar2Type();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new VarChar2Type(pl);}

+              }

+          }

+            break;

+          case K_VARCHAR:

+            jj_consume_token(K_VARCHAR);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_VARYING:

+              jj_consume_token(K_VARYING);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case K_BYTE:

+              case K_CHAR:

+                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                case K_BYTE:

+                  jj_consume_token(K_BYTE);

+                  break;

+                case K_CHAR:

+                  jj_consume_token(K_CHAR);

+                  break;

+                default:

+                  jj_consume_token(-1);

+                  throw new ParseException();

+                }

+                break;

+              default:

+                ;

+              }

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+            if (jj_2_12(2)) {

+              jj_consume_token(K_CHARACTER);

+              jj_consume_token(K_SET);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case S_IDENTIFIER:

+              case S_QUOTED_IDENTIFIER:

+                if (jj_2_11(2)) {

+                  jj_consume_token(S_IDENTIFIER);

+                } else {

+                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                  case S_IDENTIFIER:

+                  case S_QUOTED_IDENTIFIER:

+                    columnSpec();

+                    jj_consume_token(K_CHARSET);

+                    break;

+                  default:

+                    jj_consume_token(-1);

+                    throw new ParseException();

+                  }

+                }

+                break;

+              default:

+                ;

+              }

+            } else {

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (precision == null) {

+              {if (true) return new VarCharType();}

+          }

+          else {

+              pl = Long.decode(precision.image);

+              {if (true) return new VarCharType(pl);}

+          }

+            break;

+          case K_VARCHAR2:

+            jj_consume_token(K_VARCHAR2);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_VARYING:

+              jj_consume_token(K_VARYING);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case K_BYTE:

+              case K_CHAR:

+                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                case K_BYTE:

+                  jj_consume_token(K_BYTE);

+                  break;

+                case K_CHAR:

+                  jj_consume_token(K_CHAR);

+                  break;

+                default:

+                  jj_consume_token(-1);

+                  throw new ParseException();

+                }

+                break;

+              default:

+                ;

+              }

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+            if (jj_2_14(2)) {

+              jj_consume_token(K_CHARACTER);

+              jj_consume_token(K_SET);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case S_IDENTIFIER:

+              case S_QUOTED_IDENTIFIER:

+                if (jj_2_13(2)) {

+                  jj_consume_token(S_IDENTIFIER);

+                } else {

+                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                  case S_IDENTIFIER:

+                  case S_QUOTED_IDENTIFIER:

+                    columnSpec();

+                    jj_consume_token(K_CHARSET);

+                    break;

+                  default:

+                    jj_consume_token(-1);

+                    throw new ParseException();

+                  }

+                }

+                break;

+              default:

+                ;

+              }

+            } else {

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+            if (precision == null) {

+                {if (true) return new VarChar2Type();}

+            }

+            else {

+                pl = Long.decode(precision.image);

+                {if (true) return new VarChar2Type(pl);}

+            }

+            break;

+          case K_CHARACTER:

+            jj_consume_token(K_CHARACTER);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_VARYING:

+              t = jj_consume_token(K_VARYING);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (t == null) {

+              if (precision == null) {

+                  {if (true) return new CharType();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new CharType(pl);}

+              }

+          }

+          else {

+              // ANSI syntax for VARCHAR

+              if (precision == null) {

+                  {if (true) return new VarCharType();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new VarCharType(pl);}

+              }

+          }

+            break;

+          case K_NCHAR:

+            jj_consume_token(K_NCHAR);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_VARYING:

+              t = jj_consume_token(K_VARYING);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (t == null) {

+              if (precision == null) {

+                  {if (true) return new NCharType();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new NCharType(pl);}

+              }

+          }

+          else {

+              // ANSI syntax for NVARCHAR2

+              if (precision == null) {

+                  {if (true) return new NVarChar2Type();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new NVarChar2Type(pl);}

+              }

+          }

+            break;

+          case K_NVARCHAR:

+            jj_consume_token(K_NVARCHAR);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+              jjtree.closeNodeScope(jjtn000, true);

+              jjtc000 = false;

+              jjtn000.jjtSetLastToken(getToken(0));

+            if (precision == null) {

+                {if (true) return new NVarChar2Type();}

+            }

+            else {

+                pl = Long.decode(precision.image);

+                {if (true) return new NVarChar2Type(pl);}

+            }

+            break;

+          case K_NVARCHAR2:

+            jj_consume_token(K_NVARCHAR2);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+            if (precision == null) {

+                {if (true) return new NVarChar2Type();}

+            }

+            else {

+                pl = Long.decode(precision.image);

+                {if (true) return new NVarChar2Type(pl);}

+            }

+            break;

+          case K_NATIONAL:

+            jj_consume_token(K_NATIONAL);

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_CHARACTER:

+              jj_consume_token(K_CHARACTER);

+              break;

+            case K_CHAR:

+              jj_consume_token(K_CHAR);

+              break;

+            default:

+              jj_consume_token(-1);

+              throw new ParseException();

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_VARYING:

+              t = jj_consume_token(K_VARYING);

+              break;

+            default:

+              ;

+            }

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              precision = jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+          jjtree.closeNodeScope(jjtn000, true);

+          jjtc000 = false;

+          jjtn000.jjtSetLastToken(getToken(0));

+          if (t == null) {

+              if (precision == null) {

+                  {if (true) return new NCharType();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new NCharType(pl);}

+              }

+          }

+          else {

+              // ANSI syntax for NVARCHAR2

+              if (precision == null) {

+                  {if (true) return new NVarChar2Type();}

+              }

+              else {

+                  pl = Long.decode(precision.image);

+                  {if (true) return new NVarChar2Type(pl);}

+              }

+          }

+            break;

+          case K_CLOB:

+            jj_consume_token(K_CLOB);

+            if (jj_2_16(2)) {

+              jj_consume_token(K_CHARACTER);

+              jj_consume_token(K_SET);

+              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+              case S_IDENTIFIER:

+              case S_QUOTED_IDENTIFIER:

+                if (jj_2_15(2)) {

+                  jj_consume_token(S_IDENTIFIER);

+                } else {

+                  switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+                  case S_IDENTIFIER:

+                  case S_QUOTED_IDENTIFIER:

+                    columnSpec();

+                    jj_consume_token(K_CHARSET);

+                    break;

+                  default:

+                    jj_consume_token(-1);

+                    throw new ParseException();

+                  }

+                }

+                break;

+              default:

+                ;

+              }

+            } else {

+              ;

+            }

+                                                                                                                   jjtree.closeNodeScope(jjtn000, true);

+                                                                                                                   jjtc000 = false;

+                                                                                                                   jjtn000.jjtSetLastToken(getToken(0));

+                                                                                                                   {if (true) return new ClobType();}

+            break;

+          default:

+            jj_consume_token(-1);

+            throw new ParseException();

+          }

+        }

+      }

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public String typeSpec() throws ParseException {

+ /*@bgen(jjtree) typeSpec */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTTYPESPEC);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));String s = null;

+    try {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_BFILE:

+      case K_BINARY_DOUBLE:

+      case K_BINARY_FLOAT:

+      case K_BINARY_INTEGER:

+      case K_BLOB:

+      case K_BOOLEAN:

+      case K_CHAR:

+      case K_CHARACTER:

+      case K_CLOB:

+      case K_DATE:

+      case K_DEC:

+      case K_DECIMAL:

+      case K_DOUBLE:

+      case K_FLOAT:

+      case K_INT:

+      case K_INTEGER:

+      case K_INTERVAL:

+      case K_LONG:

+      case K_MLSLABEL:

+      case K_NATIONAL:

+      case K_NATURAL:

+      case K_NCHAR:

+      case K_NCLOB:

+      case K_NUMBER:

+      case K_NUMERIC:

+      case K_NVARCHAR2:

+      case K_NVARCHAR:

+      case K_PLS_INTEGER:

+      case K_POSITIVE:

+      case K_RAW:

+      case K_REAL:

+      case K_ROWID:

+      case K_SIMPLE_INTEGER:

+      case K_SMALLINT:

+      case K_TIME:

+      case K_TIMESTAMP:

+      case K_UROWID:

+      case K_VARCHAR2:

+      case K_VARCHAR:

+        datatype();

+        break;

+      default:

+        if (jj_2_18(3)) {

+          columnSpec();

+          jj_consume_token(K_TYPE2);

+        } else if (jj_2_19(3)) {

+          tableSpec();

+          jj_consume_token(K_ROWTYPE);

+        } else {

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case S_IDENTIFIER:

+          case S_QUOTED_IDENTIFIER:

+            typeName();

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case O_OPENPAREN:

+              jj_consume_token(O_OPENPAREN);

+              jj_consume_token(S_NUMBER);

+              jj_consume_token(O_CLOSEPAREN);

+              break;

+            default:

+              ;

+            }

+            break;

+          default:

+            jj_consume_token(-1);

+            throw new ParseException();

+          }

+        }

+      }

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      Token first = jjtn000.jjtGetFirstToken();

+      Token last = jjtn000.jjtGetLastToken();

+      Token cur = first;

+      StringBuilder sb = new StringBuilder();

+      sb.append(first.image);

+      while (cur != last) {

+          cur = cur.next;

+          sb.append(cur.image);

+      }

+      jjtn000.jjtSetValue(sb.toString());

+      {if (true) return sb.toString();}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public String columnSpec() throws ParseException {

+ String s1 = null;

+ String s2 = null;

+ String s3 = null;

+    s1 = OracleObjectName();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_DOT:

+      jj_consume_token(O_DOT);

+      s2 = OracleObjectName();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_DOT:

+        jj_consume_token(O_DOT);

+        s3 = OracleObjectName();

+        break;

+      default:

+        ;

+      }

+      break;

+    default:

+      ;

+    }

+      StringBuilder sb = new StringBuilder(s1);

+      if (s2 != null) {

+          sb.append('.');

+          sb.append(s2);

+          if (s3 != null) {

+              sb.append('.');

+              sb.append(s3);

+          }

+      }

+      {if (true) return sb.toString();}

+    throw new Error("Missing return statement in function");

+  }

+

+  final public String tableSpec() throws ParseException {

+    OracleObjectName();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_DOT:

+      jj_consume_token(O_DOT);

+      OracleObjectName();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_ATSIGN:

+        jj_consume_token(O_ATSIGN);

+        jj_consume_token(S_IDENTIFIER);

+        break;

+      default:

+        ;

+      }

+      break;

+    default:

+      ;

+    }

+     {if (true) return token.image;}

+    throw new Error("Missing return statement in function");

+  }

+

+  final public String typeName() throws ParseException {

+    OracleObjectName();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_DOT:

+      jj_consume_token(O_DOT);

+      OracleObjectName();

+      break;

+    default:

+      ;

+    }

+     {if (true) return token.image;}

+    throw new Error("Missing return statement in function");

+  }

+

+  final public void typeDeclaration(PLSQLPackageType packageType) throws ParseException {

+ String s = null;

+    jj_consume_token(K_TYPE);

+    s = typeName();

+    jj_consume_token(K_IS);

+    aTypeDeclaration(packageType);

+    jj_consume_token(O_SEMICOLON);

+  }

+

+  final public void aTypeDeclaration(PLSQLPackageType packageType) throws ParseException {

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_RECORD:

+      recordDeclaration(packageType);

+      break;

+    case K_SUBTYPE:

+      subtypeDeclaration(packageType);

+      break;

+    case K_TABLE:

+      plsqlTableDeclaration(packageType);

+      break;

+    case K_VARRAY:

+    case K_VARYING:

+      varrayDeclaration(packageType);

+      break;

+    case K_REF:

+      refCursorDeclaration(packageType);

+      break;

+    default:

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+  }

+

+  final public void recordDeclaration(PLSQLPackageType packageType) throws ParseException {

+    jj_consume_token(K_RECORD);

+    jj_consume_token(O_OPENPAREN);

+    fieldDeclarations();

+    jj_consume_token(O_CLOSEPAREN);

+  }

+

+  final public void fieldDeclarations() throws ParseException {

+    fieldDeclaration();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_COMMA:

+      jj_consume_token(O_COMMA);

+      fieldDeclarations();

+      break;

+    default:

+      ;

+    }

+  }

+

+  final public SimpleNode fieldDeclaration() throws ParseException {

+ /*@bgen(jjtree) fieldDeclaration */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTFIELDDECLARATION);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));String s = null;

+    try {

+      s = typeName();

+      typeSpec();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_NOT:

+        jj_consume_token(K_NOT);

+        jj_consume_token(K_NULL);

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_DEFAULT:

+      case O_ASSIGN:

+        variableDefaultAssignment();

+        break;

+      default:

+        ;

+      }

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      jjtn000.jjtSetValue(s);

+      {if (true) return jjtn000;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public void subtypeDeclaration(PLSQLPackageType packageType) throws ParseException {

+    jj_consume_token(K_SUBTYPE);

+    OracleObjectName();

+    jj_consume_token(K_IS);

+    datatype();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_RANGE:

+      jj_consume_token(K_RANGE);

+      jj_consume_token(S_NUMBER);

+      jj_consume_token(O_DOUBLEDOT);

+      jj_consume_token(S_NUMBER);

+      break;

+    case S_NUMBER:

+      jj_consume_token(S_NUMBER);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_COMMA:

+        jj_consume_token(O_COMMA);

+        jj_consume_token(S_NUMBER);

+        break;

+      default:

+        ;

+      }

+      break;

+    case K_CHARACTER:

+      jj_consume_token(K_CHARACTER);

+      jj_consume_token(K_SET);

+      jj_consume_token(S_IDENTIFIER);

+      break;

+    default:

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_NOT:

+      jj_consume_token(K_NOT);

+      jj_consume_token(K_NULL);

+      break;

+    default:

+      ;

+    }

+  }

+

+  final public void plsqlTableDeclaration(PLSQLPackageType packageType) throws ParseException {

+    jj_consume_token(K_TABLE);

+    jj_consume_token(K_OF);

+    typeSpec();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_NOT:

+      jj_consume_token(K_NOT);

+      jj_consume_token(K_NULL);

+      break;

+    default:

+      ;

+    }

+    jj_consume_token(K_INDEX);

+    jj_consume_token(K_BY);

+    plsqlTableIndexByDeclaration(packageType);

+  }

+

+  final public void plsqlTableIndexByDeclaration(PLSQLPackageType packageType) throws ParseException {

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_PLS_INTEGER:

+      jj_consume_token(K_PLS_INTEGER);

+      break;

+    case K_BINARY_INTEGER:

+      jj_consume_token(K_BINARY_INTEGER);

+      break;

+    case K_VARCHAR2:

+      jj_consume_token(K_VARCHAR2);

+      jj_consume_token(O_OPENPAREN);

+      jj_consume_token(S_NUMBER);

+      jj_consume_token(O_CLOSEPAREN);

+      break;

+    case K_STRING:

+      jj_consume_token(K_STRING);

+      jj_consume_token(O_OPENPAREN);

+      jj_consume_token(S_NUMBER);

+      jj_consume_token(O_CLOSEPAREN);

+      break;

+    default:

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+  }

+

+  final public void varrayDeclaration(PLSQLPackageType packageType) throws ParseException {

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_VARRAY:

+      jj_consume_token(K_VARRAY);

+      break;

+    case K_VARYING:

+      jj_consume_token(K_VARYING);

+      jj_consume_token(K_ARRAY);

+      break;

+    default:

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+    jj_consume_token(O_OPENPAREN);

+    jj_consume_token(S_NUMBER);

+    jj_consume_token(O_CLOSEPAREN);

+    jj_consume_token(K_OF);

+    datatype();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_NOT:

+      jj_consume_token(K_NOT);

+      jj_consume_token(K_NULL);

+      break;

+    default:

+      ;

+    }

+  }

+

+  final public void refCursorDeclaration(PLSQLPackageType packageType) throws ParseException {

+ String s = null;

+    jj_consume_token(K_REF);

+    jj_consume_token(K_CURSOR);

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_RETURN:

+      refCursorTypeSpec(packageType);

+      break;

+    default:

+      ;

+    }

+  }

+

+  final public void refCursorTypeSpec(PLSQLPackageType packageType) throws ParseException {

+ String s = null;

+    jj_consume_token(K_RETURN);

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case S_IDENTIFIER:

+    case S_QUOTED_IDENTIFIER:

+      if (jj_2_20(3)) {

+        s = columnSpec();

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_TYPE2:

+          jj_consume_token(K_TYPE2);

+          break;

+        default:

+          ;

+        }

+      } else if (jj_2_21(3)) {

+        s = tableSpec();

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_ROWTYPE:

+          jj_consume_token(K_ROWTYPE);

+          break;

+        default:

+          ;

+        }

+      } else {

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+      break;

+    default:

+      ;

+    }

+  }

+

+  final public void cursorDeclaration(PLSQLPackageType packageType) throws ParseException {

+ Token t = null;

+    jj_consume_token(K_CURSOR);

+    t = jj_consume_token(S_IDENTIFIER);

+    jj_consume_token(O_SEMICOLON);

+  }

+

+// Procedure Specification

+  final public void procedureSpec(PLSQLPackageType packageType) throws ParseException {

+ Token t = null;

+    jj_consume_token(K_PROCEDURE);

+    t = jj_consume_token(S_IDENTIFIER);

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_OPENPAREN:

+      jj_consume_token(O_OPENPAREN);

+      argumentList();

+      jj_consume_token(O_CLOSEPAREN);

+      break;

+    default:

+      ;

+    }

+    jj_consume_token(O_SEMICOLON);

+  }

+

+  final public void argumentList() throws ParseException {

+    argument();

+    label_4:

+    while (true) {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_COMMA:

+        ;

+        break;

+      default:

+        break label_4;

+      }

+      jj_consume_token(O_COMMA);

+      argument();

+    }

+  }

+

+// Function Specification

+  final public void functionSpec(PLSQLPackageType packageType) throws ParseException {

+ Token t = null;

+    jj_consume_token(K_FUNCTION);

+    t = jj_consume_token(S_IDENTIFIER);

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case O_OPENPAREN:

+      jj_consume_token(O_OPENPAREN);

+      argumentList();

+      jj_consume_token(O_CLOSEPAREN);

+      break;

+    default:

+      ;

+    }

+    functionReturnSpec();

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_DETERMINISTIC:

+    case K_PARALLEL_ENABLE:

+    case K_PIPELINED:

+    case K_RESULT_CACHE:

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_DETERMINISTIC:

+        jj_consume_token(K_DETERMINISTIC);

+        break;

+      case K_PIPELINED:

+        jj_consume_token(K_PIPELINED);

+        break;

+      case K_PARALLEL_ENABLE:

+        jj_consume_token(K_PARALLEL_ENABLE);

+        break;

+      case K_RESULT_CACHE:

+        jj_consume_token(K_RESULT_CACHE);

+        break;

+      default:

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+      break;

+    default:

+      ;

+    }

+    jj_consume_token(O_SEMICOLON);

+  }

+

+  final public SimpleNode functionReturnSpec() throws ParseException {

+ /*@bgen(jjtree) functionReturnSpec */

+  SimpleNode jjtn000 = new SimpleNode(this, JJTFUNCTIONRETURNSPEC);

+  boolean jjtc000 = true;

+  jjtree.openNodeScope(jjtn000);

+  jjtn000.jjtSetFirstToken(getToken(1));

+    try {

+      jj_consume_token(K_RETURN);

+      typeSpec();

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      jjtn000.jjtSetValue("RETURN");

+      {if (true) return jjtn000;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public SimpleNode argument() throws ParseException {

+ /*@bgen(jjtree) argument */

+ SimpleNode jjtn000 = new SimpleNode(this, JJTARGUMENT);

+ boolean jjtc000 = true;

+ jjtree.openNodeScope(jjtn000);

+ jjtn000.jjtSetFirstToken(getToken(1));Token t = null;

+ String direction = null;

+    try {

+      t = jj_consume_token(S_IDENTIFIER);

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_IN:

+      case K_OUT:

+        direction = direction();

+        break;

+      default:

+        ;

+      }

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_NOCOPY:

+        jj_consume_token(K_NOCOPY);

+        break;

+      default:

+        ;

+      }

+      typeSpec();

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_DEFAULT:

+      case O_ASSIGN:

+        argumentDefaultAssignment();

+        break;

+      default:

+        ;

+      }

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      if (direction != null) {

+          jjtn000.jjtSetValue(direction + " " + t.image);

+      }

+      else {

+          // by default, arguments are IN

+          jjtn000.jjtSetValue("IN " + t.image);

+      }

+      {if (true) return jjtn000;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public String direction() throws ParseException {

+    if (jj_2_22(2)) {

+      jj_consume_token(K_IN);

+      jj_consume_token(K_OUT);

+                                  {if (true) return "IN OUT";}

+    } else {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_IN:

+        jj_consume_token(K_IN);

+               {if (true) return "IN";}

+        break;

+      case K_OUT:

+        jj_consume_token(K_OUT);

+                 {if (true) return "OUT";}

+        break;

+      default:

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public SimpleNode argumentDefaultAssignment() throws ParseException {

+ /*@bgen(jjtree) argumentDefaultAssignment */

+  SimpleNode jjtn000 = new SimpleNode(this, JJTARGUMENTDEFAULTASSIGNMENT);

+  boolean jjtc000 = true;

+  jjtree.openNodeScope(jjtn000);

+  jjtn000.jjtSetFirstToken(getToken(1));

+    try {

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case O_ASSIGN:

+        jj_consume_token(O_ASSIGN);

+        break;

+      case K_DEFAULT:

+        jj_consume_token(K_DEFAULT);

+        break;

+      default:

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+      skipToNextArg();

+      jjtree.closeNodeScope(jjtn000, true);

+      jjtc000 = false;

+      jjtn000.jjtSetLastToken(getToken(0));

+      jjtn000.jjtSetValue(" (optional)");

+      {if (true) return jjtn000;}

+    } catch (Throwable jjte000) {

+      if (jjtc000) {

+        jjtree.clearNodeScope(jjtn000);

+        jjtc000 = false;

+      } else {

+        jjtree.popNode();

+      }

+      if (jjte000 instanceof RuntimeException) {

+        {if (true) throw (RuntimeException)jjte000;}

+      }

+      if (jjte000 instanceof ParseException) {

+        {if (true) throw (ParseException)jjte000;}

+      }

+      {if (true) throw (Error)jjte000;}

+    } finally {

+      if (jjtc000) {

+        jjtree.closeNodeScope(jjtn000, true);

+        jjtn000.jjtSetLastToken(getToken(0));

+      }

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public void exceptionDeclaration(PLSQLPackageType packageType) throws ParseException {

+    jj_consume_token(S_IDENTIFIER);

+    jj_consume_token(K_EXCEPTION);

+    jj_consume_token(O_SEMICOLON);

+  }

+

+  final public void pragmaDeclaration(PLSQLPackageType packageType) throws ParseException {

+    jj_consume_token(K_PRAGMA);

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case K_AUTONOMOUS_TRANSACTION:

+    case K_EXCEPTION_INIT:

+    case K_INLINE:

+    case K_RESTRICT_REFERENCES:

+    case K_SERIALLY_REUSABLE:

+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+      case K_AUTONOMOUS_TRANSACTION:

+        jj_consume_token(K_AUTONOMOUS_TRANSACTION);

+        break;

+      case K_EXCEPTION_INIT:

+        jj_consume_token(K_EXCEPTION_INIT);

+        jj_consume_token(O_OPENPAREN);

+        jj_consume_token(S_IDENTIFIER);

+        jj_consume_token(O_COMMA);

+        jj_consume_token(S_NUMBER);

+        jj_consume_token(O_CLOSEPAREN);

+        break;

+      case K_SERIALLY_REUSABLE:

+        jj_consume_token(K_SERIALLY_REUSABLE);

+        break;

+      case K_INLINE:

+        jj_consume_token(K_INLINE);

+        jj_consume_token(O_OPENPAREN);

+        jj_consume_token(S_IDENTIFIER);

+        jj_consume_token(O_COMMA);

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_NO:

+        case K_YES:

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case K_YES:

+            jj_consume_token(K_YES);

+            break;

+          case K_NO:

+            jj_consume_token(K_NO);

+            break;

+          default:

+            jj_consume_token(-1);

+            throw new ParseException();

+          }

+          break;

+        default:

+          ;

+        }

+        jj_consume_token(O_CLOSEPAREN);

+        break;

+      case K_RESTRICT_REFERENCES:

+        jj_consume_token(K_RESTRICT_REFERENCES);

+        jj_consume_token(O_OPENPAREN);

+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+        case K_DEFAULT:

+        case S_IDENTIFIER:

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case S_IDENTIFIER:

+            jj_consume_token(S_IDENTIFIER);

+            break;

+          case K_DEFAULT:

+            jj_consume_token(K_DEFAULT);

+            break;

+          default:

+            jj_consume_token(-1);

+            throw new ParseException();

+          }

+          break;

+        default:

+          ;

+        }

+        label_5:

+        while (true) {

+          jj_consume_token(O_COMMA);

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case K_RNDS:

+          case K_RNPS:

+          case K_TRUST:

+          case K_WNDS:

+          case K_WNPS:

+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+            case K_RNDS:

+              jj_consume_token(K_RNDS);

+              break;

+            case K_WNDS:

+              jj_consume_token(K_WNDS);

+              break;

+            case K_RNPS:

+              jj_consume_token(K_RNPS);

+              break;

+            case K_WNPS:

+              jj_consume_token(K_WNPS);

+              break;

+            case K_TRUST:

+              jj_consume_token(K_TRUST);

+              break;

+            default:

+              jj_consume_token(-1);

+              throw new ParseException();

+            }

+            break;

+          default:

+            ;

+          }

+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+          case O_COMMA:

+            ;

+            break;

+          default:

+            break label_5;

+          }

+        }

+        jj_consume_token(O_CLOSEPAREN);

+        break;

+      default:

+        jj_consume_token(-1);

+        throw new ParseException();

+      }

+      break;

+    default:

+      ;

+    }

+    jj_consume_token(O_SEMICOLON);

+  }

+

+  final public String OracleObjectName() throws ParseException {

+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

+    case S_IDENTIFIER:

+      jj_consume_token(S_IDENTIFIER);

+     {if (true) return token.image;}

+      break;

+    case S_QUOTED_IDENTIFIER:

+      jj_consume_token(S_QUOTED_IDENTIFIER);

+      String s = token.image;

+      {if (true) return s.substring(1, s.length() - 1);} // strip-off quotes

+

+      break;

+    default:

+      jj_consume_token(-1);

+      throw new ParseException();

+    }

+    throw new Error("Missing return statement in function");

+  }

+

+  final public void skipToSemiColon() throws ParseException {

+        Token t = getNextToken();

+        while (t.kind != O_SEMICOLON) {

+                t = getNextToken();

+        }

+        token_source.input_stream.backup(1);

+  }

+

+  final public void skipToNextArg() throws ParseException {

+        Token t = getNextToken();

+        while (t.kind != O_COMMA && t.kind != O_CLOSEPAREN) {

+            t = getNextToken();

+        }

+        token_source.input_stream.backup(1);

+  }

+

+  final public void skipToEnd() throws ParseException {

+      /** skip through all the tokens. */

+      Token t = getNextToken();

+      while (t.kind != EOF) {

+          t = getNextToken();

+      }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  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; }

+  }

+

+  private boolean jj_2_10(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_10(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_11(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_11(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_12(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_12(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_13(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_13(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_14(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_14(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_15(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_15(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_16(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_16(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_17(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_17(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_18(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_18(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_19(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_19(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_20(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_20(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_21(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_21(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_2_22(int xla) {

+    jj_la = xla; jj_lastpos = jj_scanpos = token;

+    try { return !jj_3_22(); }

+    catch(LookaheadSuccess ls) { return true; }

+  }

+

+  private boolean jj_3R_32() {

+    if (jj_scan_token(K_INTERVAL)) return true;

+    return false;

+  }

+

+  private boolean jj_3_16() {

+    if (jj_scan_token(K_CHARACTER)) return true;

+    if (jj_scan_token(K_SET)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_21() {

+    if (jj_3R_57()) return true;

+    return false;

+  }

+

+  private boolean jj_3_19() {

+    if (jj_3R_11()) return true;

+    if (jj_scan_token(K_ROWTYPE)) return true;

+    return false;

+  }

+

+  private boolean jj_3_18() {

+    if (jj_3R_10()) return true;

+    if (jj_scan_token(K_TYPE2)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_20() {

+    if (jj_3R_19()) return true;

+    return false;

+  }

+

+  private boolean jj_3_7() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_scan_token(36)) jj_scanpos = xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_8()) jj_scanpos = xsp;

+    if (jj_scan_token(K_PRIMARY)) return true;

+    if (jj_scan_token(K_KEY)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_16() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_20()) {

+    jj_scanpos = xsp;

+    if (jj_3_18()) {

+    jj_scanpos = xsp;

+    if (jj_3_19()) {

+    jj_scanpos = xsp;

+    if (jj_3R_21()) return true;

+    }

+    }

+    }

+    return false;

+  }

+

+  private boolean jj_3R_56() {

+    if (jj_scan_token(K_CLOB)) return true;

+    return false;

+  }

+

+  private boolean jj_3_17() {

+    if (jj_scan_token(K_INTERVAL)) return true;

+    if (jj_scan_token(K_DAY)) return true;

+    return false;

+  }

+

+  private boolean jj_3_6() {

+    if (jj_3R_6()) return true;

+    if (jj_3R_7()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_31() {

+    if (jj_scan_token(K_DATE)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_30() {

+    if (jj_scan_token(K_BOOLEAN)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_29() {

+    if (jj_scan_token(K_RAW)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_55() {

+    if (jj_scan_token(K_NATIONAL)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_54() {

+    if (jj_scan_token(K_NVARCHAR2)) return true;

+    return false;

+  }

+

+  private boolean jj_3_20() {

+    if (jj_3R_10()) return true;

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_scan_token(191)) jj_scanpos = xsp;

+    return false;

+  }

+

+  private boolean jj_3R_28() {

+    if (jj_scan_token(K_LONG)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_53() {

+    if (jj_scan_token(K_NVARCHAR)) return true;

+    return false;

+  }

+

+  private boolean jj_3_21() {

+    if (jj_3R_11()) return true;

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_scan_token(165)) jj_scanpos = xsp;

+    return false;

+  }

+

+  private boolean jj_3_5() {

+    if (jj_3R_6()) return true;

+    if (jj_scan_token(O_DOT)) return true;

+    return false;

+  }

+

+  private boolean jj_3_13() {

+    if (jj_scan_token(S_IDENTIFIER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_52() {

+    if (jj_scan_token(K_NCHAR)) return true;

+    return false;

+  }

+

+  private boolean jj_3_11() {

+    if (jj_scan_token(S_IDENTIFIER)) return true;

+    return false;

+  }

+

+  private boolean jj_3_4() {

+    if (jj_3R_6()) return true;

+    if (jj_scan_token(O_DOT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_51() {

+    if (jj_scan_token(K_CHARACTER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_27() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_scan_token(117)) {

+    jj_scanpos = xsp;

+    if (jj_scan_token(118)) {

+    jj_scanpos = xsp;

+    if (jj_scan_token(48)) {

+    jj_scanpos = xsp;

+    if (jj_scan_token(47)) return true;

+    }

+    }

+    }

+    return false;

+  }

+

+  private boolean jj_3R_26() {

+    if (jj_scan_token(K_POSITIVE)) return true;

+    return false;

+  }

+

+  private boolean jj_3_9() {

+    if (jj_scan_token(S_IDENTIFIER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_25() {

+    if (jj_scan_token(K_NATURAL)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_24() {

+    if (jj_scan_token(K_BINARY_DOUBLE)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_23() {

+    if (jj_scan_token(K_BINARY_FLOAT)) return true;

+    return false;

+  }

+

+  private boolean jj_3_14() {

+    if (jj_scan_token(K_CHARACTER)) return true;

+    if (jj_scan_token(K_SET)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_19() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_22()) {

+    jj_scanpos = xsp;

+    if (jj_3R_23()) {

+    jj_scanpos = xsp;

+    if (jj_3R_24()) {

+    jj_scanpos = xsp;

+    if (jj_3R_25()) {

+    jj_scanpos = xsp;

+    if (jj_3R_26()) {

+    jj_scanpos = xsp;

+    if (jj_3R_27()) {

+    jj_scanpos = xsp;

+    if (jj_3R_28()) {

+    jj_scanpos = xsp;

+    if (jj_3R_29()) {

+    jj_scanpos = xsp;

+    if (jj_3R_30()) {

+    jj_scanpos = xsp;

+    if (jj_3R_31()) {

+    jj_scanpos = xsp;

+    if (jj_3_17()) {

+    jj_scanpos = xsp;

+    if (jj_3R_32()) {

+    jj_scanpos = xsp;

+    if (jj_3R_33()) {

+    jj_scanpos = xsp;

+    if (jj_3R_34()) {

+    jj_scanpos = xsp;

+    if (jj_3R_35()) {

+    jj_scanpos = xsp;

+    if (jj_3R_36()) {

+    jj_scanpos = xsp;

+    if (jj_3R_37()) {

+    jj_scanpos = xsp;

+    if (jj_3R_38()) {

+    jj_scanpos = xsp;

+    if (jj_3R_39()) {

+    jj_scanpos = xsp;

+    if (jj_3R_40()) {

+    jj_scanpos = xsp;

+    if (jj_3R_41()) {

+    jj_scanpos = xsp;

+    if (jj_3R_42()) {

+    jj_scanpos = xsp;

+    if (jj_3R_43()) {

+    jj_scanpos = xsp;

+    if (jj_3R_44()) {

+    jj_scanpos = xsp;

+    if (jj_3R_45()) {

+    jj_scanpos = xsp;

+    if (jj_3R_46()) {

+    jj_scanpos = xsp;

+    if (jj_3R_47()) {

+    jj_scanpos = xsp;

+    if (jj_3R_48()) {

+    jj_scanpos = xsp;

+    if (jj_3R_49()) {

+    jj_scanpos = xsp;

+    if (jj_3R_50()) {

+    jj_scanpos = xsp;

+    if (jj_3R_51()) {

+    jj_scanpos = xsp;

+    if (jj_3R_52()) {

+    jj_scanpos = xsp;

+    if (jj_3R_53()) {

+    jj_scanpos = xsp;

+    if (jj_3R_54()) {

+    jj_scanpos = xsp;

+    if (jj_3R_55()) {

+    jj_scanpos = xsp;

+    if (jj_3R_56()) return true;

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    }

+    return false;

+  }

+

+  private boolean jj_3R_22() {

+    if (jj_scan_token(K_BINARY_INTEGER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_50() {

+    if (jj_scan_token(K_VARCHAR2)) return true;

+    return false;

+  }

+

+  private boolean jj_3_12() {

+    if (jj_scan_token(K_CHARACTER)) return true;

+    if (jj_scan_token(K_SET)) return true;

+    return false;

+  }

+

+  private boolean jj_3_3() {

+    if (jj_3R_6()) return true;

+    if (jj_scan_token(O_DOT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_49() {

+    if (jj_scan_token(K_VARCHAR)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_9() {

+    if (jj_scan_token(S_IDENTIFIER)) return true;

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_scan_token(35)) jj_scanpos = xsp;

+    if (jj_3R_16()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_18() {

+    if (jj_scan_token(O_DOT)) return true;

+    if (jj_3R_6()) return true;

+    return false;

+  }

+

+  private boolean jj_3_8() {

+    if (jj_3R_9()) return true;

+    return false;

+  }

+

+  private boolean jj_3_10() {

+    if (jj_scan_token(K_CHARACTER)) return true;

+    if (jj_scan_token(K_SET)) return true;

+    return false;

+  }

+

+  private boolean jj_3_2() {

+    if (jj_3R_6()) return true;

+    if (jj_scan_token(O_DOT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_13() {

+    if (jj_scan_token(S_QUOTED_IDENTIFIER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_12() {

+    if (jj_scan_token(S_IDENTIFIER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_6() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_12()) {

+    jj_scanpos = xsp;

+    if (jj_3R_13()) return true;

+    }

+    return false;

+  }

+

+  private boolean jj_3R_48() {

+    if (jj_scan_token(K_CHAR)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_47() {

+    if (jj_scan_token(K_DOUBLE)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_57() {

+    if (jj_3R_6()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_17() {

+    if (jj_scan_token(O_DOT)) return true;

+    if (jj_3R_6()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_46() {

+    if (jj_scan_token(K_UROWID)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_45() {

+    if (jj_scan_token(K_ROWID)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_11() {

+    if (jj_3R_6()) return true;

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_18()) jj_scanpos = xsp;

+    return false;

+  }

+

+  private boolean jj_3_15() {

+    if (jj_scan_token(S_IDENTIFIER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_44() {

+    if (jj_scan_token(K_BFILE)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_43() {

+    if (jj_scan_token(K_NCLOB)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_42() {

+    if (jj_scan_token(K_BLOB)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_41() {

+    if (jj_scan_token(K_SIMPLE_INTEGER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_40() {

+    if (jj_scan_token(K_PLS_INTEGER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_39() {

+    if (jj_scan_token(K_MLSLABEL)) return true;

+    return false;

+  }

+

+  private boolean jj_3_1() {

+    if (jj_3R_6()) return true;

+    if (jj_scan_token(O_DOT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_38() {

+    if (jj_scan_token(K_REAL)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_37() {

+    if (jj_scan_token(K_FLOAT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_10() {

+    if (jj_3R_6()) return true;

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_17()) jj_scanpos = xsp;

+    return false;

+  }

+

+  private boolean jj_3R_59() {

+    if (jj_scan_token(K_TIMESTAMP)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_36() {

+    if (jj_scan_token(K_SMALLINT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_8() {

+    if (jj_3R_6()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_35() {

+    if (jj_scan_token(K_INT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_34() {

+    if (jj_scan_token(K_INTEGER)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_58() {

+    if (jj_scan_token(K_TIME)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_15() {

+    if (jj_3R_10()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_33() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_58()) {

+    jj_scanpos = xsp;

+    if (jj_3R_59()) return true;

+    }

+    return false;

+  }

+

+  private boolean jj_3_22() {

+    if (jj_scan_token(K_IN)) return true;

+    if (jj_scan_token(K_OUT)) return true;

+    return false;

+  }

+

+  private boolean jj_3R_14() {

+    if (jj_3R_19()) return true;

+    return false;

+  }

+

+  private boolean jj_3R_7() {

+    Token xsp;

+    xsp = jj_scanpos;

+    if (jj_3R_14()) {

+    jj_scanpos = xsp;

+    if (jj_3R_15()) return true;

+    }

+    return false;

+  }

+

+  /** Generated Token Manager. */

+  public DDLParserTokenManager token_source;

+  JavaCharStream jj_input_stream;

+  /** 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;

+

+  /** Constructor with InputStream. */

+  public DDLParser(java.io.InputStream stream) {

+     this(stream, null);

+  }

+  /** Constructor with InputStream and supplied encoding */

+  public DDLParser(java.io.InputStream stream, String encoding) {

+    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }

+    token_source = new DDLParserTokenManager(jj_input_stream);

+    token = new Token();

+    jj_ntk = -1;

+  }

+

+  /** Reinitialise. */

+  public void ReInit(java.io.InputStream stream) {

+     ReInit(stream, null);

+  }

+  /** Reinitialise. */

+  public void ReInit(java.io.InputStream stream, String encoding) {

+    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }

+    token_source.ReInit(jj_input_stream);

+    token = new Token();

+    jj_ntk = -1;

+    jjtree.reset();

+  }

+

+  /** Constructor. */

+  public DDLParser(java.io.Reader stream) {

+    jj_input_stream = new JavaCharStream(stream, 1, 1);

+    token_source = new DDLParserTokenManager(jj_input_stream);

+    token = new Token();

+    jj_ntk = -1;

+  }

+

+  /** Reinitialise. */

+  public void ReInit(java.io.Reader stream) {

+    jj_input_stream.ReInit(stream, 1, 1);

+    token_source.ReInit(jj_input_stream);

+    token = new Token();

+    jj_ntk = -1;

+    jjtree.reset();

+  }

+

+  /** Constructor with generated Token Manager. */

+  public DDLParser(DDLParserTokenManager tm) {

+    token_source = tm;

+    token = new Token();

+    jj_ntk = -1;

+  }

+

+  /** Reinitialise. */

+  public void ReInit(DDLParserTokenManager tm) {

+    token_source = tm;

+    token = new Token();

+    jj_ntk = -1;

+    jjtree.reset();

+  }

+

+  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) {

+      return token;

+    }

+    token = oldToken;

+    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_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;

+    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);

+  }

+

+  /** Generate ParseException. */

+  public ParseException generateParseException() {

+    Token errortok = token.next;

+    int line = errortok.beginLine, column = errortok.beginColumn;

+    String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;

+    return new ParseException("Parse error at line " + line + ", column " + column + ".  Encountered: " + mess);

+  }

+

+  /** Enable tracing. */

+  final public void enable_tracing() {

+  }

+

+  /** Disable tracing. */

+  final public void disable_tracing() {

+  }

+

+}

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
index d949389..b2f8319 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
Binary files differ
diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
index b1adb0f..5f10902 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
Binary files differ
diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java
index de66e6f..9bc3fe3 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java
@@ -234,271 +234,277 @@
   /** RegularExpression Id. */

   int K_NO = 110;

   /** RegularExpression Id. */

-  int K_NOCYCLE = 111;

+  int K_NOCOMPRESS = 111;

   /** RegularExpression Id. */

   int K_NOCOPY = 112;

   /** RegularExpression Id. */

-  int K_NOT = 113;

+  int K_NOCYCLE = 113;

   /** RegularExpression Id. */

-  int K_NULL = 114;

+  int K_NOT = 114;

   /** RegularExpression Id. */

-  int K_NULLS = 115;

+  int K_NULL = 115;

   /** RegularExpression Id. */

-  int K_NUMBER = 116;

+  int K_NULLS = 116;

   /** RegularExpression Id. */

-  int K_NUMERIC = 117;

+  int K_NUMBER = 117;

   /** RegularExpression Id. */

-  int K_NVARCHAR2 = 118;

+  int K_NUMERIC = 118;

   /** RegularExpression Id. */

-  int K_NVARCHAR = 119;

+  int K_NVARCHAR2 = 119;

   /** RegularExpression Id. */

-  int K_OBJECT = 120;

+  int K_NVARCHAR = 120;

   /** RegularExpression Id. */

-  int K_OF = 121;

+  int K_OBJECT = 121;

   /** RegularExpression Id. */

-  int K_ON = 122;

+  int K_OF = 122;

   /** RegularExpression Id. */

-  int K_ONLY = 123;

+  int K_ON = 123;

   /** RegularExpression Id. */

-  int K_OPEN = 124;

+  int K_ONLY = 124;

   /** RegularExpression Id. */

-  int K_OR = 125;

+  int K_OPEN = 125;

   /** RegularExpression Id. */

-  int K_OUT = 126;

+  int K_OR = 126;

   /** RegularExpression Id. */

-  int K_OUTER = 127;

+  int K_ORGANIZATION = 127;

   /** RegularExpression Id. */

-  int K_PACKAGE = 128;

+  int K_OUT = 128;

   /** RegularExpression Id. */

-  int K_PARALLEL_ENABLE = 129;

+  int K_OUTER = 129;

   /** RegularExpression Id. */

-  int K_PARTITION = 130;

+  int K_OVERFLOW = 130;

   /** RegularExpression Id. */

-  int K_PIPELINED = 131;

+  int K_PACKAGE = 131;

   /** RegularExpression Id. */

-  int K_PLS_INTEGER = 132;

+  int K_PARALLEL_ENABLE = 132;

   /** RegularExpression Id. */

-  int K_POSITIVE = 133;

+  int K_PARTITION = 133;

   /** RegularExpression Id. */

-  int K_PRAGMA = 134;

+  int K_PIPELINED = 134;

   /** RegularExpression Id. */

-  int K_PRECISION = 135;

+  int K_PLS_INTEGER = 135;

   /** RegularExpression Id. */

-  int K_PRESENT = 136;

+  int K_POSITIVE = 136;

   /** RegularExpression Id. */

-  int K_PRESERVE = 137;

+  int K_PRAGMA = 137;

   /** RegularExpression Id. */

-  int K_PRIMARY = 138;

+  int K_PRECISION = 138;

   /** RegularExpression Id. */

-  int K_PROCEDURE = 139;

+  int K_PRESENT = 139;

   /** RegularExpression Id. */

-  int K_RAISE = 140;

+  int K_PRESERVE = 140;

   /** RegularExpression Id. */

-  int K_RANGE = 141;

+  int K_PRIMARY = 141;

   /** RegularExpression Id. */

-  int K_RAW = 142;

+  int K_PROCEDURE = 142;

   /** RegularExpression Id. */

-  int K_READ = 143;

+  int K_RAISE = 143;

   /** RegularExpression Id. */

-  int K_REAL = 144;

+  int K_RANGE = 144;

   /** RegularExpression Id. */

-  int K_RECORD = 145;

+  int K_RAW = 145;

   /** RegularExpression Id. */

-  int K_REF = 146;

+  int K_READ = 146;

   /** RegularExpression Id. */

-  int K_REFERENCE = 147;

+  int K_REAL = 147;

   /** RegularExpression Id. */

-  int K_REGEXP_LIKE = 148;

+  int K_RECORD = 148;

   /** RegularExpression Id. */

-  int K_REPLACE = 149;

+  int K_REF = 149;

   /** RegularExpression Id. */

-  int K_RESTRICT_REFERENCES = 150;

+  int K_REFERENCE = 150;

   /** RegularExpression Id. */

-  int K_RESULT_CACHE = 151;

+  int K_REGEXP_LIKE = 151;

   /** RegularExpression Id. */

-  int K_RETURN = 152;

+  int K_REPLACE = 152;

   /** RegularExpression Id. */

-  int K_RETURNING = 153;

+  int K_RESTRICT_REFERENCES = 153;

   /** RegularExpression Id. */

-  int K_REVERSE = 154;

+  int K_RESULT_CACHE = 154;

   /** RegularExpression Id. */

-  int K_RIGHT = 155;

+  int K_RETURN = 155;

   /** RegularExpression Id. */

-  int K_RNDS = 156;

+  int K_RETURNING = 156;

   /** RegularExpression Id. */

-  int K_RNPS = 157;

+  int K_REVERSE = 157;

   /** RegularExpression Id. */

-  int K_ROLLBACK = 158;

+  int K_RIGHT = 158;

   /** RegularExpression Id. */

-  int K_ROLLUP = 159;

+  int K_RNDS = 159;

   /** RegularExpression Id. */

-  int K_ROWID = 160;

+  int K_RNPS = 160;

   /** RegularExpression Id. */

-  int K_ROWS = 161;

+  int K_ROLLBACK = 161;

   /** RegularExpression Id. */

-  int K_ROWTYPE = 162;

+  int K_ROLLUP = 162;

   /** RegularExpression Id. */

-  int K_RULES = 163;

+  int K_ROWID = 163;

   /** RegularExpression Id. */

-  int K_SECOND = 164;

+  int K_ROWS = 164;

   /** RegularExpression Id. */

-  int K_SEQUENTIAL = 165;

+  int K_ROWTYPE = 165;

   /** RegularExpression Id. */

-  int K_SERIALLY_REUSABLE = 166;

+  int K_RULES = 166;

   /** RegularExpression Id. */

-  int K_SESSIONTIMEZONE = 167;

+  int K_SECOND = 167;

   /** RegularExpression Id. */

-  int K_SET = 168;

+  int K_SEQUENTIAL = 168;

   /** RegularExpression Id. */

-  int K_SETS = 169;

+  int K_SERIALLY_REUSABLE = 169;

   /** RegularExpression Id. */

-  int K_SIBLINGS = 170;

+  int K_SESSIONTIMEZONE = 170;

   /** RegularExpression Id. */

-  int K_SINGLE = 171;

+  int K_SET = 171;

   /** RegularExpression Id. */

-  int K_SIMPLE_INTEGER = 172;

+  int K_SETS = 172;

   /** RegularExpression Id. */

-  int K_SMALLINT = 173;

+  int K_SIBLINGS = 173;

   /** RegularExpression Id. */

-  int K_SOME = 174;

+  int K_SINGLE = 174;

   /** RegularExpression Id. */

-  int K_STRING = 175;

+  int K_SIMPLE_INTEGER = 175;

   /** RegularExpression Id. */

-  int K_SUBMUlookISET = 176;

+  int K_SMALLINT = 176;

   /** RegularExpression Id. */

-  int K_SUBTYPE = 177;

+  int K_SOME = 177;

+  /** RegularExpression Id. */

+  int K_STRING = 178;

+  /** RegularExpression Id. */

+  int K_SUBMUlookISET = 179;

+  /** RegularExpression Id. */

+  int K_SUBTYPE = 180;

   /** RegularExpression Id. */

-  int K_TABLE = 178;

+  int K_TABLE = 181;

   /** RegularExpression Id. */

-  int K_TEMPORARY = 179;

+  int K_TEMPORARY = 182;

   /** RegularExpression Id. */

-  int K_THE = 180;

+  int K_THE = 183;

   /** RegularExpression Id. */

-  int K_TIME = 181;

+  int K_TIME = 184;

   /** RegularExpression Id. */

-  int K_TIMESTAMP = 182;

+  int K_TIMESTAMP = 185;

   /** RegularExpression Id. */

-  int K_TO = 183;

+  int K_TO = 186;

   /** RegularExpression Id. */

-  int K_TRANSACTION = 184;

+  int K_TRANSACTION = 187;

   /** RegularExpression Id. */

-  int K_TRUE = 185;

+  int K_TRUE = 188;

   /** RegularExpression Id. */

-  int K_TRUST = 186;

+  int K_TRUST = 189;

   /** RegularExpression Id. */

-  int K_TYPE = 187;

+  int K_TYPE = 190;

   /** RegularExpression Id. */

-  int K_TYPE2 = 188;

+  int K_TYPE2 = 191;

   /** RegularExpression Id. */

-  int K_UNDER_PATH = 189;

+  int K_UNDER_PATH = 192;

   /** RegularExpression Id. */

-  int K_UNTIL = 190;

+  int K_UNTIL = 193;

   /** RegularExpression Id. */

-  int K_UPDATED = 191;

+  int K_UPDATED = 194;

   /** RegularExpression Id. */

-  int K_UPSERT = 192;

+  int K_UPSERT = 195;

   /** RegularExpression Id. */

-  int K_UROWID = 193;

+  int K_UROWID = 196;

   /** RegularExpression Id. */

-  int K_USING = 194;

+  int K_USING = 197;

   /** RegularExpression Id. */

-  int K_VARCHAR2 = 195;

+  int K_VARCHAR2 = 198;

   /** RegularExpression Id. */

-  int K_VARCHAR = 196;

+  int K_VARCHAR = 199;

   /** RegularExpression Id. */

-  int K_VARRAY = 197;

+  int K_VARRAY = 200;

   /** RegularExpression Id. */

-  int K_VARYING = 198;

+  int K_VARYING = 201;

   /** RegularExpression Id. */

-  int K_WITH = 199;

+  int K_WITH = 202;

   /** RegularExpression Id. */

-  int K_WHILE = 200;

+  int K_WHILE = 203;

   /** RegularExpression Id. */

-  int K_WNDS = 201;

+  int K_WNDS = 204;

   /** RegularExpression Id. */

-  int K_WNPS = 202;

+  int K_WNPS = 205;

   /** RegularExpression Id. */

-  int K_WORK = 203;

+  int K_WORK = 206;

   /** RegularExpression Id. */

-  int K_YEAR = 204;

+  int K_YEAR = 207;

   /** RegularExpression Id. */

-  int K_YES = 205;

+  int K_YES = 208;

   /** RegularExpression Id. */

-  int K_ZONE = 206;

+  int K_ZONE = 209;

   /** RegularExpression Id. */

-  int O_ASSIGN = 207;

+  int O_ASSIGN = 210;

   /** RegularExpression Id. */

-  int O_ASTERISK = 208;

+  int O_ASTERISK = 211;

   /** RegularExpression Id. */

-  int O_ATSIGN = 209;

+  int O_ATSIGN = 212;

   /** RegularExpression Id. */

-  int O_CLOSEPAREN = 210;

+  int O_CLOSEPAREN = 213;

   /** RegularExpression Id. */

-  int O_CONCAT = 211;

+  int O_CONCAT = 214;

   /** RegularExpression Id. */

-  int O_COLON = 212;

+  int O_COLON = 215;

   /** RegularExpression Id. */

-  int O_COMMA = 213;

+  int O_COMMA = 216;

   /** RegularExpression Id. */

-  int O_DOT = 214;

+  int O_DOT = 217;

   /** RegularExpression Id. */

-  int O_DOUBLEDOT = 215;

+  int O_DOUBLEDOT = 218;

   /** RegularExpression Id. */

-  int O_DOLLAR = 216;

+  int O_DOLLAR = 219;

   /** RegularExpression Id. */

-  int O_PERCENT = 217;

+  int O_PERCENT = 220;

   /** RegularExpression Id. */

-  int O_EQUAL = 218;

+  int O_EQUAL = 221;

   /** RegularExpression Id. */

-  int O_GREATER = 219;

+  int O_GREATER = 222;

   /** RegularExpression Id. */

-  int O_GREATEREQUAL = 220;

+  int O_GREATEREQUAL = 223;

   /** RegularExpression Id. */

-  int O_JOINPLUS = 221;

+  int O_JOINPLUS = 224;

   /** RegularExpression Id. */

-  int O_LESS = 222;

+  int O_LESS = 225;

   /** RegularExpression Id. */

-  int O_LESSEQUAL = 223;

+  int O_LESSEQUAL = 226;

   /** RegularExpression Id. */

-  int O_MINUS = 224;

+  int O_MINUS = 227;

   /** RegularExpression Id. */

-  int O_NOTEQUAL2 = 225;

+  int O_NOTEQUAL2 = 228;

   /** RegularExpression Id. */

-  int O_NOTEQUAL = 226;

+  int O_NOTEQUAL = 229;

   /** RegularExpression Id. */

-  int O_OPENPAREN = 227;

+  int O_OPENPAREN = 230;

   /** RegularExpression Id. */

-  int O_PLUS = 228;

+  int O_PLUS = 231;

   /** RegularExpression Id. */

-  int O_POUND = 229;

+  int O_POUND = 232;

   /** RegularExpression Id. */

-  int O_QUESTIONMARK = 230;

+  int O_QUESTIONMARK = 233;

   /** RegularExpression Id. */

-  int O_SEMICOLON = 231;

+  int O_SEMICOLON = 234;

   /** RegularExpression Id. */

-  int O_SLASH = 232;

+  int O_SLASH = 235;

   /** RegularExpression Id. */

-  int O_TILDE = 233;

+  int O_TILDE = 236;

   /** RegularExpression Id. */

-  int S_NUMBER = 234;

+  int S_NUMBER = 237;

   /** RegularExpression Id. */

-  int FLOAT = 235;

+  int FLOAT = 238;

   /** RegularExpression Id. */

-  int INTEGER = 236;

+  int INTEGER = 239;

   /** RegularExpression Id. */

-  int DIGIT = 237;

+  int DIGIT = 240;

   /** RegularExpression Id. */

-  int S_IDENTIFIER = 238;

+  int S_IDENTIFIER = 241;

   /** RegularExpression Id. */

-  int LETTER = 239;

+  int LETTER = 242;

   /** RegularExpression Id. */

-  int SPECIAL_CHARS = 240;

+  int SPECIAL_CHARS = 243;

   /** RegularExpression Id. */

-  int S_BIND = 241;

+  int S_BIND = 244;

   /** RegularExpression Id. */

-  int S_CHAR_LITERAL = 242;

+  int S_CHAR_LITERAL = 245;

   /** RegularExpression Id. */

-  int S_QUOTED_IDENTIFIER = 243;

+  int S_QUOTED_IDENTIFIER = 246;

 

   /** Lexical state. */

   int DEFAULT = 0;

@@ -616,8 +622,9 @@
     "\"NCLOB\"",

     "\"NEW_NAMES\"",

     "\"\\\'NO\\\'\"",

-    "\"NOCYCLE\"",

+    "\"NOCOMPRESS\"",

     "\"NOCOPY\"",

+    "\"NOCYCLE\"",

     "\"NOT\"",

     "\"NULL\"",

     "\"NULLS\"",

@@ -631,8 +638,10 @@
     "\"ONLY\"",

     "\"OPEN\"",

     "\"OR\"",

+    "\"ORGANIZATION\"",

     "\"OUT\"",

     "\"OUTER\"",

+    "\"OVERFLOW\"",

     "\"PACKAGE\"",

     "\"PARALLEL_ENABLE\"",

     "\"PARTITION\"",

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java
index d4462ad..c1f3cf4 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java
@@ -14,6 +14,7 @@
 package org.eclipse.persistence.tools.oracleddl.parser;
 //javase imports
 import java.io.InputStream;
+import java.util.List;
 //metadata imports
 import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;
 import org.eclipse.persistence.tools.oracleddl.metadata.CharType;
@@ -79,322 +80,324 @@
    switch (pos)
    {
       case 0:
-         if ((active3 & 0x100000000L) != 0L)
+         if ((active3 & 0x800000000L) != 0L)
             return 0;
-         if ((active3 & 0xc00000L) != 0L)
+         if ((active3 & 0x6000000L) != 0L)
             return 71;
-         if ((active3 & 0x10000000000L) != 0L)
-            return 6;
-         if ((active3 & 0x108000L) != 0L)
-            return 21;
-         if ((active1 & 0x400000000000L) != 0L || (active3 & 0x2000L) != 0L)
-            return 72;
-         if ((active0 & 0xff00L) != 0L)
-            return 73;
-         if ((active0 & 0xffffffffbfff0000L) != 0L || (active1 & 0xffffbfffffffffffL) != 0L || (active2 & 0xeffffffbffffffffL) != 0L || (active3 & 0x5fffL) != 0L)
+         if ((active0 & 0xffffffffbfff0000L) != 0L || (active1 & 0xffffbfffffffffffL) != 0L || (active2 & 0x7fffffdfffffffffL) != 0L || (active3 & 0x2ffffL) != 0L)
          {
-            jjmatchedKind = 238;
-            return 73;
+            jjmatchedKind = 241;
+            return 72;
          }
+         if ((active3 & 0x80000000000L) != 0L)
+            return 6;
+         if ((active3 & 0x840000L) != 0L)
+            return 21;
+         if ((active1 & 0x400000000000L) != 0L || (active3 & 0x10000L) != 0L)
+            return 73;
+         if ((active0 & 0xff00L) != 0L)
+            return 72;
          return -1;
       case 1:
-         if ((active0 & 0xffffffffb3ffee00L) != 0L || (active1 & 0xd1ffbfffffe003ffL) != 0L || (active2 & 0xef7ffffbffffffffL) != 0L || (active3 & 0x5fffL) != 0L)
+         if ((active1 & 0x400000000000L) != 0L || (active3 & 0x10000L) != 0L)
+            return 73;
+         if ((active0 & 0xc001000L) != 0L || (active1 & 0xdc000000001ffc00L) != 0L || (active2 & 0x400000000000000L) != 0L)
+            return 72;
+         if ((active0 & 0xffffffffb3ffee00L) != 0L || (active1 & 0x23ffbfffffe003ffL) != 0L || (active2 & 0x7bffffdfffffffffL) != 0L || (active3 & 0x2ffffL) != 0L)
          {
             if (jjmatchedPos != 1)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 1;
             }
-            return 73;
-         }
-         if ((active1 & 0x400000000000L) != 0L || (active3 & 0x2000L) != 0L)
             return 72;
-         if ((active0 & 0xc001000L) != 0L || (active1 & 0x2e000000001ffc00L) != 0L || (active2 & 0x80000000000000L) != 0L)
-            return 73;
+         }
          return -1;
       case 2:
-         if ((active0 & 0xf7fc5fffbbffec00L) != 0L || (active1 & 0x19fdbb7fff60fbffL) != 0L || (active2 & 0xef6ffcfbfff3bfffL) != 0L || (active3 & 0x5fffL) != 0L)
+         if ((active0 & 0xf7fc5fffbbffec00L) != 0L || (active1 & 0xb3fbbb7fff60fbffL) != 0L || (active2 & 0x7b7fe7dfff9dfffcL) != 0L || (active3 & 0x2ffffL) != 0L)
          {
             if (jjmatchedPos != 2)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 2;
             }
-            return 73;
-         }
-         if ((active1 & 0x400000000000L) != 0L || (active3 & 0x2000L) != 0L)
             return 72;
-         if ((active0 & 0x803a00000000200L) != 0L || (active1 & 0xc0020480008f0000L) != 0L || (active2 & 0x100300000c4000L) != 0L)
+         }
+         if ((active1 & 0x400000000000L) != 0L || (active3 & 0x10000L) != 0L)
             return 73;
+         if ((active0 & 0x803a00000000200L) != 0L || (active1 & 0x40480008f0000L) != 0L || (active2 & 0x80180000620003L) != 0L)
+            return 72;
          return -1;
       case 3:
-         if ((active1 & 0x200000000000L) != 0L || (active2 & 0x10L) != 0L)
+         if ((active0 & 0xf7ff4eff019fec00L) != 0L || (active1 & 0x83e39b7c782efbdeL) != 0L || (active2 & 0x287de7ce7fd1ff7eL) != 0L || (active3 & 0xbffL) != 0L)
          {
             if (jjmatchedPos != 3)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
+               jjmatchedPos = 3;
+            }
+            return 72;
+         }
+         if ((active1 & 0x400000000000L) != 0L)
+            return 45;
+         if ((active1 & 0x200000000000L) != 0L || (active2 & 0x80L) != 0L)
+         {
+            if (jjmatchedPos != 3)
+            {
+               jjmatchedKind = 241;
                jjmatchedPos = 3;
             }
             return 14;
          }
-         if ((active1 & 0x400000000000L) != 0L)
-            return 45;
-         if ((active3 & 0x2000L) != 0L)
+         if ((active3 & 0x10000L) != 0L)
+            return 73;
+         if ((active0 & 0x1100ba600000L) != 0L || (active1 & 0x3018000387400021L) != 0L || (active2 & 0x53021011800c0000L) != 0L || (active3 & 0x2f400L) != 0L)
             return 72;
-         if ((active0 & 0x1100ba600000L) != 0L || (active1 & 0x180c000387400021L) != 0L || (active2 & 0xa60420230018000L) != 0L || (active3 & 0x5e80L) != 0L)
-            return 73;
-         if ((active0 & 0xf7ff4eff019fec00L) != 0L || (active1 & 0x81f19b7c782efbdeL) != 0L || (active2 & 0xe50fbcf9cffa3fefL) != 0L || (active3 & 0x17fL) != 0L)
-         {
-            if (jjmatchedPos != 3)
-            {
-               jjmatchedKind = 238;
-               jjmatchedPos = 3;
-            }
-            return 73;
-         }
          return -1;
       case 4:
          if ((active1 & 0x18000000L) != 0L)
             return 14;
-         if ((active3 & 0x2000L) != 0L)
+         if ((active3 & 0x10000L) != 0L)
             return 45;
-         if ((active0 & 0xf4ff4e5e219ce000L) != 0L || (active1 & 0x1f1831c002e6bc4L) != 0L || (active2 & 0xa14bbcf0c7fa0fefL) != 0L || (active3 & 0x7bL) != 0L)
+         if ((active1 & 0x200000000000L) != 0L || (active2 & 0x80L) != 0L)
          {
-            jjmatchedKind = 238;
-            jjmatchedPos = 4;
-            return 73;
-         }
-         if ((active1 & 0x200000000000L) != 0L || (active2 & 0x10L) != 0L)
-         {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 4;
             return 14;
          }
-         if ((active0 & 0x30000a100030c00L) != 0L || (active1 & 0x800818606000901aL) != 0L || (active2 & 0x4404000908003000L) != 0L || (active3 & 0x104L) != 0L)
-            return 73;
+         if ((active0 & 0xf4ff4e5e219ce000L) != 0L || (active1 & 0x83e3831c002e6bc4L) != 0L || (active2 & 0xa5de7863fd07f7cL) != 0L || (active3 & 0x3ddL) != 0L)
+         {
+            jjmatchedKind = 241;
+            jjmatchedPos = 4;
+            return 72;
+         }
+         if ((active0 & 0x30000a100030c00L) != 0L || (active1 & 0x1018606000901aL) != 0L || (active2 & 0x2020004840018002L) != 0L || (active3 & 0x822L) != 0L)
+            return 72;
          return -1;
       case 5:
-         if ((active1 & 0x200000000000L) != 0L || (active2 & 0x2000000000000010L) != 0L)
+         if ((active1 & 0x200000000000L) != 0L || (active2 & 0x80L) != 0L || (active3 & 0x1L) != 0L)
          {
             if (jjmatchedPos != 5)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 5;
             }
             return 14;
          }
-         if ((active0 & 0xd06f461a219cc000L) != 0L || (active1 & 0xe08314002e2944L) != 0L || (active2 & 0x814b34e044f80fafL) != 0L || (active3 & 0x58L) != 0L)
+         if ((active0 & 0xd06f461a219cc000L) != 0L || (active1 & 0x81c28314002e2944L) != 0L || (active2 & 0xa59a70227c07d7cL) != 0L || (active3 & 0x2c4L) != 0L)
          {
             if (jjmatchedPos != 5)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 5;
             }
-            return 73;
+            return 72;
          }
-         if ((active0 & 0x2490084400002000L) != 0L || (active1 & 0x111000800004280L) != 0L || (active2 & 0x881083020040L) != 0L || (active3 & 0x23L) != 0L)
-            return 73;
+         if ((active0 & 0x2490084400002000L) != 0L || (active1 & 0x221000800004280L) != 0L || (active2 & 0x4408418100200L) != 0L || (active3 & 0x118L) != 0L)
+            return 72;
          return -1;
       case 6:
-         if ((active0 & 0x10000000001c0000L) != 0L || (active1 & 0x200000000000L) != 0L || (active2 & 0x2000100000900010L) != 0L)
+         if ((active0 & 0xc06246182000c000L) != 0L || (active1 & 0x81808114000c2944L) != 0L || (active2 & 0xa49270212405574L) != 0L)
          {
             if (jjmatchedPos != 6)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
+               jjmatchedPos = 6;
+            }
+            return 72;
+         }
+         if ((active0 & 0x10000000001c0000L) != 0L || (active1 & 0x200000000000L) != 0L || (active2 & 0x800004800080L) != 0L || (active3 & 0x1L) != 0L)
+         {
+            if (jjmatchedPos != 6)
+            {
+               jjmatchedKind = 241;
                jjmatchedPos = 6;
             }
             return 14;
          }
-         if ((active0 & 0xd000201800000L) != 0L || (active1 & 0x20820000220000L) != 0L || (active2 & 0x8002000004200501L) != 0L || (active3 & 0x58L) != 0L)
-            return 73;
-         if ((active0 & 0xc06246182000c000L) != 0L || (active1 & 0xc00114000c2944L) != 0L || (active2 & 0x14924e042480aaeL) != 0L)
-         {
-            if (jjmatchedPos != 6)
-            {
-               jjmatchedKind = 238;
-               jjmatchedPos = 6;
-            }
-            return 73;
-         }
+         if ((active0 & 0xd000201800000L) != 0L || (active1 & 0x42020000220000L) != 0L || (active2 & 0x10000021002808L) != 0L || (active3 & 0x2c4L) != 0L)
+            return 72;
          return -1;
       case 7:
-         if ((active3 & 0x8L) != 0L)
+         if ((active3 & 0x40L) != 0L)
             return 14;
-         if ((active0 & 0xc06240102000c000L) != 0L || (active1 & 0x40800L) != 0L || (active2 & 0x14900e00248088eL) != 0L)
+         if ((active0 & 0x10000600001c0000L) != 0L || (active1 & 0x200000000000L) != 0L || (active2 & 0x800004800080L) != 0L || (active3 & 0x1L) != 0L)
          {
             if (jjmatchedPos != 7)
             {
-               jjmatchedKind = 238;
-               jjmatchedPos = 7;
-            }
-            return 73;
-         }
-         if ((active0 & 0x10000600001c0000L) != 0L || (active1 & 0x200000000000L) != 0L || (active2 & 0x2000100000900010L) != 0L)
-         {
-            if (jjmatchedPos != 7)
-            {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 7;
             }
             return 14;
          }
-         if ((active0 & 0x800000000L) != 0L || (active1 & 0xc0011400082144L) != 0L || (active2 & 0x240040000220L) != 0L)
-            return 73;
+         if ((active0 & 0x800000000L) != 0L || (active1 & 0x180011400082144L) != 0L || (active2 & 0x1200200001104L) != 0L)
+            return 72;
+         if ((active0 & 0xc06240102000c000L) != 0L || (active1 & 0x8000800000040800L) != 0L || (active2 & 0xa48070012404470L) != 0L)
+         {
+            if (jjmatchedPos != 7)
+            {
+               jjmatchedKind = 241;
+               jjmatchedPos = 7;
+            }
+            return 72;
+         }
          return -1;
       case 8:
-         if ((active0 & 0x20401000008000L) != 0L || (active2 & 0x10100a000000000L) != 0L)
+         if ((active1 & 0x80200000000000L) != 0L)
+            return 14;
+         if ((active0 & 0x20401000008000L) != 0L || (active1 & 0x8000800000000000L) != 0L || (active2 & 0x808050000000000L) != 0L)
          {
             if (jjmatchedPos != 8)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 8;
             }
-            return 73;
+            return 72;
          }
-         if ((active1 & 0x40200000000000L) != 0L)
-            return 14;
-         if ((active0 & 0xc042000020004000L) != 0L || (active1 & 0x40800L) != 0L || (active2 & 0x4800000208088cL) != 0L)
-            return 73;
-         if ((active0 & 0x10000600001c0000L) != 0L || (active2 & 0x2000104000d00012L) != 0L)
+         if ((active0 & 0xc042000020004000L) != 0L || (active1 & 0x40800L) != 0L || (active2 & 0x240000010404460L) != 0L)
+            return 72;
+         if ((active0 & 0x10000600001c0000L) != 0L || (active2 & 0x820006800090L) != 0L || (active3 & 0x1L) != 0L)
          {
             if (jjmatchedPos != 8)
             {
-               jjmatchedKind = 238;
+               jjmatchedKind = 241;
                jjmatchedPos = 8;
             }
             return 14;
          }
          return -1;
       case 9:
-         if ((active0 & 0x20000000000L) != 0L || (active2 & 0x2000000000000000L) != 0L)
+         if ((active0 & 0x20000000000L) != 0L || (active3 & 0x1L) != 0L)
             return 14;
-         if ((active0 & 0x90000400001c0000L) != 0L || (active2 & 0x104000d00012L) != 0L)
+         if ((active0 & 0x20000000008000L) != 0L || (active1 & 0x8000000000000000L) != 0L || (active2 & 0x808040000000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
+            jjmatchedPos = 9;
+            return 72;
+         }
+         if ((active0 & 0x90000400001c0000L) != 0L || (active2 & 0x820006800090L) != 0L)
+         {
+            jjmatchedKind = 241;
             jjmatchedPos = 9;
             return 14;
          }
-         if ((active0 & 0x401000000000L) != 0L || (active2 & 0x2000000000L) != 0L)
-            return 73;
-         if ((active0 & 0x20000000008000L) != 0L || (active2 & 0x101008000000000L) != 0L)
-         {
-            jjmatchedKind = 238;
-            jjmatchedPos = 9;
-            return 73;
-         }
+         if ((active0 & 0x401000000000L) != 0L || (active1 & 0x800000000000L) != 0L || (active2 & 0x10000000000L) != 0L)
+            return 72;
          return -1;
       case 10:
-         if ((active0 & 0x1000000000000000L) != 0L || (active2 & 0x100010L) != 0L)
-            return 14;
-         if ((active0 & 0x80000400001c8000L) != 0L || (active2 & 0x104000c00002L) != 0L)
+         if ((active0 & 0x20000000000000L) != 0L || (active1 & 0x8000000000000000L) != 0L || (active2 & 0x8040000000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
+            jjmatchedPos = 10;
+            return 72;
+         }
+         if ((active0 & 0x1000000000000000L) != 0L || (active2 & 0x800080L) != 0L)
+            return 14;
+         if ((active0 & 0x80000400001c8000L) != 0L || (active2 & 0x820006000010L) != 0L)
+         {
+            jjmatchedKind = 241;
             jjmatchedPos = 10;
             return 14;
          }
-         if ((active2 & 0x100000000000000L) != 0L)
-            return 73;
-         if ((active0 & 0x20000000000000L) != 0L || (active2 & 0x1008000000000L) != 0L)
-         {
-            jjmatchedKind = 238;
-            jjmatchedPos = 10;
-            return 73;
-         }
+         if ((active2 & 0x800000000000000L) != 0L)
+            return 72;
          return -1;
       case 11:
-         if ((active0 & 0x40000080000L) != 0L || (active2 & 0x800000L) != 0L)
+         if ((active0 & 0x40000080000L) != 0L || (active2 & 0x4000000L) != 0L)
             return 14;
-         if ((active0 & 0x20000000000000L) != 0L || (active2 & 0x1008000000000L) != 0L)
+         if ((active1 & 0x8000000000000000L) != 0L)
+            return 72;
+         if ((active0 & 0x20000000000000L) != 0L || (active2 & 0x8040000000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 11;
-            return 73;
+            return 72;
          }
-         if ((active0 & 0x8000000000148000L) != 0L || (active2 & 0x104000400002L) != 0L)
+         if ((active0 & 0x8000000000148000L) != 0L || (active2 & 0x820002000010L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 11;
             return 14;
          }
          return -1;
       case 12:
-         if ((active2 & 0x8000000000L) != 0L)
+         if ((active0 & 0x8000000000108000L) != 0L || (active2 & 0x820002000010L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 12;
-            return 73;
+            return 14;
          }
          if ((active0 & 0x40000L) != 0L)
             return 14;
-         if ((active0 & 0x20000000000000L) != 0L || (active2 & 0x1000000000000L) != 0L)
-            return 73;
-         if ((active0 & 0x8000000000108000L) != 0L || (active2 & 0x104000400002L) != 0L)
+         if ((active2 & 0x40000000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 12;
-            return 14;
+            return 72;
          }
+         if ((active0 & 0x20000000000000L) != 0L || (active2 & 0x8000000000000L) != 0L)
+            return 72;
          return -1;
       case 13:
-         if ((active0 & 0x8000000000100000L) != 0L || (active2 & 0x100000000000L) != 0L)
-            return 14;
-         if ((active0 & 0x8000L) != 0L || (active2 & 0x4000400002L) != 0L)
+         if ((active2 & 0x40000000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 13;
-            return 14;
+            return 72;
          }
-         if ((active2 & 0x8000000000L) != 0L)
+         if ((active0 & 0x8000000000100000L) != 0L || (active2 & 0x800000000000L) != 0L)
+            return 14;
+         if ((active0 & 0x8000L) != 0L || (active2 & 0x20002000010L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 13;
-            return 73;
+            return 14;
          }
          return -1;
       case 14:
-         if ((active2 & 0x2L) != 0L)
+         if ((active2 & 0x10L) != 0L)
             return 14;
-         if ((active0 & 0x8000L) != 0L || (active2 & 0x4000400000L) != 0L)
+         if ((active2 & 0x40000000000L) != 0L)
+            return 72;
+         if ((active0 & 0x8000L) != 0L || (active2 & 0x20002000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 14;
             return 14;
          }
-         if ((active2 & 0x8000000000L) != 0L)
-            return 73;
          return -1;
       case 15:
-         if ((active0 & 0x8000L) != 0L || (active2 & 0x4000400000L) != 0L)
+         if ((active0 & 0x8000L) != 0L || (active2 & 0x20002000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 15;
             return 14;
          }
          return -1;
       case 16:
-         if ((active2 & 0x4000000000L) != 0L)
+         if ((active2 & 0x20000000000L) != 0L)
             return 14;
-         if ((active0 & 0x8000L) != 0L || (active2 & 0x400000L) != 0L)
+         if ((active0 & 0x8000L) != 0L || (active2 & 0x2000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 16;
             return 14;
          }
          return -1;
       case 17:
-         if ((active0 & 0x8000L) != 0L || (active2 & 0x400000L) != 0L)
+         if ((active0 & 0x8000L) != 0L || (active2 & 0x2000000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 17;
             return 14;
          }
          return -1;
       case 18:
-         if ((active2 & 0x400000L) != 0L)
+         if ((active2 & 0x2000000L) != 0L)
             return 14;
          if ((active0 & 0x8000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 18;
             return 14;
          }
@@ -402,7 +405,7 @@
       case 19:
          if ((active0 & 0x8000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 19;
             return 14;
          }
@@ -410,7 +413,7 @@
       case 20:
          if ((active0 & 0x8000L) != 0L)
          {
-            jjmatchedKind = 238;
+            jjmatchedKind = 241;
             jjmatchedPos = 20;
             return 14;
          }
@@ -434,125 +437,102 @@
    switch(curChar)
    {
       case 33:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x400000000L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x2000000000L);
       case 35:
-         return jjStopAtPos(0, 229);
+         return jjStopAtPos(0, 232);
       case 36:
-         return jjStopAtPos(0, 216);
+         return jjStopAtPos(0, 219);
       case 37:
-         jjmatchedKind = 217;
-         return jjMoveStringLiteralDfa1_0(0x40000000L, 0x0L, 0x1000000400000000L, 0x0L);
+         jjmatchedKind = 220;
+         return jjMoveStringLiteralDfa1_0(0x40000000L, 0x0L, 0x8000002000000000L, 0x0L);
       case 39:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x400000000000L, 0x0L, 0x2000L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x400000000000L, 0x0L, 0x10000L);
       case 40:
-         jjmatchedKind = 227;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x20000000L);
+         jjmatchedKind = 230;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x100000000L);
       case 41:
-         return jjStopAtPos(0, 210);
-      case 42:
-         return jjStopAtPos(0, 208);
-      case 43:
-         return jjStopAtPos(0, 228);
-      case 44:
          return jjStopAtPos(0, 213);
-      case 45:
-         return jjStartNfaWithStates_0(0, 224, 0);
-      case 46:
-         jjmatchedKind = 214;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x800000L);
-      case 47:
-         return jjStartNfaWithStates_0(0, 232, 6);
-      case 58:
-         jjmatchedKind = 212;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x8000L);
-      case 59:
+      case 42:
+         return jjStopAtPos(0, 211);
+      case 43:
          return jjStopAtPos(0, 231);
+      case 44:
+         return jjStopAtPos(0, 216);
+      case 45:
+         return jjStartNfaWithStates_0(0, 227, 0);
+      case 46:
+         jjmatchedKind = 217;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x4000000L);
+      case 47:
+         return jjStartNfaWithStates_0(0, 235, 6);
+      case 58:
+         jjmatchedKind = 215;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x40000L);
+      case 59:
+         return jjStopAtPos(0, 234);
       case 60:
-         jjmatchedKind = 222;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x280000000L);
+         jjmatchedKind = 225;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x1400000000L);
       case 61:
-         return jjStopAtPos(0, 218);
+         return jjStopAtPos(0, 221);
       case 62:
-         jjmatchedKind = 219;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x10000000L);
+         jjmatchedKind = 222;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x80000000L);
       case 63:
-         return jjStopAtPos(0, 230);
+         return jjStopAtPos(0, 233);
       case 64:
-         return jjStopAtPos(0, 209);
+         return jjStopAtPos(0, 212);
       case 65:
-      case 97:
          jjmatchedKind = 8;
          return jjMoveStringLiteralDfa1_0(0xfe00L, 0x0L, 0x0L, 0x0L);
       case 66:
-      case 98:
          return jjMoveStringLiteralDfa1_0(0xfff0000L, 0x0L, 0x0L, 0x0L);
       case 67:
-      case 99:
          return jjMoveStringLiteralDfa1_0(0xfffb0000000L, 0x0L, 0x0L, 0x0L);
       case 68:
-      case 100:
          return jjMoveStringLiteralDfa1_0(0xfff00000000000L, 0x0L, 0x0L, 0x0L);
       case 69:
-      case 101:
          return jjMoveStringLiteralDfa1_0(0xff00000000000000L, 0x1L, 0x0L, 0x0L);
       case 70:
-      case 102:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x7eL, 0x0L, 0x0L);
       case 71:
-      case 103:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x180L, 0x0L, 0x0L);
       case 73:
-      case 105:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x3ffe00L, 0x0L, 0x0L);
       case 74:
-      case 106:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x400000L, 0x0L, 0x0L);
       case 75:
-      case 107:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x1800000L, 0x0L, 0x0L);
       case 76:
-      case 108:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x1fe000000L, 0x0L, 0x0L);
       case 77:
-      case 109:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x7e00000000L, 0x0L, 0x0L);
       case 78:
-      case 110:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0xffbf8000000000L, 0x0L, 0x0L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x1ffbf8000000000L, 0x0L, 0x0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0xff00000000000000L, 0x0L, 0x0L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0xfe00000000000000L, 0x7L, 0x0L);
       case 80:
-      case 112:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xfffL, 0x0L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x7ff8L, 0x0L);
       case 82:
-      case 114:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xbfffff000L, 0x0L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x5fffff8000L, 0x0L);
       case 83:
-      case 115:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x3fff000000000L, 0x0L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x1fff8000000000L, 0x0L);
       case 84:
-      case 116:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xffc000000000000L, 0x0L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x7fe0000000000000L, 0x0L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xe000000000000000L, 0x7L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x3fL);
       case 86:
-      case 118:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x78L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x3c0L);
       case 87:
-      case 119:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0xf80L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x7c00L);
       case 89:
-      case 121:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x1000L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x8000L);
       case 90:
-      case 122:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x4000L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x20000L);
       case 124:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x80000L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x400000L);
       case 126:
-         return jjStopAtPos(0, 233);
+         return jjStopAtPos(0, 236);
       default :
          return jjMoveNfa_0(5, 0);
    }
@@ -567,119 +547,100 @@
    switch(curChar)
    {
       case 43:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x20000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x100000000L);
       case 46:
-         if ((active3 & 0x800000L) != 0L)
-            return jjStopAtPos(1, 215);
+         if ((active3 & 0x4000000L) != 0L)
+            return jjStopAtPos(1, 218);
          break;
       case 61:
-         if ((active3 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 207);
-         else if ((active3 & 0x10000000L) != 0L)
-            return jjStopAtPos(1, 220);
+         if ((active3 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 210);
          else if ((active3 & 0x80000000L) != 0L)
             return jjStopAtPos(1, 223);
          else if ((active3 & 0x400000000L) != 0L)
             return jjStopAtPos(1, 226);
+         else if ((active3 & 0x2000000000L) != 0L)
+            return jjStopAtPos(1, 229);
          break;
       case 62:
-         if ((active3 & 0x200000000L) != 0L)
-            return jjStopAtPos(1, 225);
+         if ((active3 & 0x1000000000L) != 0L)
+            return jjStopAtPos(1, 228);
          break;
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0x300000000000L, active1, 0x78202000002L, active2, 0x4000000007007L, active3, 0x78L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x300000000000L, active1, 0x78202000002L, active2, 0x20000000038038L, active3, 0x3c0L);
       case 66:
-      case 98:
-         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L, active1, 0x100000000000000L, active2, 0L, active3, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L, active1, 0x200000000000000L, active2, 0L, active3, 0L);
       case 67:
-      case 99:
          return jjMoveStringLiteralDfa2_0(active0, 0x40000000L, active1, 0x180000000000L, active2, 0L, active3, 0L);
       case 68:
-      case 100:
          return jjMoveStringLiteralDfa2_0(active0, 0x200L, active1, 0L, active2, 0L, active3, 0L);
       case 69:
-      case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x3f800000010000L, active1, 0x200c05800000L, active2, 0x803f007ff8000L, active3, 0x1000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x3f800000010000L, active1, 0x200c05800000L, active2, 0x401f803ffc0000L, active3, 0x8000L);
       case 70:
-      case 102:
-         if ((active1 & 0x200000000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 121, 73);
+         if ((active1 & 0x400000000000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 122, 72);
          return jjMoveStringLiteralDfa2_0(active0, 0x20000L, active1, 0L, active2, 0L, active3, 0L);
       case 71:
-      case 103:
          return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x200L, active2, 0L, active3, 0L);
       case 72:
-      case 104:
-         return jjMoveStringLiteralDfa2_0(active0, 0x30000000L, active1, 0L, active2, 0x10000000000000L, active3, 0x100L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x30000000L, active1, 0L, active2, 0x80000000000000L, active3, 0x800L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa2_0(active0, 0x400000001c0000L, active1, 0x3800000cL, active2, 0x601c0008000008L, active3, 0x80L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000001c0000L, active1, 0x3800000cL, active2, 0x300e00040000040L, active3, 0x400L);
       case 76:
-      case 108:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100000180200400L, active1, 0x1000000090L, active2, 0x10L, active3, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x100000180200400L, active1, 0x1000000090L, active2, 0x80L, active3, 0L);
       case 77:
-      case 109:
-         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000000L, active1, 0L, active2, 0x200000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000000L, active1, 0L, active2, 0x1000000000000L, active3, 0L);
       case 78:
-      case 110:
          if ((active1 & 0x400L) != 0L)
          {
             jjmatchedKind = 74;
             jjmatchedPos = 1;
          }
-         else if ((active1 & 0x400000000000000L) != 0L)
+         else if ((active1 & 0x800000000000000L) != 0L)
          {
-            jjmatchedKind = 122;
+            jjmatchedKind = 123;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0xc00000000000000L, active1, 0x8004000000ff800L, active2, 0x6000000030000000L, active3, 0x600L);
+         return jjMoveStringLiteralDfa2_0(active0, 0xc00000000000000L, active1, 0x10004000000ff800L, active2, 0x180000000L, active3, 0x3003L);
       case 79:
-      case 111:
-         if ((active2 & 0x80000000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 183, 73);
-         return jjMoveStringLiteralDfa2_0(active0, 0x80003e00c00000L, active1, 0x38061c0400000L, active2, 0x4003c0000020L, active3, 0x4800L);
+         if ((active2 & 0x400000000000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 186, 72);
+         return jjMoveStringLiteralDfa2_0(active0, 0x80003e00c00000L, active1, 0x78061c0400000L, active2, 0x2001e00000100L, active3, 0x24000L);
       case 80:
-      case 112:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x1000000000000000L, active2, 0x8000000000000000L, active3, 0x1L);
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x2000000000000000L, active2, 0L, active3, 0xcL);
       case 81:
-      case 113:
          return jjMoveStringLiteralDfa2_0(active0, 0x1000000000000000L, active1, 0L, active2, 0L, active3, 0L);
       case 82:
-      case 114:
-         if ((active1 & 0x2000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 125, 73);
-         return jjMoveStringLiteralDfa2_0(active0, 0xc000000800L, active1, 0x100L, active2, 0x700000400000fc0L, active3, 0x2L);
+         if ((active1 & 0x4000000000000000L) != 0L)
+         {
+            jjmatchedKind = 126;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0xc000000800L, active1, 0x8000000000000100L, active2, 0x3800002000007e00L, active3, 0x10L);
       case 83:
-      case 115:
          if ((active0 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(1, 12, 73);
+            return jjStartNfaWithStates_0(1, 12, 72);
          else if ((active1 & 0x100000L) != 0L)
-            return jjStartNfaWithStates_0(1, 84, 73);
-         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0x4L);
+            return jjStartNfaWithStates_0(1, 84, 72);
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0x20L);
       case 84:
-      case 116:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x200000L, active2, 0x1000800000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x200000L, active2, 0x8004000000000000L, active3, 0L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa2_0(active0, 0xf000300e000L, active1, 0xc03c000000000060L, active2, 0x3000800000000L, active3, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0xf000300e000L, active1, 0x78000000000060L, active2, 0x18004000000003L, active3, 0L);
       case 86:
-      case 118:
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0xc0000000000000L, active2, 0L, active3, 0L);
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x180000000000000L, active2, 0x4L, active3, 0L);
       case 88:
-      case 120:
          return jjMoveStringLiteralDfa2_0(active0, 0xc000000000000000L, active1, 0x1L, active2, 0L, active3, 0L);
       case 89:
-      case 121:
          if ((active0 & 0x4000000L) != 0L)
          {
             jjmatchedKind = 26;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x8000000L, active1, 0L, active2, 0x800000000000000L, active3, 0x2000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x8000000L, active1, 0L, active2, 0x4000000000000000L, active3, 0x10000L);
       case 124:
-         if ((active3 & 0x80000L) != 0L)
-            return jjStopAtPos(1, 211);
+         if ((active3 & 0x400000L) != 0L)
+            return jjStopAtPos(1, 214);
          break;
       default :
          break;
@@ -698,124 +659,100 @@
    switch(curChar)
    {
       case 41:
-         if ((active3 & 0x20000000L) != 0L)
-            return jjStopAtPos(2, 221);
+         if ((active3 & 0x100000000L) != 0L)
+            return jjStopAtPos(2, 224);
          break;
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa3_0(active0, 0x400000030000000L, active1, 0xc0000400000000L, active2, 0x100200000018040L, active3, 0x1000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000030000000L, active1, 0x180000400000000L, active2, 0x8010000000c0200L, active3, 0x8000L);
       case 66:
-      case 98:
-         return jjMoveStringLiteralDfa3_0(active0, 0x10000000000L, active1, 0L, active2, 0x7040000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000000000L, active1, 0L, active2, 0x38200000000000L, active3, 0L);
       case 67:
-      case 99:
          if ((active0 & 0x800000000000L) != 0L)
          {
             jjmatchedKind = 47;
             jjmatchedPos = 2;
          }
-         return jjMoveStringLiteralDfa3_0(active0, 0xe003000000000000L, active1, 0x1800040000800L, active2, 0x1000020001L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0xe003000000000000L, active1, 0x3800040000800L, active2, 0x8000100008L, active3, 0L);
       case 68:
-      case 100:
          if ((active0 & 0x200L) != 0L)
-            return jjStartNfaWithStates_0(2, 9, 73);
+            return jjStartNfaWithStates_0(2, 9, 72);
          else if ((active0 & 0x800000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 59, 73);
-         return jjMoveStringLiteralDfa3_0(active0, 0x400000L, active1, 0x2000001000L, active2, 0xa000000010000000L, active3, 0x200L);
+            return jjStartNfaWithStates_0(2, 59, 72);
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000L, active1, 0x2000001000L, active2, 0x80000000L, active3, 0x1005L);
       case 69:
-      case 101:
-         if ((active2 & 0x10000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 180, 73);
-         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000L, active1, 0x1000000001200000L, active2, 0x380L, active3, 0x2000L);
+         if ((active2 & 0x80000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 183, 72);
+         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000L, active1, 0x2000000001200000L, active2, 0x1c04L, active3, 0x10000L);
       case 70:
-      case 102:
-         if ((active2 & 0x40000L) != 0L)
+         if ((active2 & 0x200000L) != 0L)
          {
-            jjmatchedKind = 146;
+            jjmatchedKind = 149;
             jjmatchedPos = 2;
          }
-         return jjMoveStringLiteralDfa3_0(active0, 0xc000000000000L, active1, 0x4002000L, active2, 0x80000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0xc000000000000L, active1, 0x4002000L, active2, 0x400000L, active3, 0L);
       case 71:
-      case 103:
-         return jjMoveStringLiteralDfa3_0(active0, 0x10000L, active1, 0L, active2, 0x8100000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000L, active1, 0x8000000000000000L, active2, 0x40800000L, active3, 0L);
       case 72:
-      case 104:
          return jjMoveStringLiteralDfa3_0(active0, 0x40000000L, active1, 0x80000000000L, active2, 0L, active3, 0L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1020000L, active1, 0x200400001L, active2, 0x1400L, active3, 0x104L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1020000L, active1, 0x200400001L, active2, 0xa000L, active3, 0x820L);
       case 74:
-      case 106:
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x100000000000000L, active2, 0L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200000000000000L, active2, 0L, active3, 0L);
       case 75:
-      case 107:
          return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x38000000L, active2, 0L, active3, 0L);
       case 76:
-      case 108:
-         return jjMoveStringLiteralDfa3_0(active0, 0x10000202000000L, active1, 0x80c100000004022L, active2, 0x8c0000000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000202000000L, active1, 0x1018100000004022L, active2, 0x4600000000L, active3, 0L);
       case 77:
-      case 109:
-         return jjMoveStringLiteralDfa3_0(active0, 0x40000400000000L, active1, 0x30000800000000L, active2, 0x68500000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x40000400000000L, active1, 0x60000800000000L, active2, 0x342800000000000L, active3, 0L);
       case 78:
-      case 110:
          if ((active1 & 0x8000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 103, 73);
-         return jjMoveStringLiteralDfa3_0(active0, 0x18001c0000L, active1, 0x4080008240L, active2, 0x80000002000L, active3, 0x4000L);
+            return jjStartNfaWithStates_0(2, 103, 72);
+         return jjMoveStringLiteralDfa3_0(active0, 0x18001c0000L, active1, 0x4080008240L, active2, 0x400000010000L, active3, 0x20000L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa3_0(active0, 0x8180a00000L, active1, 0x400100000190L, active2, 0x400000800L, active3, 0x2L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x8180a00000L, active1, 0x400100000190L, active2, 0x2000004000L, active3, 0x10L);
       case 80:
-      case 112:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000000L, active1, 0x4L, active2, 0x800000020200008L, active3, 0x400L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000000L, active1, 0x4L, active2, 0x4000000101000040L, active3, 0x2000L);
       case 81:
-      case 113:
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x10000000000L, active3, 0L);
       case 82:
-      case 114:
-         return jjMoveStringLiteralDfa3_0(active0, 0xe0000000800L, active1, 0x8L, active2, 0x804000000006L, active3, 0x878L);
+         return jjMoveStringLiteralDfa3_0(active0, 0xe0000000800L, active1, 0x8L, active2, 0x4020000000030L, active3, 0x43c0L);
       case 83:
-      case 115:
-         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000000L, active1, 0x1002000000L, active2, 0x8000c00030L, active3, 0x1L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000000L, active1, 0x1002000000L, active2, 0x40006000180L, active3, 0x8L);
       case 84:
-      case 116:
          if ((active1 & 0x10000L) != 0L)
          {
             jjmatchedKind = 80;
             jjmatchedPos = 2;
          }
-         else if ((active1 & 0x2000000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 113, 73);
-         else if ((active1 & 0x4000000000000000L) != 0L)
+         else if ((active1 & 0x4000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 114, 72);
+         else if ((active2 & 0x1L) != 0L)
          {
-            jjmatchedKind = 126;
+            jjmatchedKind = 128;
             jjmatchedPos = 2;
          }
-         else if ((active2 & 0x10000000000L) != 0L)
+         else if ((active2 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 168;
+            jjmatchedKind = 171;
             jjmatchedPos = 2;
          }
-         return jjMoveStringLiteralDfa3_0(active0, 0x2050000800e400L, active1, 0x80000300000e0000L, active2, 0x4000020003000000L, active3, 0x80L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x2050000800e400L, active1, 0x300000e0000L, active2, 0x100018000002L, active3, 0x402L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1080002000000000L, active1, 0L, active2, 0x600000000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1080002000000000L, active1, 0L, active2, 0x3000000000000000L, active3, 0L);
       case 86:
-      case 118:
          if ((active1 & 0x40000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 106, 73);
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x4000000L, active3, 0L);
+            return jjStartNfaWithStates_0(2, 106, 72);
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x20000000L, active3, 0L);
       case 87:
-      case 119:
-         if ((active2 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(2, 142, 73);
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200000000000L, active2, 0x300000000L, active3, 0L);
+         if ((active2 & 0x20000L) != 0L)
+            return jjStartNfaWithStates_0(2, 145, 72);
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200000000000L, active2, 0x1800000000L, active3, 0L);
       case 89:
-      case 121:
          if ((active0 & 0x200000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 45, 73);
+            return jjStartNfaWithStates_0(2, 45, 72);
          else if ((active1 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(2, 87, 73);
-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L);
+            return jjStartNfaWithStates_0(2, 87, 72);
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0L);
       default :
          break;
    }
@@ -836,149 +773,129 @@
          if ((active1 & 0x400000000000L) != 0L)
             return jjStartNfaWithStates_0(3, 110, 45);
          break;
-      case 95:
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000000000L, active2, 0x10L, active3, 0L);
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa4_0(active0, 0x30040040401c0800L, active1, 0x80040000010L, active2, 0x8000000000000002L, active3, 0L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x30040040401c0800L, active1, 0x8000080040000010L, active2, 0x10L, active3, 0x4L);
       case 66:
-      case 98:
          if ((active0 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(3, 21, 73);
+            return jjStartNfaWithStates_0(3, 21, 72);
          else if ((active0 & 0x80000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 31, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x480000000000000L, active1, 0x10000800000080L, active2, 0L, active3, 0L);
+            return jjStartNfaWithStates_0(3, 31, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x480000000000000L, active1, 0x20000800000080L, active2, 0L, active3, 0L);
       case 67:
-      case 99:
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x40L, active2, 0x880L, active3, 0x18L);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x40L, active2, 0x4400L, active3, 0xc0L);
       case 68:
-      case 100:
-         if ((active2 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_0(3, 143, 73);
+         if ((active2 & 0x40000L) != 0L)
+            return jjStartNfaWithStates_0(3, 146, 72);
          break;
       case 69:
-      case 101:
          if ((active0 & 0x8000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 27, 73);
+            return jjStartNfaWithStates_0(3, 27, 72);
          else if ((active0 & 0x10000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 40, 73);
+            return jjStartNfaWithStates_0(3, 40, 72);
          else if ((active0 & 0x100000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 44, 73);
-         else if ((active2 & 0x400000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 174, 73);
-         else if ((active2 & 0x20000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 44, 72);
+         else if ((active2 & 0x2000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 177, 72);
+         else if ((active2 & 0x100000000000000L) != 0L)
          {
-            jjmatchedKind = 181;
+            jjmatchedKind = 184;
             jjmatchedPos = 3;
          }
-         else if ((active2 & 0x200000000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 185, 73);
-         else if ((active2 & 0x800000000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 187, 73);
-         else if ((active3 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(3, 206, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0xc070000000000400L, active1, 0x81200020380e9000L, active2, 0x2040000804180008L, active3, 0x1L);
+         else if ((active2 & 0x1000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 188, 72);
+         else if ((active2 & 0x4000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 190, 72);
+         else if ((active3 & 0x20000L) != 0L)
+            return jjStartNfaWithStates_0(3, 209, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0xc070000000000400L, active1, 0x2400020380e9000L, active2, 0x200004020c00042L, active3, 0x9L);
       case 71:
-      case 103:
          if ((active1 & 0x80000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 95, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x80000002040L, active3, 0L);
+            return jjStartNfaWithStates_0(3, 95, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x400000010200L, active3, 0L);
       case 72:
-      case 104:
-         if ((active3 & 0x80L) != 0L)
-            return jjStartNfaWithStates_0(3, 199, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x2000L, active1, 0L, active2, 0x8000000L, active3, 0L);
+         if ((active3 & 0x400L) != 0L)
+            return jjStartNfaWithStates_0(3, 202, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000L, active1, 0L, active2, 0x40000000L, active3, 0L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa4_0(active0, 0x109400000010000L, active1, 0x10000006000L, active2, 0x4000804100000020L, active3, 0L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x109400000010000L, active1, 0x10000006000L, active2, 0x4020800000100L, active3, 0x2L);
       case 75:
-      case 107:
          if ((active0 & 0x2000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 25, 73);
-         else if ((active3 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(3, 203, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x1L, active3, 0L);
+            return jjStartNfaWithStates_0(3, 25, 72);
+         else if ((active3 & 0x4000L) != 0L)
+            return jjStartNfaWithStates_0(3, 206, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0L);
       case 76:
-      case 108:
          if ((active1 & 0x20L) != 0L)
-            return jjStartNfaWithStates_0(3, 69, 73);
-         else if ((active1 & 0x4000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 69, 72);
+         else if ((active1 & 0x8000000000000L) != 0L)
          {
-            jjmatchedKind = 114;
+            jjmatchedKind = 115;
             jjmatchedPos = 3;
          }
-         else if ((active2 & 0x10000L) != 0L)
-            return jjStartNfaWithStates_0(3, 144, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x201820000L, active1, 0x8001000000000L, active2, 0x42400c0200000L, active3, 0x100L);
+         else if ((active2 & 0x80000L) != 0L)
+            return jjStartNfaWithStates_0(3, 147, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x201820000L, active1, 0x10001000000000L, active2, 0x21200601000000L, active3, 0x800L);
       case 77:
-      case 109:
-         return jjMoveStringLiteralDfa4_0(active0, 0x400000000L, active1, 0L, active2, 0x1000000000400L, active3, 0L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000000L, active1, 0L, active2, 0x8000000002000L, active3, 0L);
       case 78:
-      case 110:
          if ((active1 & 0x400000L) != 0L)
-            return jjStartNfaWithStates_0(3, 86, 73);
+            return jjStartNfaWithStates_0(3, 86, 72);
          else if ((active1 & 0x200000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 97, 73);
-         else if ((active1 & 0x1000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 124, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000L, active1, 0L, active2, 0x100000000000000L, active3, 0x4L);
+            return jjStartNfaWithStates_0(3, 97, 72);
+         else if ((active1 & 0x2000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 125, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000L, active1, 0L, active2, 0x800000000000000L, active3, 0x20L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa4_0(active0, 0xc000L, active1, 0x1100000000200L, active2, 0x1000020000L, active3, 0L);
+         return jjMoveStringLiteralDfa4_0(active0, 0xc000L, active1, 0x1900000000200L, active2, 0x8000100000L, active3, 0L);
       case 80:
-      case 112:
          if ((active1 & 0x1000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 88, 73);
+            return jjStartNfaWithStates_0(3, 88, 72);
          else if ((active1 & 0x100000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 96, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x1008100000000000L, active3, 0L);
+            return jjStartNfaWithStates_0(3, 96, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x8040800000000000L, active3, 0L);
       case 82:
-      case 114:
          if ((active0 & 0x10000000L) != 0L)
          {
             jjmatchedKind = 28;
             jjmatchedPos = 3;
          }
-         else if ((active3 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(3, 204, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x2060020000000L, active1, 0xc0000000200800L, active2, 0L, active3, 0x20L);
+         else if ((active3 & 0x8000L) != 0L)
+            return jjStartNfaWithStates_0(3, 207, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2060020000000L, active1, 0x180000000200800L, active2, 0x4L, active3, 0x100L);
       case 83:
-      case 115:
-         if ((active2 & 0x10000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 156, 73);
-         else if ((active2 & 0x20000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 157, 73);
-         else if ((active2 & 0x200000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 161, 73);
-         else if ((active2 & 0x20000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 169, 73);
-         else if ((active3 & 0x200L) != 0L)
-            return jjStartNfaWithStates_0(3, 201, 73);
-         else if ((active3 & 0x400L) != 0L)
-            return jjStartNfaWithStates_0(3, 202, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x89900000000L, active1, 0x40000000eL, active2, 0x400008000001300L, active3, 0x2000L);
+         if ((active2 & 0x80000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 159, 72);
+         else if ((active2 & 0x100000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 160, 72);
+         else if ((active2 & 0x1000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 164, 72);
+         else if ((active2 & 0x100000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 172, 72);
+         else if ((active3 & 0x1000L) != 0L)
+            return jjStartNfaWithStates_0(3, 204, 72);
+         else if ((active3 & 0x2000L) != 0L)
+            return jjStartNfaWithStates_0(3, 205, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x89900000000L, active1, 0x40000000eL, active2, 0x2000040000009800L, active3, 0x10000L);
       case 84:
-      case 116:
          if ((active1 & 0x1L) != 0L)
-            return jjStartNfaWithStates_0(3, 64, 73);
+            return jjStartNfaWithStates_0(3, 64, 72);
          else if ((active1 & 0x2000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 89, 73);
+            return jjStartNfaWithStates_0(3, 89, 72);
          else if ((active1 & 0x4000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 90, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L, active1, 0x4000000000L, active2, 0x2000000400004L, active3, 0L);
+            return jjStartNfaWithStates_0(3, 90, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L, active1, 0x4000000000L, active2, 0x10000002000020L, active3, 0L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x20000000100L, active2, 0x2003800000L, active3, 0L);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x20000000100L, active2, 0x1001c000000L, active3, 0L);
       case 87:
-      case 119:
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x400000000L, active3, 0x2L);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0x10L);
       case 89:
-      case 121:
          if ((active0 & 0x400000L) != 0L)
-            return jjStartNfaWithStates_0(3, 22, 73);
-         else if ((active1 & 0x800000000000000L) != 0L)
-            return jjStartNfaWithStates_0(3, 123, 73);
-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800000000000L, active2, 0L, active3, 0x40L);
+            return jjStartNfaWithStates_0(3, 22, 72);
+         else if ((active1 & 0x1000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 124, 72);
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x2000000000000L, active2, 0L, active3, 0x200L);
+      case 95:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000000000L, active2, 0x80L, active3, 0L);
       default :
          break;
    }
@@ -996,8 +913,8 @@
    switch(curChar)
    {
       case 39:
-         if ((active3 & 0x2000L) != 0L)
-            return jjStartNfaWithStates_0(4, 205, 45);
+         if ((active3 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_0(4, 208, 45);
          break;
       case 50:
          if ((active1 & 0x8000000L) != 0L)
@@ -1008,131 +925,111 @@
             return jjStartNfaWithStates_0(4, 92, 14);
          break;
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa5_0(active0, 0x20000000L, active1, 0x1000200080L, active2, 0x4000200401L, active3, 0x20L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000L, active1, 0x1000200080L, active2, 0x20001002008L, active3, 0x100L);
       case 66:
-      case 98:
          if ((active1 & 0x100000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 108, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x40000000L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 108, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x200000000L, active3, 0L);
       case 67:
-      case 99:
          if ((active1 & 0x20000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 93, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1c0800000000000L, active2, 0L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 93, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x382000000000000L, active2, 0L, active3, 0L);
       case 68:
-      case 100:
-         if ((active2 & 0x100000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 160, 73);
+         if ((active2 & 0x800000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 163, 72);
          break;
       case 69:
-      case 101:
          if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(4, 17, 73);
+            return jjStartNfaWithStates_0(4, 17, 72);
          else if ((active0 & 0x100000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 32, 73);
+            return jjStartNfaWithStates_0(4, 32, 72);
          else if ((active1 & 0x2L) != 0L)
-            return jjStartNfaWithStates_0(4, 65, 73);
-         else if ((active2 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(4, 140, 73);
-         else if ((active2 & 0x2000L) != 0L)
-            return jjStartNfaWithStates_0(4, 141, 73);
-         else if ((active2 & 0x4000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 178, 73);
-         else if ((active2 & 0x1000000000000000L) != 0L)
-            return jjStopAtPos(4, 188);
-         else if ((active3 & 0x100L) != 0L)
-            return jjStartNfaWithStates_0(4, 200, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0x2060200800000L, active1, 0x10000800000800L, active2, 0x2000000b00L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 65, 72);
+         else if ((active2 & 0x8000L) != 0L)
+            return jjStartNfaWithStates_0(4, 143, 72);
+         else if ((active2 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_0(4, 144, 72);
+         else if ((active2 & 0x20000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 181, 72);
+         else if ((active2 & 0x8000000000000000L) != 0L)
+            return jjStopAtPos(4, 191);
+         else if ((active3 & 0x800L) != 0L)
+            return jjStartNfaWithStates_0(4, 203, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0x2060200800000L, active1, 0x20000800000800L, active2, 0x10000005800L, active3, 0L);
       case 70:
-      case 102:
          if ((active0 & 0x100000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 56, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L, active2, 0L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 56, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L, active2, 0x4L, active3, 0L);
       case 71:
-      case 103:
-         if ((active3 & 0x4L) != 0L)
-            return jjStartNfaWithStates_0(4, 194, 73);
+         if ((active3 & 0x20L) != 0L)
+            return jjStartNfaWithStates_0(4, 197, 72);
          return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x20000L, active2, 0L, active3, 0L);
       case 72:
-      case 104:
          if ((active1 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 102, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x18L);
+            return jjStartNfaWithStates_0(4, 102, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0xc0L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa5_0(active0, 0x400002000L, active1, 0L, active2, 0x48000000094L, active3, 0x42L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x400002000L, active1, 0L, active2, 0x2400000004a0L, active3, 0x210L);
       case 76:
-      case 108:
          if ((active1 & 0x40000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 94, 73);
+            return jjStartNfaWithStates_0(4, 94, 72);
          else if ((active1 & 0x2000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 101, 73);
-         else if ((active2 & 0x4000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 190, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0x1480000000000000L, active1, 0L, active2, 0x38000080000aL, active3, 0L);
+            return jjStartNfaWithStates_0(4, 101, 72);
+         else if ((active3 & 0x2L) != 0L)
+            return jjStartNfaWithStates_0(4, 193, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0x1480000000000000L, active1, 0L, active2, 0x1c00004000050L, active3, 0L);
       case 77:
-      case 109:
-         return jjMoveStringLiteralDfa5_0(active0, 0x1400000004000L, active1, 0L, active2, 0x40L, active3, 0L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x1400000004000L, active1, 0x800000000000L, active2, 0x200L, active3, 0L);
       case 78:
-      case 110:
          if ((active0 & 0x10000L) != 0L)
-            return jjStartNfaWithStates_0(4, 16, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0x48000000008000L, active1, 0x200000006000L, active2, 0x801000000000L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 16, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0x48000000008000L, active1, 0x8000200000006000L, active2, 0x4008000000000L, active3, 0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000L, active1, 0x10000000000L, active2, 0x8000000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000L, active1, 0x10000000000L, active2, 0x40000000000000L, active3, 0L);
       case 80:
-      case 112:
          return jjMoveStringLiteralDfa5_0(active0, 0xe000000000000000L, active1, 0x1000000000100L, active2, 0L, active3, 0L);
       case 82:
-      case 114:
          if ((active0 & 0x400L) != 0L)
-            return jjStartNfaWithStates_0(4, 10, 73);
+            return jjStartNfaWithStates_0(4, 10, 72);
          else if ((active1 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_0(4, 79, 73);
+            return jjStartNfaWithStates_0(4, 79, 72);
          else if ((active1 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 107, 73);
-         else if ((active1 & 0x8000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 127, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0x200000401c0000L, active1, 0x200200000c0200L, active2, 0x20000000074a0000L, active3, 0x1L);
+            return jjStartNfaWithStates_0(4, 107, 72);
+         else if ((active2 & 0x2L) != 0L)
+            return jjStartNfaWithStates_0(4, 129, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0x200000401c0000L, active1, 0x400200000c0200L, active2, 0x3a500000L, active3, 0x9L);
       case 83:
-      case 115:
          if ((active0 & 0x8000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 39, 73);
-         else if ((active1 & 0x8000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 115, 73);
-         else if ((active2 & 0x800000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 163, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x140000000000000L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 39, 72);
+         else if ((active1 & 0x10000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 116, 72);
+         else if ((active2 & 0x4000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 166, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0xa00000000000000L, active3, 0L);
       case 84:
-      case 116:
          if ((active0 & 0x2000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 37, 73);
+            return jjStartNfaWithStates_0(4, 37, 72);
          else if ((active1 & 0x8L) != 0L)
-            return jjStartNfaWithStates_0(4, 67, 73);
+            return jjStartNfaWithStates_0(4, 67, 72);
          else if ((active1 & 0x10L) != 0L)
-            return jjStartNfaWithStates_0(4, 68, 73);
-         else if ((active2 & 0x8000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 155, 73);
-         else if ((active2 & 0x400000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 186, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0x10005801000000L, active1, 0x40L, active2, 0x8000000400000020L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 68, 72);
+         else if ((active2 & 0x40000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 158, 72);
+         else if ((active2 & 0x2000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 189, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0x10005801000000L, active1, 0x40L, active2, 0x2000000100L, active3, 0x4L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa5_0(active0, 0x4000000000000L, active1, 0x400000000L, active2, 0x1000080000000L, active3, 0L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x4000000000000L, active1, 0x400000000L, active2, 0x8000400000000L, active3, 0L);
       case 88:
-      case 120:
          if ((active1 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(4, 76, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x100000L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 76, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x800000L, active3, 0L);
       case 89:
-      case 121:
          if ((active0 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(4, 11, 73);
+            return jjStartNfaWithStates_0(4, 11, 72);
          else if ((active0 & 0x200000000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 57, 73);
-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);
+            return jjStartNfaWithStates_0(4, 57, 72);
+         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x10000000000000L, active3, 0L);
       default :
          break;
    }
@@ -1149,118 +1046,101 @@
    }
    switch(curChar)
    {
-      case 95:
-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x2000000000000000L, active3, 0L);
       case 65:
-      case 97:
-         if ((active2 & 0x40L) != 0L)
-            return jjStartNfaWithStates_0(5, 134, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0x1000800804000L, active1, 0x220000000000L, active2, 0x100000040000000L, active3, 0x18L);
+         if ((active2 & 0x200L) != 0L)
+            return jjStartNfaWithStates_0(5, 137, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0x1000800804000L, active1, 0x220000000000L, active2, 0x800000200000000L, active3, 0xc0L);
       case 66:
-      case 98:
          return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x1000000000L, active2, 0L, active3, 0L);
       case 67:
-      case 99:
-         return jjMoveStringLiteralDfa6_0(active0, 0x220000000L, active1, 0L, active2, 0x200000L, active3, 0L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x220000000L, active1, 0L, active2, 0x1000000L, active3, 0L);
       case 68:
-      case 100:
          if ((active0 & 0x2000L) != 0L)
-            return jjStartNfaWithStates_0(5, 13, 73);
-         else if ((active2 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(5, 145, 73);
-         else if ((active2 & 0x1000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 164, 73);
-         else if ((active3 & 0x2L) != 0L)
-            return jjStartNfaWithStates_0(5, 193, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x800L, active3, 0L);
+            return jjStartNfaWithStates_0(5, 13, 72);
+         else if ((active2 & 0x100000L) != 0L)
+            return jjStartNfaWithStates_0(5, 148, 72);
+         else if ((active2 & 0x8000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 167, 72);
+         else if ((active3 & 0x10L) != 0L)
+            return jjStartNfaWithStates_0(5, 196, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x4000L, active3, 0L);
       case 69:
-      case 101:
          if ((active0 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 38, 73);
+            return jjStartNfaWithStates_0(5, 38, 72);
          else if ((active0 & 0x10000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 52, 73);
+            return jjStartNfaWithStates_0(5, 52, 72);
          else if ((active0 & 0x80000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 55, 73);
+            return jjStartNfaWithStates_0(5, 55, 72);
          else if ((active0 & 0x400000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 58, 73);
+            return jjStartNfaWithStates_0(5, 58, 72);
          else if ((active0 & 0x2000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 61, 73);
+            return jjStartNfaWithStates_0(5, 61, 72);
          else if ((active1 & 0x200L) != 0L)
-            return jjStartNfaWithStates_0(5, 73, 73);
+            return jjStartNfaWithStates_0(5, 73, 72);
          else if ((active1 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(5, 78, 73);
-         else if ((active2 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 171, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0x8400000000000L, active1, 0x20000L, active2, 0x8000100000080000L, active3, 0L);
+            return jjStartNfaWithStates_0(5, 78, 72);
+         else if ((active2 & 0x400000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 174, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0x8400000000000L, active1, 0x20000L, active2, 0x800000400000L, active3, 0x4L);
       case 70:
-      case 102:
          return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x40000L, active2, 0L, active3, 0L);
       case 71:
-      case 103:
-         if ((active2 & 0x800000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 175, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x1L, active3, 0L);
+         if ((active2 & 0x4000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 178, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0L);
       case 72:
-      case 104:
-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0xc0000000000000L, active2, 0L, active3, 0L);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x180000000000000L, active2, 0L, active3, 0L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa6_0(active0, 0x1000000L, active1, 0x20000000002140L, active2, 0x200000400028L, active3, 0L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x1000000L, active1, 0x8040000000002140L, active2, 0x1000002000140L, active3, 0L);
       case 76:
-      case 108:
          if ((active1 & 0x80L) != 0L)
-            return jjStartNfaWithStates_0(5, 71, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0x4000000000000L, active1, 0x800000000004L, active2, 0x1004000000002L, active3, 0L);
+            return jjStartNfaWithStates_0(5, 71, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0x4000000000000L, active1, 0x2000000000004L, active2, 0x20000000014L, active3, 0L);
       case 77:
-      case 109:
          return jjMoveStringLiteralDfa6_0(active0, 0x22000000000000L, active1, 0x800L, active2, 0L, active3, 0L);
       case 78:
-      case 110:
-         if ((active2 & 0x1000000L) != 0L)
+         if ((active2 & 0x8000000L) != 0L)
          {
-            jjmatchedKind = 152;
+            jjmatchedKind = 155;
             jjmatchedPos = 5;
          }
-         return jjMoveStringLiteralDfa6_0(active0, 0x60000000000L, active1, 0x10000000000L, active2, 0x42002000110L, active3, 0x40L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x60000000000L, active1, 0x10000000000L, active2, 0x210010000880L, active3, 0x200L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa6_0(active0, 0x8000L, active1, 0L, active2, 0x8000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x8000L, active1, 0L, active2, 0x40000000000L, active3, 0L);
       case 80:
-      case 112:
-         if ((active2 & 0x80000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 159, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x2000000100000L, active3, 0L);
+         if ((active2 & 0x400000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 162, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000000000L, active2, 0x10000000800000L, active3, 0L);
       case 82:
-      case 114:
          if ((active0 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 43, 73);
+            return jjStartNfaWithStates_0(5, 43, 72);
          else if ((active1 & 0x800000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 99, 73);
-         else if ((active1 & 0x10000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 116, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0x1000000000L, active1, 0x400000000L, active2, 0x8000000000600L, active3, 0L);
+            return jjStartNfaWithStates_0(5, 99, 72);
+         else if ((active1 & 0x20000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 117, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0x1000000000L, active1, 0x400000000L, active2, 0x40000000003000L, active3, 0L);
       case 83:
-      case 115:
-         return jjMoveStringLiteralDfa6_0(active0, 0x1040000040000000L, active1, 0L, active2, 0x4000080L, active3, 0L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x1040000040000000L, active1, 0L, active2, 0x20000400L, active3, 0L);
       case 84:
-      case 116:
          if ((active0 & 0x400000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 34, 73);
-         else if ((active1 & 0x100000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 120, 73);
-         else if ((active3 & 0x1L) != 0L)
-            return jjStartNfaWithStates_0(5, 192, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0xc000000000000000L, active1, 0x200000L, active2, 0x40000000800004L, active3, 0L);
+            return jjStartNfaWithStates_0(5, 34, 72);
+         else if ((active1 & 0x200000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 121, 72);
+         else if ((active3 & 0x8L) != 0L)
+            return jjStartNfaWithStates_0(5, 195, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0xc000000000000000L, active1, 0x200000L, active2, 0x200000004000020L, active3, 0L);
       case 86:
-      case 118:
          return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x80000L, active2, 0L, active3, 0L);
       case 89:
-      case 121:
          if ((active1 & 0x1000000000000L) != 0L)
-            return jjStartNfaWithStates_0(5, 112, 73);
-         else if ((active3 & 0x20L) != 0L)
-            return jjStartNfaWithStates_0(5, 197, 73);
-         return jjMoveStringLiteralDfa6_0(active0, 0x1c0000L, active1, 0L, active2, 0x400000000L, active3, 0L);
+            return jjStartNfaWithStates_0(5, 112, 72);
+         else if ((active3 & 0x100L) != 0L)
+            return jjStartNfaWithStates_0(5, 200, 72);
+         return jjMoveStringLiteralDfa6_0(active0, 0x1c0000L, active1, 0L, active2, 0x2000000000L, active3, 0L);
+      case 95:
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x1L);
+      case 108:
+         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x8000000000000L, active3, 0L);
       default :
          break;
    }
@@ -1277,102 +1157,87 @@
    }
    switch(curChar)
    {
-      case 95:
-         return jjMoveStringLiteralDfa7_0(active0, 0x10000000001c0000L, active1, 0L, active2, 0x100000900000L, active3, 0L);
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa7_0(active0, 0x1000000000L, active1, 0xc00100000c0004L, active2, 0x48000000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x1000000000L, active1, 0x1800100000c0004L, active2, 0x240000000000000L, active3, 0L);
       case 67:
-      case 99:
-         if ((active1 & 0x20000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 117, 73);
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x100000040400000L, active3, 0L);
+         if ((active1 & 0x40000000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 118, 72);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x800000202000000L, active3, 0L);
       case 68:
-      case 100:
-         if ((active2 & 0x8000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 191, 73);
+         if ((active3 & 0x4L) != 0L)
+            return jjStartNfaWithStates_0(6, 194, 72);
          break;
       case 69:
-      case 101:
          if ((active1 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(6, 85, 73);
-         else if ((active1 & 0x800000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 111, 73);
-         else if ((active2 & 0x1L) != 0L)
-            return jjStartNfaWithStates_0(6, 128, 73);
-         else if ((active2 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(6, 149, 73);
-         else if ((active2 & 0x4000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 154, 73);
-         else if ((active2 & 0x2000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 177, 73);
-         return jjMoveStringLiteralDfa7_0(active0, 0x2000040000000L, active1, 0x1400000800L, active2, 0x2L, active3, 0L);
+            return jjStartNfaWithStates_0(6, 85, 72);
+         else if ((active1 & 0x2000000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 113, 72);
+         else if ((active2 & 0x8L) != 0L)
+            return jjStartNfaWithStates_0(6, 131, 72);
+         else if ((active2 & 0x1000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 152, 72);
+         else if ((active2 & 0x20000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 157, 72);
+         else if ((active2 & 0x10000000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 180, 72);
+         return jjMoveStringLiteralDfa7_0(active0, 0x2000040000000L, active1, 0x1400000800L, active2, 0x10L, active3, 0L);
       case 71:
-      case 103:
-         if ((active3 & 0x40L) != 0L)
-            return jjStartNfaWithStates_0(6, 198, 73);
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x40000000000L, active3, 0L);
+         if ((active3 & 0x200L) != 0L)
+            return jjStartNfaWithStates_0(6, 201, 72);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x200000000000L, active3, 0L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa7_0(active0, 0xc060000000000000L, active1, 0L, active2, 0x2000084L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0xc060000000000000L, active1, 0L, active2, 0x10000420L, active3, 0L);
       case 76:
-      case 108:
          if ((active0 & 0x1000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 48, 73);
+            return jjStartNfaWithStates_0(6, 48, 72);
          else if ((active1 & 0x20000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 105, 73);
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x4000000000L, active3, 0L);
+            return jjStartNfaWithStates_0(6, 105, 72);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x20000000000L, active3, 0L);
       case 77:
-      case 109:
          return jjMoveStringLiteralDfa7_0(active0, 0x8000L, active1, 0x200000000000L, active2, 0L, active3, 0L);
       case 78:
-      case 110:
          if ((active0 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(6, 23, 73);
+            return jjStartNfaWithStates_0(6, 23, 72);
          else if ((active0 & 0x1000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 24, 73);
-         return jjMoveStringLiteralDfa7_0(active0, 0x800000000L, active1, 0x100L, active2, 0x208000080008L, active3, 0L);
+            return jjStartNfaWithStates_0(6, 24, 72);
+         return jjMoveStringLiteralDfa7_0(active0, 0x800000000L, active1, 0x100L, active2, 0x1040000400040L, active3, 0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x40L, active2, 0x1000000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x40L, active2, 0x4L, active3, 0L);
       case 80:
-      case 112:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x2000000400000000L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0x1L);
       case 82:
-      case 114:
          if ((active0 & 0x8000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 51, 73);
+            return jjStartNfaWithStates_0(6, 51, 72);
          else if ((active1 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(6, 81, 73);
-         else if ((active3 & 0x10L) != 0L)
+            return jjStartNfaWithStates_0(6, 81, 72);
+         else if ((active3 & 0x80L) != 0L)
          {
-            jjmatchedKind = 196;
+            jjmatchedKind = 199;
             jjmatchedPos = 6;
          }
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800000000000L, active2, 0L, active3, 0x40L);
       case 84:
-      case 116:
          if ((active0 & 0x200000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 33, 73);
+            return jjStartNfaWithStates_0(6, 33, 72);
          else if ((active0 & 0x4000000000000L) != 0L)
-            return jjStartNfaWithStates_0(6, 50, 73);
-         else if ((active2 & 0x100L) != 0L)
-            return jjStartNfaWithStates_0(6, 136, 73);
-         return jjMoveStringLiteralDfa7_0(active0, 0x60020004000L, active1, 0x2000L, active2, 0x2000000010L, active3, 0L);
+            return jjStartNfaWithStates_0(6, 50, 72);
+         else if ((active2 & 0x800L) != 0L)
+            return jjStartNfaWithStates_0(6, 139, 72);
+         return jjMoveStringLiteralDfa7_0(active0, 0x60020004000L, active1, 0x2000L, active2, 0x10000000080L, active3, 0L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x800L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x4000L, active3, 0L);
       case 86:
-      case 118:
-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x220L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x1100L, active3, 0L);
       case 89:
-      case 121:
-         if ((active2 & 0x400L) != 0L)
-            return jjStartNfaWithStates_0(6, 138, 73);
+         if ((active2 & 0x2000L) != 0L)
+            return jjStartNfaWithStates_0(6, 141, 72);
          break;
       case 90:
-      case 122:
-         return jjMoveStringLiteralDfa7_0(active0, 0x400000000000L, active1, 0L, active2, 0L, active3, 0L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x400000000000L, active1, 0x8000000000000000L, active2, 0L, active3, 0L);
+      case 95:
+         return jjMoveStringLiteralDfa7_0(active0, 0x10000000001c0000L, active1, 0L, active2, 0x800004800000L, active3, 0L);
+      case 111:
+         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x8000000000000L, active3, 0L);
       default :
          break;
    }
@@ -1390,99 +1255,88 @@
    switch(curChar)
    {
       case 50:
-         if ((active3 & 0x8L) != 0L)
-            return jjStartNfaWithStates_0(7, 195, 14);
+         if ((active3 & 0x40L) != 0L)
+            return jjStartNfaWithStates_0(7, 198, 14);
          break;
-      case 95:
-         return jjMoveStringLiteralDfa8_0(active0, 0x60000000000L, active1, 0L, active2, 0L, active3, 0L);
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x2000000000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x8000000000000000L, active2, 0L, active3, 0x1L);
       case 67:
-      case 99:
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40000L, active2, 0x880000L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40000L, active2, 0x4400000L, active3, 0L);
       case 68:
-      case 100:
          return jjMoveStringLiteralDfa8_0(active0, 0x40000L, active1, 0L, active2, 0L, active3, 0L);
       case 69:
-      case 101:
          if ((active1 & 0x2000L) != 0L)
-            return jjStartNfaWithStates_0(7, 77, 73);
-         else if ((active2 & 0x20L) != 0L)
-            return jjStartNfaWithStates_0(7, 133, 73);
-         else if ((active2 & 0x200L) != 0L)
-            return jjStartNfaWithStates_0(7, 137, 73);
-         else if ((active2 & 0x400000000L) != 0L)
-            return jjStopAtPos(7, 162);
-         return jjMoveStringLiteralDfa8_0(active0, 0x20000000L, active1, 0x200000000000L, active2, 0x18L, active3, 0L);
+            return jjStartNfaWithStates_0(7, 77, 72);
+         else if ((active2 & 0x100L) != 0L)
+            return jjStartNfaWithStates_0(7, 136, 72);
+         else if ((active2 & 0x1000L) != 0L)
+            return jjStartNfaWithStates_0(7, 140, 72);
+         else if ((active2 & 0x2000000000L) != 0L)
+            return jjStopAtPos(7, 165);
+         return jjMoveStringLiteralDfa8_0(active0, 0x20000000L, active1, 0xa00000000000L, active2, 0xc0L, active3, 0L);
       case 70:
-      case 102:
          return jjMoveStringLiteralDfa8_0(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0L);
       case 71:
-      case 103:
          if ((active1 & 0x4L) != 0L)
-            return jjStartNfaWithStates_0(7, 66, 73);
+            return jjStartNfaWithStates_0(7, 66, 72);
          else if ((active1 & 0x100L) != 0L)
-            return jjStartNfaWithStates_0(7, 72, 73);
+            return jjStartNfaWithStates_0(7, 72, 72);
          break;
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa8_0(active0, 0x1000104000L, active1, 0L, active2, 0x102000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0x1000104000L, active1, 0L, active2, 0x810000000000L, active3, 0L);
       case 75:
-      case 107:
-         if ((active2 & 0x40000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 158, 73);
+         if ((active2 & 0x200000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 161, 72);
          break;
       case 76:
-      case 108:
          if ((active1 & 0x80000L) != 0L)
-            return jjStartNfaWithStates_0(7, 83, 73);
+            return jjStartNfaWithStates_0(7, 83, 72);
          else if ((active1 & 0x1000000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 100, 73);
+            return jjStartNfaWithStates_0(7, 100, 72);
          else if ((active1 & 0x10000000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 104, 73);
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x100002L, active3, 0L);
+            return jjStartNfaWithStates_0(7, 104, 72);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x800010L, active3, 0L);
       case 77:
-      case 109:
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x40000000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x200000000000000L, active3, 0L);
       case 78:
-      case 110:
          if ((active1 & 0x40L) != 0L)
-            return jjStartNfaWithStates_0(7, 70, 73);
-         return jjMoveStringLiteralDfa8_0(active0, 0x22000000000000L, active1, 0x800L, active2, 0x2000000L, active3, 0L);
+            return jjStartNfaWithStates_0(7, 70, 72);
+         return jjMoveStringLiteralDfa8_0(active0, 0x22000000000000L, active1, 0x800L, active2, 0x10000000L, active3, 0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa8_0(active0, 0xc040400000008000L, active1, 0L, active2, 0x1000000000084L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0xc040400000008000L, active1, 0L, active2, 0x420L, active3, 0L);
       case 80:
-      case 112:
          return jjMoveStringLiteralDfa8_0(active0, 0x1000000000000000L, active1, 0L, active2, 0L, active3, 0L);
       case 82:
-      case 114:
-         if ((active1 & 0x80000000000000L) != 0L)
+         if ((active1 & 0x100000000000000L) != 0L)
          {
-            jjmatchedKind = 119;
+            jjmatchedKind = 120;
             jjmatchedPos = 7;
          }
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40000000000000L, active2, 0x8000000000800L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x80000000000000L, active2, 0x40000000004000L, active3, 0L);
       case 83:
-      case 115:
          if ((active1 & 0x400000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 98, 73);
-         else if ((active2 & 0x40000000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 170, 73);
+            return jjStartNfaWithStates_0(7, 98, 72);
+         else if ((active2 & 0x200000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 173, 72);
          break;
       case 84:
-      case 116:
          if ((active0 & 0x40000000L) != 0L)
             return jjStopAtPos(7, 30);
          else if ((active0 & 0x800000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 35, 73);
-         else if ((active2 & 0x200000000000L) != 0L)
-            return jjStartNfaWithStates_0(7, 173, 73);
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x100008000400000L, active3, 0L);
+            return jjStartNfaWithStates_0(7, 35, 72);
+         else if ((active2 & 0x1000000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 176, 72);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x800040002000000L, active3, 0L);
+      case 87:
+         if ((active2 & 0x4L) != 0L)
+            return jjStartNfaWithStates_0(7, 130, 72);
+         break;
       case 89:
-      case 121:
-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x4000000000L, active3, 0L);
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x20000000000L, active3, 0L);
+      case 95:
+         return jjMoveStringLiteralDfa8_0(active0, 0x60000000000L, active1, 0L, active2, 0L, active3, 0L);
+      case 111:
+         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x8000000000000L, active3, 0L);
       default :
          break;
    }
@@ -1494,284 +1348,241 @@
       return jjStartNfa_0(6, old0, old1, old2, old3);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(7, active0, active1, active2, 0L);
+      jjStopStringLiteralDfa_0(7, active0, active1, active2, active3);
       return 8;
    }
    switch(curChar)
    {
       case 50:
-         if ((active1 & 0x40000000000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 118, 14);
+         if ((active1 & 0x80000000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 119, 14);
          break;
-      case 95:
-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x4000400002L);
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa9_0(active0, 0x1000000000000000L, active1, 0L, active2, 0x2000800000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x1000000000000000L, active1, 0L, active2, 0x10004000000L, active3, 0L);
       case 67:
-      case 99:
          if ((active0 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(8, 14, 73);
+            return jjStartNfaWithStates_0(8, 14, 72);
          break;
       case 68:
-      case 100:
-         if ((active2 & 0x8L) != 0L)
-            return jjStartNfaWithStates_0(8, 131, 73);
+         if ((active2 & 0x40L) != 0L)
+            return jjStartNfaWithStates_0(8, 134, 72);
          break;
       case 69:
-      case 101:
          if ((active1 & 0x40000L) != 0L)
-            return jjStartNfaWithStates_0(8, 82, 73);
-         else if ((active2 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(8, 139, 73);
-         else if ((active2 & 0x80000L) != 0L)
-            return jjStartNfaWithStates_0(8, 147, 73);
+            return jjStartNfaWithStates_0(8, 82, 72);
+         else if ((active2 & 0x4000L) != 0L)
+            return jjStartNfaWithStates_0(8, 142, 72);
+         else if ((active2 & 0x400000L) != 0L)
+            return jjStartNfaWithStates_0(8, 150, 72);
          break;
       case 71:
-      case 103:
-         if ((active2 & 0x2000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 153, 73);
-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x10L);
+         if ((active2 & 0x10000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 156, 72);
+         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x80L, active3, 0L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa9_0(active0, 0x20000000000000L, active1, 0L, active2, 0x100008000100000L);
-      case 75:
-      case 107:
-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x1000000000000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x20000000000000L, active1, 0L, active2, 0x800040000800000L, active3, 0L);
       case 76:
-      case 108:
-         return jjMoveStringLiteralDfa9_0(active0, 0x80000L, active1, 0L, active2, 0L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0L);
       case 78:
-      case 110:
          if ((active0 & 0x40000000000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 54, 73);
+            return jjStartNfaWithStates_0(8, 54, 72);
          else if ((active0 & 0x4000000000000000L) != 0L)
          {
             jjmatchedKind = 62;
             jjmatchedPos = 8;
          }
-         else if ((active2 & 0x4L) != 0L)
-            return jjStartNfaWithStates_0(8, 130, 73);
-         else if ((active2 & 0x80L) != 0L)
-            return jjStartNfaWithStates_0(8, 135, 73);
-         return jjMoveStringLiteralDfa9_0(active0, 0x8000401000100000L, active1, 0L, active2, 0x100000000000L);
+         else if ((active2 & 0x20L) != 0L)
+            return jjStartNfaWithStates_0(8, 133, 72);
+         else if ((active2 & 0x400L) != 0L)
+            return jjStartNfaWithStates_0(8, 138, 72);
+         return jjMoveStringLiteralDfa9_0(active0, 0x8000401000100000L, active1, 0L, active2, 0x800000000000L, active3, 0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa9_0(active0, 0x20000040000L, active1, 0L, active2, 0L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x20000040000L, active1, 0L, active2, 0L, active3, 0L);
       case 80:
-      case 112:
-         if ((active2 & 0x40000000000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 182, 73);
+         if ((active2 & 0x200000000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 185, 72);
          break;
       case 82:
-      case 114:
          if ((active0 & 0x20000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 29, 73);
+            return jjStartNfaWithStates_0(8, 29, 72);
          break;
       case 83:
-      case 115:
          if ((active1 & 0x200000000000L) != 0L)
             return jjStartNfaWithStates_0(8, 109, 14);
-         break;
+         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x800000000000L, active2, 0L, active3, 0L);
       case 84:
-      case 116:
          if ((active0 & 0x2000000000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 49, 73);
+            return jjStartNfaWithStates_0(8, 49, 72);
          else if ((active1 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(8, 75, 73);
-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x2000000000000000L);
+            return jjStartNfaWithStates_0(8, 75, 72);
+         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x8000000000000000L, active2, 0L, active3, 0x1L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa9_0(active0, 0x40000008000L, active1, 0L, active2, 0L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x40000008000L, active1, 0L, active2, 0L, active3, 0L);
       case 89:
-      case 121:
-         if ((active2 & 0x8000000000000L) != 0L)
-            return jjStartNfaWithStates_0(8, 179, 73);
+         if ((active2 & 0x40000000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 182, 72);
          break;
+      case 95:
+         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x20002000010L, active3, 0L);
+      case 107:
+         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x8000000000000L, active3, 0L);
       default :
          break;
    }
-   return jjStartNfa_0(7, active0, active1, active2, 0L);
+   return jjStartNfa_0(7, active0, active1, active2, active3);
 }
-private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1, long old2, long active2)
+private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)
 {
-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
-      return jjStartNfa_0(7, old0, old1, old2, 0L);
+   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)
+      return jjStartNfa_0(7, old0, old1, old2, old3);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(8, active0, 0L, active2, 0L);
+      jjStopStringLiteralDfa_0(8, active0, active1, active2, active3);
       return 9;
    }
    switch(curChar)
    {
-      case 95:
-         return jjMoveStringLiteralDfa10_0(active0, 0x8000000000000000L, active2, 0L);
       case 67:
-      case 99:
-         return jjMoveStringLiteralDfa10_0(active0, 0L, active2, 0x800000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x4000000L, active3, 0L);
       case 69:
-      case 101:
          if ((active0 & 0x400000000000L) != 0L)
-            return jjStartNfaWithStates_0(9, 46, 73);
-         return jjMoveStringLiteralDfa10_0(active0, 0L, active2, 0x12L);
+            return jjStartNfaWithStates_0(9, 46, 72);
+         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x90L, active3, 0L);
       case 70:
-      case 102:
          if ((active0 & 0x20000000000L) != 0L)
             return jjStartNfaWithStates_0(9, 41, 14);
          break;
       case 72:
-      case 104:
-         if ((active2 & 0x2000000000000000L) != 0L)
-            return jjStartNfaWithStates_0(9, 189, 14);
+         if ((active3 & 0x1L) != 0L)
+            return jjStartNfaWithStates_0(9, 192, 14);
          break;
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa10_0(active0, 0L, active2, 0x1000000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x8000000000000000L, active2, 0x8000000000000L, active3, 0L);
       case 75:
-      case 107:
-         return jjMoveStringLiteralDfa10_0(active0, 0L, active2, 0x100000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x800000L, active3, 0L);
       case 76:
-      case 108:
-         if ((active2 & 0x2000000000L) != 0L)
-            return jjStartNfaWithStates_0(9, 165, 73);
+         if ((active2 & 0x10000000000L) != 0L)
+            return jjStartNfaWithStates_0(9, 168, 72);
          break;
       case 77:
-      case 109:
-         return jjMoveStringLiteralDfa10_0(active0, 0L, active2, 0x8000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x40000000000L, active3, 0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa10_0(active0, 0x80000L, active2, 0x100000000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x80000L, active1, 0L, active2, 0x800000000000000L, active3, 0L);
       case 82:
-      case 114:
-         return jjMoveStringLiteralDfa10_0(active0, 0L, active2, 0x4000400000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x20002000000L, active3, 0L);
       case 83:
-      case 115:
-         return jjMoveStringLiteralDfa10_0(active0, 0x20040000008000L, active2, 0L);
+         if ((active1 & 0x800000000000L) != 0L)
+            return jjStartNfaWithStates_0(9, 111, 72);
+         return jjMoveStringLiteralDfa10_0(active0, 0x20040000008000L, active1, 0L, active2, 0L, active3, 0L);
       case 84:
-      case 116:
          if ((active0 & 0x1000000000L) != 0L)
-            return jjStartNfaWithStates_0(9, 36, 73);
-         return jjMoveStringLiteralDfa10_0(active0, 0x1000000000100000L, active2, 0x100000000000L);
+            return jjStartNfaWithStates_0(9, 36, 72);
+         return jjMoveStringLiteralDfa10_0(active0, 0x1000000000100000L, active1, 0L, active2, 0x800000000000L, active3, 0L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa10_0(active0, 0x40000L, active2, 0L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x40000L, active1, 0L, active2, 0L, active3, 0L);
+      case 95:
+         return jjMoveStringLiteralDfa10_0(active0, 0x8000000000000000L, active1, 0L, active2, 0L, active3, 0L);
       default :
          break;
    }
-   return jjStartNfa_0(8, active0, 0L, active2, 0L);
+   return jjStartNfa_0(8, active0, active1, active2, active3);
 }
-private int jjMoveStringLiteralDfa10_0(long old0, long active0, long old2, long active2)
+private int jjMoveStringLiteralDfa10_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)
 {
-   if (((active0 &= old0) | (active2 &= old2)) == 0L)
-      return jjStartNfa_0(8, old0, 0L, old2, 0L);
+   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)
+      return jjStartNfa_0(8, old0, old1, old2, old3);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(9, active0, 0L, active2, 0L);
+      jjStopStringLiteralDfa_0(9, active0, active1, active2, 0L);
       return 10;
    }
    switch(curChar)
    {
-      case 95:
-         return jjMoveStringLiteralDfa11_0(active0, 0x8000L, active2, 0L);
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa11_0(active0, 0x80000L, active2, 0L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x80000L, active1, 0L, active2, 0L);
       case 66:
-      case 98:
-         return jjMoveStringLiteralDfa11_0(active0, 0x40000L, active2, 0L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x40000L, active1, 0L, active2, 0L);
       case 69:
-      case 101:
-         if ((active2 & 0x100000L) != 0L)
-            return jjStartNfaWithStates_0(10, 148, 14);
-         return jjMoveStringLiteralDfa11_0(active0, 0x40000100000L, active2, 0x10c000400000L);
+         if ((active2 & 0x800000L) != 0L)
+            return jjStartNfaWithStates_0(10, 151, 14);
+         return jjMoveStringLiteralDfa11_0(active0, 0x40000100000L, active1, 0L, active2, 0x860002000000L);
       case 72:
-      case 104:
          if ((active0 & 0x1000000000000000L) != 0L)
             return jjStartNfaWithStates_0(10, 60, 14);
-         return jjMoveStringLiteralDfa11_0(active0, 0L, active2, 0x800000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0x4000000L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa11_0(active0, 0x8000000000000000L, active2, 0L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x8000000000000000L, active1, 0L, active2, 0L);
       case 78:
-      case 110:
-         if ((active2 & 0x100000000000000L) != 0L)
-            return jjStartNfaWithStates_0(10, 184, 73);
-         return jjMoveStringLiteralDfa11_0(active0, 0L, active2, 0x2L);
+         if ((active2 & 0x800000000000000L) != 0L)
+            return jjStartNfaWithStates_0(10, 187, 72);
+         return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0x10L);
+      case 79:
+         return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0x8000000000000000L, active2, 0L);
       case 82:
-      case 114:
-         if ((active2 & 0x10L) != 0L)
-            return jjStartNfaWithStates_0(10, 132, 14);
+         if ((active2 & 0x80L) != 0L)
+            return jjStartNfaWithStates_0(10, 135, 14);
          break;
       case 83:
-      case 115:
-         return jjMoveStringLiteralDfa11_0(active0, 0L, active2, 0x1000000000000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0x8000000000000L);
       case 84:
-      case 116:
-         return jjMoveStringLiteralDfa11_0(active0, 0x20000000000000L, active2, 0L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x20000000000000L, active1, 0L, active2, 0L);
+      case 95:
+         return jjMoveStringLiteralDfa11_0(active0, 0x8000L, active1, 0L, active2, 0L);
       default :
          break;
    }
-   return jjStartNfa_0(9, active0, 0L, active2, 0L);
+   return jjStartNfa_0(9, active0, active1, active2, 0L);
 }
-private int jjMoveStringLiteralDfa11_0(long old0, long active0, long old2, long active2)
+private int jjMoveStringLiteralDfa11_0(long old0, long active0, long old1, long active1, long old2, long active2)
 {
-   if (((active0 &= old0) | (active2 &= old2)) == 0L)
-      return jjStartNfa_0(9, old0, 0L, old2, 0L);
+   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
+      return jjStartNfa_0(9, old0, old1, old2, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(10, active0, 0L, active2, 0L);
+      jjStopStringLiteralDfa_0(10, active0, active1, active2, 0L);
       return 11;
    }
    switch(curChar)
    {
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa12_0(active0, 0L, active2, 0x2L);
+         return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0x10L);
       case 69:
-      case 101:
-         if ((active2 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(11, 151, 14);
-         return jjMoveStringLiteralDfa12_0(active0, 0L, active2, 0x1000000000000L);
+         if ((active2 & 0x4000000L) != 0L)
+            return jjStartNfaWithStates_0(11, 154, 14);
+         return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0x8000000000000L);
       case 70:
-      case 102:
-         return jjMoveStringLiteralDfa12_0(active0, 0L, active2, 0x400000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0x2000000L);
       case 71:
-      case 103:
-         return jjMoveStringLiteralDfa12_0(active0, 0x100000L, active2, 0x100000000000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x100000L, active1, 0L, active2, 0x800000000000L);
       case 73:
-      case 105:
-         return jjMoveStringLiteralDfa12_0(active0, 0x20000000000000L, active2, 0L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x20000000000000L, active1, 0L, active2, 0L);
       case 76:
-      case 108:
-         return jjMoveStringLiteralDfa12_0(active0, 0x40000L, active2, 0L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x40000L, active1, 0L, active2, 0L);
       case 78:
-      case 110:
-         return jjMoveStringLiteralDfa12_0(active0, 0x8000000000000000L, active2, 0L);
+         if ((active1 & 0x8000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(11, 127, 72);
+         return jjMoveStringLiteralDfa12_0(active0, 0x8000000000000000L, active1, 0L, active2, 0L);
       case 82:
-      case 114:
          if ((active0 & 0x40000000000L) != 0L)
             return jjStartNfaWithStates_0(11, 42, 14);
          break;
       case 84:
-      case 116:
          if ((active0 & 0x80000L) != 0L)
             return jjStartNfaWithStates_0(11, 19, 14);
-         return jjMoveStringLiteralDfa12_0(active0, 0x8000L, active2, 0L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x8000L, active1, 0L, active2, 0L);
       case 85:
-      case 117:
-         return jjMoveStringLiteralDfa12_0(active0, 0L, active2, 0x4000000000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0x20000000000L);
       case 90:
-      case 122:
-         return jjMoveStringLiteralDfa12_0(active0, 0L, active2, 0x8000000000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0x40000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(10, active0, 0L, active2, 0L);
+   return jjStartNfa_0(10, active0, active1, active2, 0L);
 }
-private int jjMoveStringLiteralDfa12_0(long old0, long active0, long old2, long active2)
+private int jjMoveStringLiteralDfa12_0(long old0, long active0, long old1, long active1, long old2, long active2)
 {
-   if (((active0 &= old0) | (active2 &= old2)) == 0L)
-      return jjStartNfa_0(10, old0, 0L, old2, 0L);
+   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
+      return jjStartNfa_0(10, old0, old1, old2, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_0(11, active0, 0L, active2, 0L);
@@ -1780,34 +1591,26 @@
    switch(curChar)
    {
       case 66:
-      case 98:
-         return jjMoveStringLiteralDfa13_0(active0, 0L, active2, 0x2L);
+         return jjMoveStringLiteralDfa13_0(active0, 0L, active2, 0x10L);
       case 67:
-      case 99:
          if ((active0 & 0x20000000000000L) != 0L)
-            return jjStartNfaWithStates_0(12, 53, 73);
+            return jjStartNfaWithStates_0(12, 53, 72);
          break;
       case 69:
-      case 101:
          if ((active0 & 0x40000L) != 0L)
             return jjStartNfaWithStates_0(12, 18, 14);
-         return jjMoveStringLiteralDfa13_0(active0, 0x100000L, active2, 0x100000400000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0x100000L, active2, 0x800002000000L);
       case 73:
-      case 105:
          return jjMoveStringLiteralDfa13_0(active0, 0x8000000000000000L, active2, 0L);
       case 79:
-      case 111:
-         return jjMoveStringLiteralDfa13_0(active0, 0L, active2, 0x8000000000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0L, active2, 0x40000000000L);
       case 82:
-      case 114:
          return jjMoveStringLiteralDfa13_0(active0, 0x8000L, active2, 0L);
       case 83:
-      case 115:
-         return jjMoveStringLiteralDfa13_0(active0, 0L, active2, 0x4000000000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0L, active2, 0x20000000000L);
       case 84:
-      case 116:
-         if ((active2 & 0x1000000000000L) != 0L)
-            return jjStartNfaWithStates_0(12, 176, 73);
+         if ((active2 & 0x8000000000000L) != 0L)
+            return jjStartNfaWithStates_0(12, 179, 72);
          break;
       default :
          break;
@@ -1826,23 +1629,18 @@
    switch(curChar)
    {
       case 65:
-      case 97:
-         return jjMoveStringLiteralDfa14_0(active0, 0x8000L, active2, 0x4000000000L);
+         return jjMoveStringLiteralDfa14_0(active0, 0x8000L, active2, 0x20000000000L);
       case 76:
-      case 108:
-         return jjMoveStringLiteralDfa14_0(active0, 0L, active2, 0x2L);
+         return jjMoveStringLiteralDfa14_0(active0, 0L, active2, 0x10L);
       case 78:
-      case 110:
-         return jjMoveStringLiteralDfa14_0(active0, 0L, active2, 0x8000000000L);
+         return jjMoveStringLiteralDfa14_0(active0, 0L, active2, 0x40000000000L);
       case 82:
-      case 114:
          if ((active0 & 0x100000L) != 0L)
             return jjStartNfaWithStates_0(13, 20, 14);
-         else if ((active2 & 0x100000000000L) != 0L)
-            return jjStartNfaWithStates_0(13, 172, 14);
-         return jjMoveStringLiteralDfa14_0(active0, 0L, active2, 0x400000L);
+         else if ((active2 & 0x800000000000L) != 0L)
+            return jjStartNfaWithStates_0(13, 175, 14);
+         return jjMoveStringLiteralDfa14_0(active0, 0L, active2, 0x2000000L);
       case 84:
-      case 116:
          if ((active0 & 0x8000000000000000L) != 0L)
             return jjStartNfaWithStates_0(13, 63, 14);
          break;
@@ -1863,17 +1661,14 @@
    switch(curChar)
    {
       case 66:
-      case 98:
-         return jjMoveStringLiteralDfa15_0(active0, 0L, active2, 0x4000000000L);
+         return jjMoveStringLiteralDfa15_0(active0, 0L, active2, 0x20000000000L);
       case 69:
-      case 101:
-         if ((active2 & 0x2L) != 0L)
-            return jjStartNfaWithStates_0(14, 129, 14);
-         else if ((active2 & 0x8000000000L) != 0L)
-            return jjStartNfaWithStates_0(14, 167, 73);
-         return jjMoveStringLiteralDfa15_0(active0, 0L, active2, 0x400000L);
+         if ((active2 & 0x10L) != 0L)
+            return jjStartNfaWithStates_0(14, 132, 14);
+         else if ((active2 & 0x40000000000L) != 0L)
+            return jjStartNfaWithStates_0(14, 170, 72);
+         return jjMoveStringLiteralDfa15_0(active0, 0L, active2, 0x2000000L);
       case 78:
-      case 110:
          return jjMoveStringLiteralDfa15_0(active0, 0x8000L, active2, 0L);
       default :
          break;
@@ -1892,13 +1687,10 @@
    switch(curChar)
    {
       case 76:
-      case 108:
-         return jjMoveStringLiteralDfa16_0(active0, 0L, active2, 0x4000000000L);
+         return jjMoveStringLiteralDfa16_0(active0, 0L, active2, 0x20000000000L);
       case 78:
-      case 110:
-         return jjMoveStringLiteralDfa16_0(active0, 0L, active2, 0x400000L);
+         return jjMoveStringLiteralDfa16_0(active0, 0L, active2, 0x2000000L);
       case 83:
-      case 115:
          return jjMoveStringLiteralDfa16_0(active0, 0x8000L, active2, 0L);
       default :
          break;
@@ -1917,15 +1709,12 @@
    switch(curChar)
    {
       case 65:
-      case 97:
          return jjMoveStringLiteralDfa17_0(active0, 0x8000L, active2, 0L);
       case 67:
-      case 99:
-         return jjMoveStringLiteralDfa17_0(active0, 0L, active2, 0x400000L);
+         return jjMoveStringLiteralDfa17_0(active0, 0L, active2, 0x2000000L);
       case 69:
-      case 101:
-         if ((active2 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_0(16, 166, 14);
+         if ((active2 & 0x20000000000L) != 0L)
+            return jjStartNfaWithStates_0(16, 169, 14);
          break;
       default :
          break;
@@ -1944,11 +1733,9 @@
    switch(curChar)
    {
       case 67:
-      case 99:
          return jjMoveStringLiteralDfa18_0(active0, 0x8000L, active2, 0L);
       case 69:
-      case 101:
-         return jjMoveStringLiteralDfa18_0(active0, 0L, active2, 0x400000L);
+         return jjMoveStringLiteralDfa18_0(active0, 0L, active2, 0x2000000L);
       default :
          break;
    }
@@ -1966,12 +1753,10 @@
    switch(curChar)
    {
       case 83:
-      case 115:
-         if ((active2 & 0x400000L) != 0L)
-            return jjStartNfaWithStates_0(18, 150, 14);
+         if ((active2 & 0x2000000L) != 0L)
+            return jjStartNfaWithStates_0(18, 153, 14);
          break;
       case 84:
-      case 116:
          return jjMoveStringLiteralDfa19_0(active0, 0x8000L, active2, 0L);
       default :
          break;
@@ -1990,7 +1775,6 @@
    switch(curChar)
    {
       case 73:
-      case 105:
          return jjMoveStringLiteralDfa20_0(active0, 0x8000L);
       default :
          break;
@@ -2009,7 +1793,6 @@
    switch(curChar)
    {
       case 79:
-      case 111:
          return jjMoveStringLiteralDfa21_0(active0, 0x8000L);
       default :
          break;
@@ -2028,7 +1811,6 @@
    switch(curChar)
    {
       case 78:
-      case 110:
          if ((active0 & 0x8000L) != 0L)
             return jjStartNfaWithStates_0(21, 15, 14);
          break;
@@ -2070,28 +1852,28 @@
             switch(jjstateSet[--i])
             {
                case 73:
-               case 14:
-                  if ((0x3ff001800000000L & l) == 0L)
-                     break;
-                  if (kind > 238)
-                     kind = 238;
-                  jjCheckNAdd(14);
-                  break;
-               case 72:
                   if ((0xffffff7fffffffffL & l) != 0L)
                      jjCheckNAddTwoStates(43, 44);
                   else if (curChar == 39)
                   {
-                     if (kind > 242)
-                        kind = 242;
+                     if (kind > 245)
+                        kind = 245;
                      jjstateSet[jjnewStateCnt++] = 45;
                   }
                   break;
+               case 72:
+               case 14:
+                  if ((0x3ff001800000000L & l) == 0L)
+                     break;
+                  if (kind > 241)
+                     kind = 241;
+                  jjCheckNAdd(14);
+                  break;
                case 21:
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 241)
-                        kind = 241;
+                     if (kind > 244)
+                        kind = 244;
                      jjCheckNAddStates(0, 6);
                   }
                   else if (curChar == 46)
@@ -2100,8 +1882,8 @@
                case 5:
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 234)
-                        kind = 234;
+                     if (kind > 237)
+                        kind = 237;
                      jjCheckNAddStates(7, 13);
                   }
                   else if (curChar == 46)
@@ -2120,14 +1902,14 @@
                case 71:
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 234)
-                        kind = 234;
+                     if (kind > 237)
+                        kind = 237;
                      jjCheckNAdd(61);
                   }
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 234)
-                        kind = 234;
+                     if (kind > 237)
+                        kind = 237;
                      jjCheckNAddTwoStates(51, 52);
                   }
                   break;
@@ -2186,8 +1968,8 @@
                case 17:
                   if ((0x3ff001800000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjAddStates(23, 24);
                   break;
                case 18:
@@ -2197,22 +1979,22 @@
                case 20:
                   if ((0x3ff001800000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjstateSet[jjnewStateCnt++] = 20;
                   break;
                case 22:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(22);
                   break;
                case 23:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(23, 24);
                   break;
                case 24:
@@ -2222,15 +2004,15 @@
                case 25:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(25);
                   break;
                case 26:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(26, 27);
                   break;
                case 28:
@@ -2244,29 +2026,29 @@
                case 30:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(30);
                   break;
                case 31:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddStates(27, 29);
                   break;
                case 32:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(32);
                   break;
                case 33:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(33, 34);
                   break;
                case 34:
@@ -2276,15 +2058,15 @@
                case 35:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(35);
                   break;
                case 36:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddStates(30, 32);
                   break;
                case 37:
@@ -2294,8 +2076,8 @@
                case 38:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(38, 27);
                   break;
                case 39:
@@ -2305,15 +2087,15 @@
                case 40:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(40);
                   break;
                case 41:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(41, 27);
                   break;
                case 42:
@@ -2327,8 +2109,8 @@
                case 44:
                   if (curChar != 39)
                      break;
-                  if (kind > 242)
-                     kind = 242;
+                  if (kind > 245)
+                     kind = 245;
                   jjstateSet[jjnewStateCnt++] = 45;
                   break;
                case 45:
@@ -2348,8 +2130,8 @@
                      jjCheckNAddTwoStates(48, 49);
                   break;
                case 49:
-                  if (curChar == 34 && kind > 243)
-                     kind = 243;
+                  if (curChar == 34 && kind > 246)
+                     kind = 246;
                   break;
                case 50:
                   if (curChar == 46)
@@ -2358,8 +2140,8 @@
                case 51:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddTwoStates(51, 52);
                   break;
                case 53:
@@ -2373,29 +2155,29 @@
                case 55:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAdd(55);
                   break;
                case 56:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddStates(35, 37);
                   break;
                case 57:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAdd(57);
                   break;
                case 58:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddTwoStates(58, 59);
                   break;
                case 59:
@@ -2405,36 +2187,36 @@
                case 60:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAdd(60);
                   break;
                case 61:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAdd(61);
                   break;
                case 62:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddStates(7, 13);
                   break;
                case 63:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddTwoStates(63, 52);
                   break;
                case 64:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddStates(38, 40);
                   break;
                case 65:
@@ -2444,15 +2226,15 @@
                case 66:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddTwoStates(66, 52);
                   break;
                case 67:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAddTwoStates(67, 68);
                   break;
                case 68:
@@ -2462,15 +2244,15 @@
                case 69:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAdd(69);
                   break;
                case 70:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 234)
-                     kind = 234;
+                  if (kind > 237)
+                     kind = 237;
                   jjCheckNAdd(70);
                   break;
                default : break;
@@ -2485,37 +2267,37 @@
             switch(jjstateSet[--i])
             {
                case 73:
+               case 43:
+                  jjCheckNAddTwoStates(43, 44);
+                  break;
+               case 72:
                   if ((0x7fffffe87ffffffL & l) != 0L)
                   {
-                     if (kind > 238)
-                        kind = 238;
+                     if (kind > 241)
+                        kind = 241;
                      jjCheckNAdd(14);
                   }
                   if ((0x7fffffe07fffffeL & l) != 0L)
                   {
-                     if (kind > 238)
-                        kind = 238;
+                     if (kind > 241)
+                        kind = 241;
                      jjCheckNAddTwoStates(13, 14);
                   }
                   break;
-               case 72:
-               case 43:
-                  jjCheckNAddTwoStates(43, 44);
-                  break;
                case 21:
                case 16:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddStates(41, 43);
                   break;
                case 5:
                case 13:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 238)
-                     kind = 238;
+                  if (kind > 241)
+                     kind = 241;
                   jjCheckNAddTwoStates(13, 14);
                   break;
                case 1:
@@ -2531,29 +2313,29 @@
                case 14:
                   if ((0x7fffffe87ffffffL & l) == 0L)
                      break;
-                  if (kind > 238)
-                     kind = 238;
+                  if (kind > 241)
+                     kind = 241;
                   jjCheckNAdd(14);
                   break;
                case 17:
                   if ((0x7fffffe87ffffffL & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(17, 18);
                   break;
                case 19:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAddTwoStates(19, 20);
                   break;
                case 20:
                   if ((0x7fffffe87ffffffL & l) == 0L)
                      break;
-                  if (kind > 241)
-                     kind = 241;
+                  if (kind > 244)
+                     kind = 244;
                   jjCheckNAdd(20);
                   break;
                case 27:
@@ -2585,7 +2367,7 @@
          {
             switch(jjstateSet[--i])
             {
-               case 72:
+               case 73:
                case 43:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                      jjCheckNAddTwoStates(43, 44);
@@ -2649,32 +2431,80 @@
 
 /** Token literal values. */
 public static final String[] jjstrLiteralImages = {
-"", 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, 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, 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, "\72\75", 
-"\52", "\100", "\51", "\174\174", "\72", "\54", "\56", "\56\56", "\44", "\45", "\75", 
-"\76", "\76\75", "\50\53\51", "\74", "\74\75", "\55", "\74\76", "\41\75", "\50", 
-"\53", "\43", "\77", "\73", "\57", "\176", null, null, null, null, null, null, null, 
-null, null, null, };
+"", null, null, null, null, null, null, null, "\101", "\101\104\104", 
+"\101\114\124\105\122", "\101\122\122\101\131", "\101\123", "\101\125\124\110\111\104", 
+"\101\125\124\117\115\101\124\111\103", 
+"\101\125\124\117\116\117\115\117\125\123\137\124\122\101\116\123\101\103\124\111\117\116", "\102\105\107\111\116", "\102\106\111\114\105", 
+"\102\111\116\101\122\131\137\104\117\125\102\114\105", "\102\111\116\101\122\131\137\106\114\117\101\124", 
+"\102\111\116\101\122\131\137\111\116\124\105\107\105\122", "\102\114\117\102", "\102\117\104\131", "\102\117\117\114\105\101\116", 
+"\102\125\111\114\124\111\116", "\102\125\114\113", "\102\131", "\102\131\124\105", "\103\110\101\122", 
+"\103\110\101\122\101\103\124\105\122", "\45\103\110\101\122\123\105\124", "\103\114\117\102", "\103\114\117\123\105", 
+"\103\117\114\114\105\103\124", "\103\117\115\115\111\124", "\103\117\116\123\124\101\116\124", 
+"\103\117\116\123\124\122\101\111\116\124", "\103\117\125\116\124", "\103\122\105\101\124\105", "\103\122\117\123\123", 
+"\103\125\102\105", "\103\125\122\122\105\116\124\137\117\106", 
+"\103\125\122\122\105\116\124\137\125\123\105\122", "\103\125\122\123\117\122", "\104\101\124\105", "\104\101\131", 
+"\104\102\124\111\115\105\132\117\116\105", "\104\105\103", "\104\105\103\111\115\101\114", 
+"\104\105\103\122\105\115\105\116\124", "\104\105\106\101\125\114\124", "\104\105\106\111\116\105\122", 
+"\104\105\114\105\124\105", "\104\105\124\105\122\115\111\116\111\123\124\111\103", 
+"\104\111\115\105\116\123\111\117\116", "\104\117\125\102\114\105", "\105\114\123\111\106", "\105\115\120\124\131", 
+"\105\116\101\102\114\105", "\105\116\104", "\105\121\125\101\114\123\137\120\101\124\110", 
+"\105\123\103\101\120\105", "\105\130\103\105\120\124\111\117\116", 
+"\105\130\103\105\120\124\111\117\116\137\111\116\111\124", "\105\130\111\124", "\106\101\114\123\105", 
+"\106\111\120\123\106\114\101\107", "\106\111\122\123\124", "\106\114\117\101\124", "\106\125\114\114", 
+"\106\125\116\103\124\111\117\116", "\107\114\117\102\101\114", "\107\122\117\125\120\111\116\107", 
+"\111\107\116\117\122\105", "\111\116", "\111\116\103\122\105\115\105\116\124", "\111\116\104\105\130", 
+"\111\116\106\111\116\111\124\105", "\111\116\114\111\116\105", "\111\116\116\105\122", "\111\116\124", 
+"\111\116\124\105\107\105\122", "\111\116\124\105\122\106\101\103\105", "\111\116\124\105\122\126\101\114", 
+"\111\123", "\111\124\105\122\101\124\105", "\112\117\111\116", "\113\105\131", 
+"\113\105\105\120", "\114\101\123\124", "\114\105\106\124", "\114\111\113\105\62", 
+"\114\111\113\105\64", "\114\111\113\105\103", "\114\117\103\101\114", "\114\117\116\107", 
+"\114\117\117\120", "\115\101\111\116", "\115\105\101\123\125\122\105\123", 
+"\115\105\115\102\105\122", "\115\114\123\114\101\102\105\114", "\115\117\104\105\114", 
+"\115\117\116\124\110", "\116\101\116", "\116\101\124\111\117\116\101\114", 
+"\116\101\124\125\122\101\114", "\116\101\126", "\116\103\110\101\122", "\116\103\114\117\102", 
+"\116\105\127\137\116\101\115\105\123", "\47\116\117\47", "\116\117\103\117\115\120\122\105\123\123", 
+"\116\117\103\117\120\131", "\116\117\103\131\103\114\105", "\116\117\124", "\116\125\114\114", 
+"\116\125\114\114\123", "\116\125\115\102\105\122", "\116\125\115\105\122\111\103", 
+"\116\126\101\122\103\110\101\122\62", "\116\126\101\122\103\110\101\122", "\117\102\112\105\103\124", "\117\106", 
+"\117\116", "\117\116\114\131", "\117\120\105\116", "\117\122", 
+"\117\122\107\101\116\111\132\101\124\111\117\116", "\117\125\124", "\117\125\124\105\122", "\117\126\105\122\106\114\117\127", 
+"\120\101\103\113\101\107\105", "\120\101\122\101\114\114\105\114\137\105\116\101\102\114\105", 
+"\120\101\122\124\111\124\111\117\116", "\120\111\120\105\114\111\116\105\104", 
+"\120\114\123\137\111\116\124\105\107\105\122", "\120\117\123\111\124\111\126\105", "\120\122\101\107\115\101", 
+"\120\122\105\103\111\123\111\117\116", "\120\122\105\123\105\116\124", "\120\122\105\123\105\122\126\105", 
+"\120\122\111\115\101\122\131", "\120\122\117\103\105\104\125\122\105", "\122\101\111\123\105", 
+"\122\101\116\107\105", "\122\101\127", "\122\105\101\104", "\122\105\101\114", 
+"\122\105\103\117\122\104", "\122\105\106", "\122\105\106\105\122\105\116\103\105", 
+"\122\105\107\105\130\120\137\114\111\113\105", "\122\105\120\114\101\103\105", 
+"\122\105\123\124\122\111\103\124\137\122\105\106\105\122\105\116\103\105\123", "\122\105\123\125\114\124\137\103\101\103\110\105", 
+"\122\105\124\125\122\116", "\122\105\124\125\122\116\111\116\107", "\122\105\126\105\122\123\105", 
+"\122\111\107\110\124", "\122\116\104\123", "\122\116\120\123", "\122\117\114\114\102\101\103\113", 
+"\122\117\114\114\125\120", "\122\117\127\111\104", "\122\117\127\123", "\45\122\117\127\124\131\120\105", 
+"\122\125\114\105\123", "\123\105\103\117\116\104", "\123\105\121\125\105\116\124\111\101\114", 
+"\123\105\122\111\101\114\114\131\137\122\105\125\123\101\102\114\105", "\123\105\123\123\111\117\116\124\111\115\105\132\117\116\105", 
+"\123\105\124", "\123\105\124\123", "\123\111\102\114\111\116\107\123", 
+"\123\111\116\107\114\105", "\123\111\115\120\114\105\137\111\116\124\105\107\105\122", 
+"\123\115\101\114\114\111\116\124", "\123\117\115\105", "\123\124\122\111\116\107", 
+"\123\125\102\115\125\154\157\157\153\111\123\105\124", "\123\125\102\124\131\120\105", "\124\101\102\114\105", 
+"\124\105\115\120\117\122\101\122\131", "\124\110\105", "\124\111\115\105", "\124\111\115\105\123\124\101\115\120", 
+"\124\117", "\124\122\101\116\123\101\103\124\111\117\116", "\124\122\125\105", 
+"\124\122\125\123\124", "\124\131\120\105", "\45\124\131\120\105", 
+"\125\116\104\105\122\137\120\101\124\110", "\125\116\124\111\114", "\125\120\104\101\124\105\104", 
+"\125\120\123\105\122\124", "\125\122\117\127\111\104", "\125\123\111\116\107", 
+"\126\101\122\103\110\101\122\62", "\126\101\122\103\110\101\122", "\126\101\122\122\101\131", 
+"\126\101\122\131\111\116\107", "\127\111\124\110", "\127\110\111\114\105", "\127\116\104\123", 
+"\127\116\120\123", "\127\117\122\113", "\131\105\101\122", "\47\131\105\123\47", 
+"\132\117\116\105", "\72\75", "\52", "\100", "\51", "\174\174", "\72", "\54", "\56", "\56\56", 
+"\44", "\45", "\75", "\76", "\76\75", "\50\53\51", "\74", "\74\75", "\55", "\74\76", 
+"\41\75", "\50", "\53", "\43", "\77", "\73", "\57", "\176", null, null, null, null, null, 
+null, null, null, null, null, };
 
 /** Lexer state names. */
 public static final String[] lexStateNames = {
    "DEFAULT",
 };
 static final long[] jjtoToken = {
-   0xffffffffffffff01L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xe47ffffffffffL, 
+   0xffffffffffffff01L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0x723fffffffffffL, 
 };
 static final long[] jjtoSkip = {
    0xfeL, 0x0L, 0x0L, 0x0L, 
diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java
index 26984b7..fc694dd 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java
@@ -8,17 +8,16 @@
   public int JJTPARSETOPLEVELPROCEDURE = 1;

   public int JJTPARSETOPLEVELFUNCTION = 2;

   public int JJTPARSETABLE = 3;

-  public int JJTALTERDECLARATION = 4;

-  public int JJTPARSETYPE = 5;

-  public int JJTVOID = 6;

-  public int JJTCOLUMNTYPESPEC = 7;

-  public int JJTVARIABLEDECLARATION = 8;

-  public int JJTDATATYPE = 9;

-  public int JJTTYPESPEC = 10;

-  public int JJTFIELDDECLARATION = 11;

-  public int JJTFUNCTIONRETURNSPEC = 12;

-  public int JJTARGUMENT = 13;

-  public int JJTARGUMENTDEFAULTASSIGNMENT = 14;

+  public int JJTPARSETYPE = 4;

+  public int JJTVOID = 5;

+  public int JJTCOLUMNTYPESPEC = 6;

+  public int JJTVARIABLEDECLARATION = 7;

+  public int JJTDATATYPE = 8;

+  public int JJTTYPESPEC = 9;

+  public int JJTFIELDDECLARATION = 10;

+  public int JJTFUNCTIONRETURNSPEC = 11;

+  public int JJTARGUMENT = 12;

+  public int JJTARGUMENTDEFAULTASSIGNMENT = 13;

 

 

   public String[] jjtNodeName = {

@@ -26,7 +25,6 @@
     "parseTopLevelProcedure",

     "parseTopLevelFunction",

     "parseTable",

-    "alterDeclaration",

     "parseType",

     "void",

     "columnTypeSpec",

@@ -39,4 +37,4 @@
     "argumentDefaultAssignment",

   };

 }

-/* JavaCC - OriginalChecksum=a579888223948142630ec7a07f38c9af (do not edit this line) */

+/* JavaCC - OriginalChecksum=4a0f489189e4c3ead4b8cf5fc0c660e0 (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java b/src/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java
index 865bb50..0f83421 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java
@@ -627,4 +627,4 @@
   }

 

 }

-/* JavaCC - OriginalChecksum=d6ff19a4066274be432bcf17dc6de4bd (do not edit this line) */

+/* JavaCC - OriginalChecksum=53254f6a9325378bb7ef0cee733f3fac (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/Node.java b/src/org/eclipse/persistence/tools/oracleddl/parser/Node.java
index 33d4647..e745de2 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/Node.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/Node.java
@@ -1,5 +1,5 @@
 /* Generated By:JJTree: Do not edit this line. Node.java Version 4.3 */

-/* JavaCCOptions:MULTI=false,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=true,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */

+/* JavaCCOptions:MULTI=false,NODE_USES_PARSER=true,VISITOR=true,TRACK_TOKENS=true,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */

 package org.eclipse.persistence.tools.oracleddl.parser;

 

 /* All AST nodes must implement this interface.  It provides basic

@@ -37,4 +37,4 @@
   /** Accept the visitor. **/

   public Object jjtAccept(DDLParserVisitor visitor, Object data);

 }

-/* JavaCC - OriginalChecksum=b6f06f1922c5ebe7a3d78f1411be887b (do not edit this line) */

+/* JavaCC - OriginalChecksum=e6dd6604bd318fc92a6124a2e26ae192 (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java b/src/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java
index f4ca8ce..b51da14 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java
@@ -197,4 +197,4 @@
    }

 

 }

-/* JavaCC - OriginalChecksum=55ba377f1a5308daf4a1ad9799cebc7c (do not edit this line) */

+/* JavaCC - OriginalChecksum=81f4443085e467ef907deb9a67f74438 (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/SimpleNode.java b/src/org/eclipse/persistence/tools/oracleddl/parser/SimpleNode.java
index a2b7eb0..15f0cfb 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/SimpleNode.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/SimpleNode.java
@@ -1,5 +1,5 @@
 /* Generated By:JJTree: Do not edit this line. SimpleNode.java Version 4.3 */

-/* JavaCCOptions:MULTI=false,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=true,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */

+/* JavaCCOptions:MULTI=false,NODE_USES_PARSER=true,VISITOR=true,TRACK_TOKENS=true,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */

 package org.eclipse.persistence.tools.oracleddl.parser;

 

 public

@@ -101,4 +101,4 @@
   }

 }

 

-/* JavaCC - OriginalChecksum=bf502ec415a5eca62b0ddf234b08b95d (do not edit this line) */

+/* JavaCC - OriginalChecksum=fe38dd7c7d876a468320fba93f98b563 (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/Token.java b/src/org/eclipse/persistence/tools/oracleddl/parser/Token.java
index 9765feb..a9723db 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/Token.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/Token.java
@@ -141,4 +141,4 @@
   }

 

 }

-/* JavaCC - OriginalChecksum=9ee018451f3dbaef16d52e746f1a1db5 (do not edit this line) */

+/* JavaCC - OriginalChecksum=6c9f79d78d53588eccf7c8f0bb40434a (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java b/src/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java
index d5becb1..2e96615 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java
@@ -157,4 +157,4 @@
     this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);

   }

 }

-/* JavaCC - OriginalChecksum=b3bba809bde37f438c3e67dbda79676d (do not edit this line) */

+/* JavaCC - OriginalChecksum=ce061a9b2d99fb99a53b7768a4a7762e (do not edit this line) */

diff --git a/src/org/eclipse/persistence/tools/oracleddl/util/transforms.properties b/src/org/eclipse/persistence/tools/oracleddl/util/transforms.properties
index 1846924..9a48a96 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/util/transforms.properties
+++ b/src/org/eclipse/persistence/tools/oracleddl/util/transforms.properties
@@ -1,7 +1,7 @@
 PRETTY=true
 SQLTERMINATOR=true
 CONSTRAINTS=TRUE
-CONSTRAINTS_AS_ALTER=TRUE
+CONSTRAINTS_AS_ALTER=FALSE
 REF_CONSTRAINTS=FALSE
 SEGMENT_ATTRIBUTES=FALSE
 STORAGE=FALSE