Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / MyDerby-10.3 / java / tools / org / apache / derby / impl / tools / ij / ij.java
diff --git a/JMCR-Stable/real-world application/MyDerby-10.3/java/tools/org/apache/derby/impl/tools/ij/ij.java b/JMCR-Stable/real-world application/MyDerby-10.3/java/tools/org/apache/derby/impl/tools/ij/ij.java
new file mode 100644 (file)
index 0000000..389f2ee
--- /dev/null
@@ -0,0 +1,7991 @@
+/* Generated By:JavaCC: Do not edit this line. ij.java */\r
+package org.apache.derby.impl.tools.ij;\r
+\r
+import org.apache.derby.iapi.reference.JDBC20Translation;\r
+import org.apache.derby.iapi.reference.JDBC30Translation;\r
+\r
+import org.apache.derby.tools.JDBCDisplayUtil;\r
+\r
+\r
+import org.apache.derby.iapi.tools.i18n.LocalizedInput;\r
+import org.apache.derby.iapi.tools.i18n.LocalizedResource;\r
+\r
+import org.apache.derby.iapi.services.info.JVMInfo;\r
+\r
+import java.lang.reflect.*;\r
+import java.security.AccessController;\r
+import java.security.PrivilegedAction;\r
+import java.sql.Connection;\r
+import java.sql.DatabaseMetaData;\r
+import java.sql.DriverManager;\r
+import java.sql.Statement;\r
+import java.sql.PreparedStatement;\r
+import java.sql.ResultSet;\r
+import java.sql.ResultSetMetaData;\r
+import java.sql.SQLException;\r
+import java.sql.SQLWarning;\r
+import java.util.Hashtable;\r
+import java.util.Properties;\r
+import java.util.StringTokenizer;\r
+import java.io.IOException;\r
+import java.util.Vector;\r
+import java.util.Enumeration;\r
+import java.util.Locale;\r
+import java.util.List;\r
+import java.util.ArrayList;\r
+\r
+\r
+/**\r
+       This parser works on a statement-at-a-time basis.\r
+       It maintains a connection environment that is\r
+       set by the caller and contains a list of\r
+       connections for the current thread/ij session.\r
+       Multi-user frameworks that use this parser\r
+       tend to maintain multiple connectionEnv's and\r
+       pass in the current one to set ij up.\r
+       A connectionEnv has a default connection in use,\r
+       and the ij connect/set connection/disconnect commands \r
+       are used to change the current connection.\r
+\r
+       Each connection has associated with it a list\r
+       of prepared statements and cursors, created by\r
+       the ij prepare and get cursor statements and\r
+       manipulated by additional ij statements.\r
+\r
+       To enable multiple display modes, this parser will\r
+       not output anything, but will return\r
+       objects that the caller can then display.\r
+\r
+       This means the caller is responsible for displaying\r
+       thrown exceptions and also SQLWarnings. So, our\r
+       return value is the JDBC object upon which warnings\r
+       will be hung, i.e. the one manipulated by the statement,\r
+       if any.\r
+\r
+       If there is no object to display, then a null is\r
+       returned.\r
+\r
+ */\r
+class ij implements ijConstants {\r
+        static final String PROTOCOL_PROPERTY = "ij.protocol";\r
+    static final String URLCHECK_PROPERTY = "ij.URLCheck";\r
+        static final String USER_PROPERTY = "ij.user";\r
+    static final String PASSWORD_PROPERTY = "ij.password";\r
+        static final String FRAMEWORK_PROPERTY = "framework";\r
+\r
+        boolean                 elapsedTime = false;\r
+\r
+        Connection theConnection = null;\r
+        ConnectionEnv currentConnEnv = null;\r
+        String urlCheck = null;\r
+\r
+        xaAbstractHelper xahelper = null;\r
+        boolean exit = false;\r
+\r
+        utilMain utilInstance = null;\r
+        Hashtable ignoreErrors = null;\r
+        String protocol = null;         // the (single) unnamed protocol\r
+        Hashtable namedProtocols;\r
+\r
+\r
+\r
+        /**\r
+        * A constructor that understands the local state that needs to be\r
+        * initialized.\r
+        *\r
+        * @param tm                    The token manager to use\r
+        * @param utilInstance  The util to use\r
+        */\r
+        ij(ijTokenManager tm, utilMain utilInstance) {\r
+                this(tm);\r
+                this.utilInstance = utilInstance;\r
+        }\r
+\r
+        /**\r
+          Initialize this parser from the environment\r
+          (system properties). Used when ij is being run\r
+          as a command line program.\r
+       */\r
+        void initFromEnvironment() {\r
+\r
+                // load all protocols specified via properties\r
+                //\r
+        Properties p = (Properties) AccessController.doPrivileged(new PrivilegedAction() {\r
+                public Object run() {\r
+                return System.getProperties();\r
+            }\r
+        });\r
+        urlCheck = p.getProperty(URLCHECK_PROPERTY);\r
+                protocol = p.getProperty(PROTOCOL_PROPERTY);\r
+                String framework_property = p.getProperty(FRAMEWORK_PROPERTY);\r
+\r
+                if (ij.JDBC20X() && ij.JTA() && ij.JNDI())\r
+                {\r
+                        try {\r
+                                xahelper = (xaAbstractHelper) Class.forName("org.apache.derby.impl.tools.ij.xaHelper").newInstance();\r
+                                //Added by Jeff Huang\r
+                                xahelper = new org.apache.derby.impl.tools.ij.xaHelper();\r
+                                \r
+                                xahelper.setFramework(framework_property);\r
+                        } catch (Exception e) {\r
+                        }\r
+\r
+                }\r
+\r
+\r
+                namedProtocols = new Hashtable();\r
+                String prefix = PROTOCOL_PROPERTY + ".";\r
+                for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )\r
+                {\r
+                        String key = (String)e.nextElement();\r
+                        if (key.startsWith(prefix)) {\r
+                                String name = key.substring(prefix.length());\r
+                                installProtocol(name.toUpperCase(Locale.ENGLISH), p.getProperty(key));\r
+                        }\r
+                }\r
+        }\r
+        /**\r
+        * Return whether or not JDBC 2.0 (and greater) extension classes can be loaded\r
+        *\r
+        * @return true if JDBC 2.0 (and greater) extension classes can be loaded\r
+        */\r
+        private static boolean JDBC20X()\r
+        {\r
+                try\r
+                {\r
+                        Class.forName("javax.sql.DataSource");\r
+                        Class.forName("javax.sql.ConnectionPoolDataSource");\r
+                        Class.forName("javax.sql.PooledConnection");\r
+                        Class.forName("javax.sql.XAConnection");\r
+                        Class.forName("javax.sql.XADataSource");\r
+                               //Added by Jeff Huang\r
+                               //TODO: FIXIT\r
+                }\r
+                catch(ClassNotFoundException cnfe)\r
+                {\r
+                        return false;\r
+                }\r
+                return true;\r
+        }\r
+        /**\r
+        * Return whether or not JTA classes can be loaded\r
+        *\r
+        * @return true if JTA classes can be loaded\r
+        */\r
+        private static boolean JTA()\r
+        {\r
+                try\r
+                {\r
+                        Class.forName("javax.transaction.xa.Xid");\r
+                        Class.forName("javax.transaction.xa.XAResource");\r
+                        Class.forName("javax.transaction.xa.XAException");\r
+                               //Added by Jeff Huang\r
+                               //TODO: FIXIT\r
+                }\r
+                catch(ClassNotFoundException cnfe)\r
+                {\r
+                        return false;\r
+                }\r
+                return true;\r
+        }\r
+\r
+        /**\r
+        * Return whether or not JNDI extension classes can be loaded\r
+        *\r
+        * @return true if JNDI extension classes can be loaded\r
+        */\r
+        private static boolean JNDI()\r
+        {\r
+                try\r
+                {\r
+                        Class.forName("javax.naming.spi.Resolver");\r
+                        Class.forName("javax.naming.Referenceable");\r
+                        Class.forName("javax.naming.directory.Attribute");\r
+                               //Added by Jeff Huang\r
+                               //TODO: FIXIT\r
+                }\r
+                catch(ClassNotFoundException cnfe)\r
+                {\r
+                        return false;\r
+                }\r
+                return true;\r
+        }\r
+// FIXME: caller has to deal with ignoreErrors and handleSQLException behavior\r
+\r
+        /**\r
+               Add the warnings of wTail to the end of those of wHead.\r
+        */\r
+        SQLWarning appendWarnings(SQLWarning wHead, SQLWarning wTail) {\r
+                if (wHead == null) return wTail;\r
+\r
+                if (wHead.getNextException() == null) {\r
+                        wHead.setNextException(wTail);\r
+                } else {\r
+                        appendWarnings(wHead.getNextWarning(), wTail);\r
+                }\r
+                return wHead;\r
+        }\r
+\r
+        /**\r
+        * Get the "elapsedTime state".\r
+        */\r
+        boolean getElapsedTimeState()\r
+        {\r
+                return elapsedTime;\r
+        }\r
+\r
+        /**\r
+          this removes the outside quotes from the string.\r
+          it will also swizzle the special characters\r
+          into their actual characters, like '' for ', etc.\r
+        */\r
+        String stringValue(String s) {\r
+                String result = s.substring(1,s.length()-1);\r
+                char quotes = '\'';\r
+                int             index;\r
+\r
+                /* Find the first occurrence of adjacent quotes. */\r
+                index = result.indexOf(quotes);\r
+\r
+                /* Replace each occurrence with a single quote and begin the\r
+                * search for the next occurrence from where we left off.\r
+                */\r
+                while (index != -1)\r
+                {\r
+                        result = result.substring(0, index + 1) + result.substring(index + 2);\r
+\r
+                        index = result.indexOf(quotes, index + 1);\r
+                }\r
+\r
+                return result;\r
+        }\r
+\r
+        void installProtocol(String name, String value) {\r
+            try {\r
+                        // `value' is a JDBC protocol;\r
+                        // we load the "driver" in the prototypical\r
+                        // manner, it will register itself with\r
+                        // the DriverManager.\r
+                        util.loadDriverIfKnown(value);\r
+            } catch (ClassNotFoundException e) {\r
+                        throw ijException.classNotFoundForProtocol(value);\r
+            } catch (IllegalArgumentException e) {\r
+                        throw ijException.classNotFoundForProtocol(value);\r
+            } catch (IllegalAccessException e) {\r
+                        throw ijException.classNotFoundForProtocol(value);\r
+            } catch (InstantiationException e) {\r
+                        throw ijException.classNotFoundForProtocol(value);\r
+            }\r
+                if (name == null)\r
+                        protocol = value;\r
+                else\r
+                        namedProtocols.put(name, value);\r
+        }\r
+\r
+        void haveConnection() {\r
+                JDBCDisplayUtil.checkNotNull(theConnection, "connection");\r
+        }\r
+\r
+        /**\r
+               We do not reuse statement objects at all, because\r
+               some systems require you to close the object to release\r
+               resources (JBMS), while others will not let you reuse\r
+               the statement object once it is closed (WebLogic).\r
+\r
+               If you want to reuse statement objects, you need to\r
+               use the ij PREPARE and EXECUTE statements.\r
+\r
+               @param stmt the statement\r
+\r
+        **/\r
+        ijResult executeImmediate(String stmt) throws SQLException {\r
+                Statement aStatement = null;\r
+                try {\r
+                        long    beginTime = 0;\r
+                        long    endTime = 0;\r
+                        boolean cleanUpStmt = false;\r
+\r
+                        haveConnection();\r
+                        aStatement = theConnection.createStatement();\r
+\r
+                        // for JCC - remove comments at the beginning of the statement\r
+                        // and trim; do the same for Derby Clients that have versions\r
+                        // earlier than 10.2.\r
+                        if (currentConnEnv != null) {\r
+                                boolean trimForDNC = currentConnEnv.getSession().getIsDNC();\r
+                                if (trimForDNC) {\r
+                                // we're using the Derby Client, but we only want to trim\r
+                                // if the version is earlier than 10.2.\r
+                                        DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                                        int majorVersion = dbmd.getDriverMajorVersion();\r
+                                        if ((majorVersion > 10) || ((majorVersion == 10) &&\r
+                                                (dbmd.getDriverMinorVersion() > 1)))\r
+                                        { // 10.2 or later, so don't trim/remove comments.\r
+                                                trimForDNC = false;\r
+                                        }\r
+                                }\r
+                                if (currentConnEnv.getSession().getIsJCC() || trimForDNC) {\r
+                                // remove comments and trim.\r
+                                        int nextline;\r
+                                        while(stmt.startsWith("--"))\r
+                                        {\r
+                                                nextline = stmt.indexOf('\n')+1;\r
+                                                stmt = stmt.substring(nextline);\r
+                                        }\r
+                                        stmt = stmt.trim();\r
+                                }\r
+                        }\r
+\r
+                        aStatement.execute(stmt);\r
+\r
+                        // FIXME: display results. return start time.\r
+                        return new ijStatementResult(aStatement,true);\r
+\r
+                } catch (SQLException e) {\r
+                        if (aStatement!=null)  // free the resource\r
+                                aStatement.close();\r
+                        throw e;\r
+                }\r
+        }\r
+\r
+        ijResult quit() throws SQLException {\r
+                exit = true;\r
+                if (getExpect()) { // report stats\r
+                        // FIXME: replace with MVC...\r
+                        // FIXME: this is a kludgy way to quiet /0 and make 0/0=1...\r
+                        int numExpectOr1 = (numExpect==0?1:numExpect);\r
+                        int numPassOr1 = (numPass==numExpect && numPass==0)?1:numPass;\r
+                        int numFailOr1 = (numFail==numExpect && numFail==0)?1:numFail;\r
+                        int numUnxOr1 = (numUnx==numExpect && numUnx==0)?1:numUnx;\r
+\r
+            LocalizedResource.OutputWriter().println(LocalizedResource.getMessage("IJ_TestsRun0Pass12Fail34",\r
+            new Object[]{\r
+                        LocalizedResource.getNumber(numExpect), LocalizedResource.getNumber(100*(numPassOr1/numExpectOr1)),\r
+                        LocalizedResource.getNumber(100*(numFailOr1/numExpectOr1))}));\r
+                        if (numUnx > 0) {\r
+                                                        LocalizedResource.OutputWriter().println();\r
+                                                        LocalizedResource.OutputWriter().println(LocalizedResource.getMessage("IJ_UnexpResulUnx01",\r
+                                                        LocalizedResource.getNumber(numUnx), LocalizedResource.getNumber(100*(numUnxOr1/numExpectOr1))));\r
+                        }\r
+                }\r
+                currentConnEnv.removeAllSessions();\r
+                theConnection = null;\r
+                return null;\r
+        }\r
+\r
+        /**\r
+               Async execution wants to return results off-cycle.\r
+               We want to control their output, and so will hold it\r
+               up until it is requested with a WAIT FOR asyncName\r
+               statement.  WAIT FOR will return the results of\r
+               the async statement once they are ready.  Note that using\r
+               a select only waits for the execute to complete; the\r
+               logic to step through the result set is in the caller.\r
+        **/\r
+        ijResult executeAsync(String stmt, String name) {\r
+                AsyncStatement as = new AsyncStatement(theConnection, stmt);\r
+\r
+                currentConnEnv.getSession().addAsyncStatement(name,as);\r
+\r
+                as.start();\r
+\r
+                return null;\r
+        }\r
+\r
+\r
+\r
+        void setConnection(ConnectionEnv connEnv, boolean multipleEnvironments) {\r
+                Connection conn = connEnv.getConnection();\r
+\r
+                if (connEnv != currentConnEnv) // single connenv is common case\r
+                        currentConnEnv = connEnv;\r
+\r
+                if (theConnection == conn) return; // not changed.\r
+\r
+                if ((theConnection == null) || multipleEnvironments) {\r
+                        // must have switched env's (could check)\r
+                        theConnection = conn;\r
+                } else {\r
+                        throw ijException.needToDisconnect();\r
+                }\r
+        }\r
+\r
+        /**\r
+               Note the Expect Result in the output and in the stats.\r
+\r
+               FIXME\r
+        */\r
+        int numExpect, numPass, numFail, numUnx;\r
+        private void noteExpect(boolean actual, boolean want) {\r
+                numExpect++;\r
+                if (actual) numPass++;\r
+                else numFail++;\r
+\r
+                LocalizedResource.OutputWriter().print(LocalizedResource.getMessage(actual?"IJ_Pass":"IJ_Fail"));\r
+                if (actual != want) {\r
+                        numUnx++;\r
+                                        LocalizedResource.OutputWriter().println(LocalizedResource.getMessage("IJ_Unx"));\r
+                }\r
+                else LocalizedResource.OutputWriter().println();\r
+        }\r
+\r
+        private boolean getExpect() {\r
+                return Boolean.getBoolean("ij.expect");\r
+        }\r
+\r
+        private ijResult        addSession\r
+        (\r
+                Connection      newConnection,\r
+                String          name\r
+        )\r
+                throws SQLException\r
+        {\r
+                if (currentConnEnv.haveSession(name)) {\r
+                        throw ijException.alreadyHaveConnectionNamed(name);\r
+                }\r
+\r
+                currentConnEnv.addSession( newConnection, name );\r
+                return new ijConnectionResult( newConnection );\r
+        }\r
+\r
+        private String[] sortConnectionNames()\r
+        {\r
+                int size = 100;\r
+                int count = 0;\r
+                String[] array = new String[size];\r
+                String key;\r
+\r
+                Hashtable ss = currentConnEnv.getSessions();\r
+                // Calculate the number of connections in the sessions list and\r
+                // build an array of all the connection names.\r
+                for (Enumeration connectionNames = ss.keys(); connectionNames.hasMoreElements();) {\r
+                    if (count == size) {\r
+                       // need to expand the array\r
+                       size = size*2;\r
+                       String[] expandedArray = new String[size];\r
+                       System.arraycopy(array, 0, expandedArray, 0, count);\r
+                       array = expandedArray;\r
+                    }\r
+                    key = (String)connectionNames.nextElement();\r
+                    array[ count++ ] = key;\r
+                }\r
+\r
+                java.util.Arrays.sort(array, 0, count);\r
+\r
+        return array;\r
+        }\r
+\r
+            /**\r
+         This is used at the ij startup time to see if there are already some\r
+             connections made and if so, show connections made so far.\r
+         Following also gets executed when user types show connections command\r
+             in ij. In the former case, ignore0Rows is set whereas in the later cas\r
+         it's set to false. The reason for this is, at ij startup time, if there\r
+         are no connections made so far, we don't want to show anything. Only if\r
+         there are connections made, we show the connections. Whereas in show\r
+         connection command case, we want to show the connection status either way\r
+         ie if there are no connections, we say no connections. Otherwise we list\r
+         all the connections made so far.\r
+           */\r
+        public ijResult showConnectionsMethod(boolean ignore0Rows) throws SQLException {\r
+                Hashtable ss = currentConnEnv.getSessions();\r
+                Vector v = new Vector();\r
+                SQLWarning w = null;\r
+        if (ss == null || ss.size() == 0) {\r
+                if (!ignore0Rows)\r
+                v.addElement(LocalizedResource.getMessage("IJ_NoConneAvail"));\r
+        }\r
+        else {\r
+                boolean haveCurrent=false;\r
+                        int count = 0;\r
+                        for (Enumeration connectionNames = ss.keys(); connectionNames.hasMoreElements();\r
+                                                connectionNames.nextElement())\r
+                        count++;\r
+            String[] array = sortConnectionNames();\r
+                    for ( int ictr = 0; ictr < count; ictr++ ) {\r
+                                String connectionName = array[ ictr ];\r
+                Session s = (Session)ss.get(connectionName);\r
+                if (s.getConnection().isClosed()) {\r
+                        if (currentConnEnv.getSession() != null &&\r
+                                        connectionName.equals(currentConnEnv.getSession().getName())) {\r
+                                currentConnEnv.removeCurrentSession();\r
+                                theConnection = null;\r
+                        }\r
+                        else\r
+                        currentConnEnv.removeSession(connectionName);\r
+                }\r
+                else {\r
+                        StringBuffer row = new StringBuffer();\r
+                        row.append(connectionName);\r
+                        if (currentConnEnv.getSession() != null &&\r
+                                connectionName.equals(currentConnEnv.getSession().getName())) {\r
+                                row.append('*');\r
+                                haveCurrent=true;\r
+                        }\r
+\r
+                                //If ij.dataSource property is set, show only connection names.\r
+                                //In this case, URL is not used to get connection, so do not append URL\r
+                                String dsName = util.getSystemProperty("ij.dataSource");\r
+                                        if(dsName == null){\r
+                                row.append(" - \u0009");\r
+                                row.append(s.getConnection().getMetaData().getURL());\r
+                                }\r
+                        // save the warnings from these connections\r
+                        w = appendWarnings(w,s.getConnection().getWarnings());\r
+                        s.getConnection().clearWarnings();\r
+                        v.addElement(row.toString());\r
+                }\r
+                }\r
+                if (haveCurrent)\r
+                v.addElement(LocalizedResource.getMessage("IJ_CurreConne"));\r
+                    else\r
+                v.addElement(LocalizedResource.getMessage("IJ_NoCurreConne"));\r
+                }\r
+                return new ijVectorResult(v,w);\r
+        }\r
+\r
+        /**\r
+          Returns a subset of the input integer array\r
+          \r
+          @param input The input integer array\r
+          @param start Starting index, inclusive\r
+          @param end   Ending index, exclusive\r
+        */\r
+        public static int[] intArraySubset(final int[] input, int start, int end) {\r
+                int[] res = new int[end-start];\r
+                System.arraycopy(input, start, res, 0, end-start);\r
+                return res;\r
+        }\r
+\r
+        /**\r
+          Verify that a table exists within a schema. Throws an exception\r
+          if table does not exist.\r
+          \r
+          @param schema Schema for the table\r
+          @param table  Name of table to check for existence of\r
+        */\r
+        public void verifyTableExists(String schema, String table)\r
+        throws SQLException {\r
+                if(schema == null)\r
+                        return;\r
+\r
+                ResultSet rs = null;\r
+                try {\r
+                        DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                        rs = dbmd.getTables(null,schema,table,null);\r
+                        if(!rs.next())\r
+                                throw ijException.noSuchTable(table);\r
+                } finally {\r
+                        if(rs!=null)\r
+                                rs.close();\r
+                }\r
+        }\r
+\r
+        /**\r
+          Return a resultset of tables (or views, procs...) in the given schema. \r
+\r
+          @param schema  Schema to get tables for, or null for search \r
+                         in all schemas.\r
+          @param tableType Types of tables to return, see\r
+                         {@link java.sql.DatabaseMetaData#getTableTypes}\r
+        */\r
+        public ijResult showTables(String schema, String[] tableType) throws SQLException {\r
+                ResultSet rs = null;\r
+                try {\r
+                        haveConnection();\r
+\r
+                        DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                        rs = dbmd.getTables(null,schema,null,tableType);\r
+\r
+                        int[] displayColumns = new int[] {\r
+                                rs.findColumn("TABLE_SCHEM"),\r
+                                rs.findColumn("TABLE_NAME"),\r
+                                rs.findColumn("REMARKS"),\r
+                        };\r
+                        int[] columnWidths = new int[] {\r
+                                20,\r
+                                30,\r
+                                20,\r
+                        };\r
+\r
+                        return new ijResultSetResult(rs, displayColumns, columnWidths);\r
+                } catch (SQLException e) {\r
+                        if(rs!=null)\r
+                                rs.close();\r
+                        throw e;\r
+                }\r
+        }\r
+\r
+        /**\r
+          Return a resultset of indexes for the given table or schema\r
+\r
+          @param schema  schema to find indexes for\r
+          @param table the exact name of the table to find indexes for\r
+       */\r
+    private ResultSet getIndexInfoForTable(String schema, String table)\r
+      throws SQLException {\r
+\r
+        ResultSet rs = null;\r
+        try {\r
+            haveConnection();\r
+            verifyTableExists(schema, table);\r
+\r
+            DatabaseMetaData dbmd = theConnection.getMetaData();\r
+            rs = dbmd.getIndexInfo(null, schema, table, false, true);\r
+\r
+        } catch (SQLException e) {\r
+            if(rs!=null)\r
+                rs.close();\r
+            throw e;\r
+        }\r
+        return rs;\r
+    }\r
+\r
+    /**\r
+     * Used by showIndexes to get columns in correct order\r
+     */\r
+    private int[] getDisplayColumnsForIndex(String schema, ResultSet rs)\r
+        throws SQLException{\r
+        int[] displayColumns = new int[] {\r
+            rs.findColumn("TABLE_SCHEM"),\r
+            rs.findColumn("TABLE_NAME"),\r
+            rs.findColumn("COLUMN_NAME"),\r
+            rs.findColumn("NON_UNIQUE"),\r
+            rs.findColumn("TYPE"),\r
+            rs.findColumn("ASC_OR_DESC"),\r
+            rs.findColumn("CARDINALITY"),\r
+            rs.findColumn("PAGES"),\r
+        };\r
+        if(schema!=null) {\r
+            displayColumns = intArraySubset(displayColumns, 1,\r
+                                            displayColumns.length);\r
+        }\r
+        return displayColumns;\r
+    }\r
+\r
+    /**\r
+     * Used by showIndexes to get correct column widths\r
+     */\r
+    private int[] getColumnWidthsForIndex(String schema){\r
+        int[] columnWidths = new int[] {\r
+            20,\r
+            20,\r
+            20,\r
+            6,\r
+            4,\r
+            4,\r
+            8,\r
+            8,\r
+        };\r
+        if(schema!=null) {\r
+            columnWidths = intArraySubset(columnWidths, 1,\r
+                                            columnWidths.length);\r
+        }\r
+        return columnWidths;\r
+    }\r
+\r
+    /**\r
+     * Used to show all indices.\r
+     *\r
+     * @param schema the schema indices are shown from. \r
+     * @param table the table name to show indices for. If <code>null</code>,\r
+     *      all indices of the schema are returned.\r
+     */\r
+    public ijResult showIndexes(String schema, String table)\r
+            throws SQLException {\r
+\r
+        ijResult result = null;\r
+\r
+        int[] displayColumns = null;\r
+        int[] columnWidths = null;\r
+\r
+        try {\r
+            if (table != null) {\r
+                ResultSet rs = getIndexInfoForTable(schema, table);\r
+                displayColumns = getDisplayColumnsForIndex(schema, rs);\r
+                columnWidths = getColumnWidthsForIndex(schema);\r
+                result = new ijResultSetResult(rs, displayColumns,\r
+                                               columnWidths);\r
+            }\r
+            else {\r
+                /* DatabaseMetaData#getIndexInfo requires exact table names.\r
+                 * If table is null, we must first get all table names in\r
+                 * the appropriate schema, and then get all indices for each\r
+                 * of these. \r
+                 */\r
+                haveConnection();\r
+                verifyTableExists(schema, table);\r
+\r
+                DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                ResultSet tablers = dbmd.getTables(null,schema,null,null);\r
+\r
+                List resultSets = new ArrayList();\r
+                boolean firstIteration = true;\r
+                ResultSet current_rs = null;\r
+                while (tablers.next()){\r
+                    String tableName = tablers.getString("TABLE_NAME");\r
+                    current_rs = getIndexInfoForTable(schema, tableName);\r
+                    resultSets.add(current_rs);\r
+\r
+                    if (firstIteration) {\r
+                        displayColumns = getDisplayColumnsForIndex(schema,\r
+                                                                   current_rs);\r
+                        columnWidths = getColumnWidthsForIndex(schema);\r
+                        firstIteration = false;\r
+                    }\r
+                }\r
+                result = new ijMultipleResultSetResult(resultSets,\r
+                                                       displayColumns,\r
+                                                       columnWidths);\r
+            }\r
+            return result;\r
+        } catch (SQLException e) {\r
+            if(result!=null)\r
+                result.closeStatement();\r
+            throw e;\r
+        }\r
+    }\r
+\r
+        /**\r
+          Return a resultset of procedures from database metadata\r
+        */\r
+        public ijResult showProcedures(String schema) throws SQLException {\r
+                ResultSet rs = null;\r
+                try {\r
+                        haveConnection();\r
+\r
+                        DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                        rs = dbmd.getProcedures(null,schema,null);\r
+\r
+                        int[] displayColumns = new int[] {\r
+                                rs.findColumn("PROCEDURE_SCHEM"),\r
+                                rs.findColumn("PROCEDURE_NAME"),\r
+                                rs.findColumn("REMARKS"),\r
+                        };\r
+                        int[] columnWidths = new int[] {\r
+                                20,\r
+                                30,\r
+                                20,\r
+                        };\r
+\r
+                        return new ijResultSetResult(rs, displayColumns, columnWidths);\r
+                } catch (SQLException e) {\r
+                        if(rs!=null)\r
+                                rs.close();\r
+                        throw e;\r
+                }\r
+        }\r
+\r
+        /**\r
+          Return a resultset of schemas from database metadata\r
+        */\r
+        public ijResult showSchemas() throws SQLException {\r
+                ResultSet rs = null;\r
+                try {\r
+                        haveConnection();\r
+\r
+                        DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                        rs = dbmd.getSchemas();\r
+\r
+                        int[] displayColumns = new int[] {\r
+                                rs.findColumn("TABLE_SCHEM")\r
+                        };\r
+                        int[] columnWidths = new int[] {\r
+                                30\r
+                        };\r
+\r
+                        return new ijResultSetResult(rs, displayColumns, columnWidths);\r
+                } catch (SQLException e) {\r
+                        if(rs!=null)\r
+                                rs.close();\r
+                        throw e;\r
+                }\r
+        }\r
+\r
+        /**\r
+          Outputs the names of all fields of given table. Outputs field\r
+          names and data type.\r
+        */\r
+        public ijResult describeTable(String schema, String table) throws SQLException {\r
+                ResultSet rs = null;\r
+                try {\r
+                        haveConnection();\r
+                        verifyTableExists(schema,table);\r
+\r
+                        DatabaseMetaData dbmd = theConnection.getMetaData();\r
+                        rs = dbmd.getColumns(null,schema,table,null);\r
+\r
+                        int[] displayColumns = new int[] {\r
+                                rs.findColumn("TABLE_SCHEM"),\r
+                                rs.findColumn("TABLE_NAME"),\r
+                                rs.findColumn("COLUMN_NAME"),\r
+                                rs.findColumn("TYPE_NAME"),\r
+                                rs.findColumn("DECIMAL_DIGITS"),\r
+                                rs.findColumn("NUM_PREC_RADIX"),\r
+                                rs.findColumn("COLUMN_SIZE"),\r
+                                rs.findColumn("COLUMN_DEF"),\r
+                                rs.findColumn("CHAR_OCTET_LENGTH"),\r
+                                rs.findColumn("IS_NULLABLE"),\r
+                        };\r
+                        int[] columnWidths = new int[] {\r
+                                20,\r
+                                20,\r
+                                20,\r
+                                9,\r
+                                4,\r
+                                4,\r
+                                6,\r
+                                10,\r
+                                10,\r
+                                8\r
+                        };\r
+\r
+                        //\r
+                        // If schema is specified (if util.getSelectedSchema in\r
+                        // DescTableStatement() returns correct value), then we\r
+                        // don't need to output schema and table names.\r
+                        if(schema!=null && table != null) {\r
+                                displayColumns = intArraySubset(displayColumns, 2,\r
+                                                                                                displayColumns.length);\r
+                                columnWidths   = intArraySubset(columnWidths, 2,\r
+                                                                                                columnWidths.length);\r
+                        }\r
+\r
+                        return new ijResultSetResult(rs, displayColumns, columnWidths);\r
+                } catch (SQLException e) {\r
+                        if(rs!=null)\r
+                                rs.close();\r
+                        throw e;\r
+                }\r
+        }\r
+\r
+        private Object makeXid(int xid)\r
+        {\r
+                return null;\r
+        }\r
+\r
+//\r
+// start of BNF rules\r
+//\r
+  final public ijResult ijStatement() throws ParseException, SQLException {\r
+        ijResult r = null;\r
+    if (jj_2_56(2)) {\r
+      if (getToken(1).kind == ROLLBACK &&\r
+                              (!(getToken(3).kind == TO || getToken(3).kind == SAVEPOINT))) {\r
+        r = RollbackStatement();\r
+      } else if (jj_2_1(2)) {\r
+        r = AbsoluteStatement();\r
+      } else if (jj_2_2(2)) {\r
+        r = AfterLastStatement();\r
+      } else if (jj_2_3(2)) {\r
+        r = AutocommitStatement();\r
+      } else if (jj_2_4(2)) {\r
+        r = AsyncStatement();\r
+      } else if (jj_2_5(2)) {\r
+        r = Bang();\r
+      } else if (jj_2_6(2)) {\r
+        r = BeforeFirstStatement();\r
+      } else if (jj_2_7(2)) {\r
+        r = CloseStatement();\r
+      } else if (jj_2_8(2)) {\r
+        r = CommitStatement();\r
+      } else if (jj_2_9(2)) {\r
+        r = ConnectStatement();\r
+      } else if (jj_2_10(2)) {\r
+        r = DescTableStatement();\r
+      } else if (jj_2_11(2)) {\r
+        r = DisconnectStatement();\r
+      } else if (jj_2_12(2)) {\r
+        r = DriverStatement();\r
+      } else if (jj_2_13(2)) {\r
+        r = ElapsedTimeStatement();\r
+      } else if (jj_2_14(2)) {\r
+        r = ExecuteStatement();\r
+      } else if (jj_2_15(2)) {\r
+        r = FirstStatement();\r
+      } else if (jj_2_16(2)) {\r
+        r = FirstStatement();\r
+      } else if (jj_2_17(2)) {\r
+        r = JBMSPreparedStatementExec();\r
+      } else if (jj_2_18(2)) {\r
+        r = F2KExecuteProcedure();\r
+      } else if (jj_2_19(2)) {\r
+        r = ExitStatement();\r
+      } else if (jj_2_20(2)) {\r
+        r = ExpectStatement();\r
+      } else if (jj_2_21(2)) {\r
+        r = GetCursorStatement();\r
+      } else if (jj_2_22(2)) {\r
+        r = GetCurrentRowNumber();\r
+      } else if (jj_2_23(2)) {\r
+        r = HelpStatement();\r
+      } else if (jj_2_24(2)) {\r
+        r = IllegalStatementName();\r
+      } else if (jj_2_25(2)) {\r
+        r = LastStatement();\r
+      } else if (jj_2_26(2)) {\r
+        r = LocalizedDisplay();\r
+      } else if (jj_2_27(2)) {\r
+        r = MaximumDisplayWidthStatement();\r
+      } else if (jj_2_28(2)) {\r
+        r = NextStatement();\r
+      } else if (jj_2_29(2)) {\r
+        r = NoHoldForConnectionStatement();\r
+      } else if (jj_2_30(2)) {\r
+        r = PrepareStatement();\r
+      } else if (jj_2_31(2)) {\r
+        r = PreviousStatement();\r
+      } else if (jj_2_32(2)) {\r
+        r = ProtocolStatement();\r
+      } else if (jj_2_33(2)) {\r
+        r = ReadOnlyStatement();\r
+      } else if (jj_2_34(2)) {\r
+        r = RelativeStatement();\r
+      } else if (jj_2_35(2)) {\r
+        r = RemoveStatement();\r
+      } else if (jj_2_36(2)) {\r
+        r = RunStatement();\r
+      } else if (jj_2_37(2)) {\r
+        r = SetConnectionStatement();\r
+      } else if (jj_2_38(2)) {\r
+        r = ShowStatement();\r
+      } else if (jj_2_39(2)) {\r
+        r = WaitForStatement();\r
+      } else if (jj_2_40(2)) {\r
+        r = XA_DataSourceStatement();\r
+      } else if (jj_2_41(2)) {\r
+        r = XA_ConnectStatement();\r
+      } else if (jj_2_42(2)) {\r
+        r = XA_CommitStatement();\r
+      } else if (jj_2_43(2)) {\r
+        r = XA_DisconnectStatement();\r
+      } else if (jj_2_44(2)) {\r
+        r = XA_GetConnectionStatement();\r
+      } else if (jj_2_45(2)) {\r
+        r = XA_EndStatement();\r
+      } else if (jj_2_46(2)) {\r
+        r = XA_ForgetStatement();\r
+      } else if (jj_2_47(2)) {\r
+        r = XA_PrepareStatement();\r
+      } else if (jj_2_48(2)) {\r
+        r = XA_RecoverStatement();\r
+      } else if (jj_2_49(2)) {\r
+        r = XA_RollbackStatement();\r
+      } else if (jj_2_50(2)) {\r
+        r = XA_StartStatement();\r
+      } else if (jj_2_51(2)) {\r
+        r = DataSourceStatement();\r
+      } else if (jj_2_52(2)) {\r
+        r = CP_DataSourceStatement();\r
+      } else if (jj_2_53(2)) {\r
+        r = CP_ConnectStatement();\r
+      } else if (jj_2_54(2)) {\r
+        r = CP_GetConnectionStatement();\r
+      } else if (jj_2_55(2)) {\r
+        r = CP_DisconnectStatement();\r
+      } else {\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+    } else {\r
+      ;\r
+    }\r
+    jj_consume_token(0);\r
+                {if (true) return r;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * ProtocolStatement is PROTOCOL 'JDBC protocol' where\r
+ * the protocol is used to prefix any connect request that\r
+ * cannot find a driver.  We will take a stab at loading\r
+ * a driver as each protocol comes in -- we only know about\r
+ * two.\r
+ */\r
+  final public ijResult ProtocolStatement() throws ParseException, SQLException {\r
+        Token t;\r
+        String n = null;\r
+    jj_consume_token(PROTOCOL);\r
+    t = jj_consume_token(STRING);\r
+    if (jj_2_57(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                installProtocol(n, stringValue(t.image));\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * DriverStatement is DRIVER 'class' where class is the\r
+ * name of a class that is a JDBC driver. It is loaded\r
+ * into the DriverManager with a Class.forName call.\r
+ * <p>\r
+ * You can load as many drivers as you want, the idea is\r
+ * to load up the appropriate one(s) for the connect(s)\r
+ * that you will be issuing.\r
+ */\r
+  final public ijResult DriverStatement() throws ParseException, SQLException {\r
+        Token t;\r
+        String sVal = null;\r
+    jj_consume_token(DRIVER);\r
+    t = jj_consume_token(STRING);\r
+            try {\r
+                // t.image is a class name;\r
+                // we load the "driver" in the prototypical\r
+                // manner, it will register itself with\r
+                // the DriverManager.\r
+                        sVal = stringValue(t.image);\r
+                        util.loadDriver(sVal);\r
+            } catch (ClassNotFoundException e) {\r
+                        {if (true) throw ijException.classNotFound(sVal);}\r
+            } catch (IllegalArgumentException e) {\r
+                        {if (true) throw ijException.driverNotClassName(sVal);}\r
+            } catch (IllegalAccessException e) {\r
+                        {if (true) throw ijException.classNotFound(sVal);}\r
+            } catch (InstantiationException e) {\r
+                        {if (true) throw ijException.classNotFound(sVal);}\r
+            }\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult ConnectStatement() throws ParseException, SQLException {\r
+        ijResult        result;\r
+    if (jj_2_60(2)) {\r
+      jj_consume_token(CONNECT);\r
+      jj_consume_token(TO);\r
+      result = dynamicConnection(true);\r
+                {if (true) return result;}\r
+    } else if (jj_2_61(2)) {\r
+      jj_consume_token(CONNECT);\r
+      if (jj_2_58(2)) {\r
+        result = dynamicConnection(false);\r
+      } else if (jj_2_59(2)) {\r
+        result = staticConnection();\r
+      } else {\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+                {if (true) return result;}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * ConnectStatement is CONNECT 'url' [ PROTOCOL proto ] \r
+       [ USER  String PASSWORD String ] \r
+       [ATTRIBUTES attributeName = value [, attributeName = value]* ]\r
+       [ AS ident ], where url is the\r
+ * url for the database, i.e. jdbc:protocol:dbname etc.\r
+ * Attributes are connection attributes to \r
+ * <p>\r
+ * There can only be one connection at a time; if there\r
+ * is already one, it is put on hold and this one takes its place.\r
+ * <p>\r
+ * if a driver can't be found, the current protocol will\r
+ * be added at the front.\r
+ * <p>\r
+ * the as ident part is used for set connection.  If you don't\r
+ * specify a name, we create one that is CONNECTION# for the #\r
+ * of open connections that now exists. If the name duplicates,\r
+ * an error results.\r
+ */\r
+  final public ijResult dynamicConnection(boolean simplifiedPath) throws ParseException, SQLException {\r
+        Token t;\r
+        Token userT = null;\r
+        Token passwordT = null;\r
+        String n = null, p = null, sVal;\r
+    String userS =  util.getSystemProperty(USER_PROPERTY);\r
+    String passwordS = util.getSystemProperty(PASSWORD_PROPERTY);\r
+        Properties connInfo = null;\r
+    t = jj_consume_token(STRING);\r
+    if (jj_2_62(2)) {\r
+      jj_consume_token(PROTOCOL);\r
+      p = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_63(2)) {\r
+      jj_consume_token(USER);\r
+      userT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_64(2)) {\r
+      jj_consume_token(PASSWORD);\r
+      passwordT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_65(2)) {\r
+      jj_consume_token(ATTRIBUTES);\r
+      connInfo = attributeList();\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_66(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                // t.image is a database URL\r
+                // we get the connection and salt it away\r
+                // for use with other statements.\r
+                //\r
+                // FUTURE: we could have the syntax be\r
+                // CONNECT <STRING> AS <IDENTIFIER>\r
+                // and have a SET CONNECTION string to\r
+                // re-activate a named connection.\r
+                // Or not, and wait for SQL-J to support that\r
+                // statement... although then we will have to\r
+                // figure out if we will allow that SQL-J through\r
+                // JDBC or not.\r
+                // get the value of the string\r
+                // n.b. at some point this will have to deal with ''s\r
+                if (userT != null)\r
+                userS = stringValue(userT.image);\r
+\r
+        if (passwordT != null)\r
+                passwordS = stringValue(passwordT.image);\r
+\r
+        //If ij.dataSource property is set,use DataSource to get the connection\r
+                String dsName = util.getSystemProperty("ij.dataSource");\r
+                if (dsName != null){\r
+                //Check that t.image does not start with jdbc:\r
+                //If it starts with jdbc:, do not use DataSource to get connection\r
+                sVal = stringValue(t.image);\r
+                if(!sVal.startsWith("jdbc:") ){\r
+                        theConnection = util.getDataSourceConnection(dsName,userS,passwordS,sVal,false);\r
+                        {if (true) return addSession( theConnection, n );}\r
+                }\r
+        }\r
+\r
+                if (simplifiedPath)\r
+                        // url for the database W/O 'jdbc:protocol:', i.e. just a dbname\r
+                        // For example,\r
+                        //             CONNECT TO 'test'\r
+                        // is equivalent to\r
+                        //             CONNECT TO 'jdbc:derby:test'\r
+                        sVal = "jdbc:derby:" + stringValue(t.image);\r
+                else\r
+                        sVal = stringValue(t.image);\r
+\r
+                // add named protocol if it was specified\r
+                if (p != null) {\r
+                        String protocol = (String)namedProtocols.get(p);\r
+                        if (protocol == null) { {if (true) throw ijException.noSuchProtocol(p);} }\r
+                        sVal = protocol + sVal;\r
+                }\r
+\r
+                // add protocol if no driver matches url\r
+                boolean noDriver = false;\r
+                        // if we have a full URL, make sure it's loaded first\r
+                        try {\r
+                                if (sVal.startsWith("jdbc:"))\r
+                                        util.loadDriverIfKnown(sVal);\r
+                        } catch (Exception e) {\r
+                                // want to continue with the attempt\r
+                        }\r
+                        // By default perform extra checking on the URL attributes.\r
+                        // This checking does not change the processing.\r
+                        if (urlCheck == null || Boolean.valueOf(urlCheck).booleanValue()) {\r
+                          URLCheck aCheck = new URLCheck(sVal);\r
+                        }\r
+                if (!sVal.startsWith("jdbc:") && (p == null) && (protocol != null)) {\r
+                        sVal = protocol + sVal;\r
+                }\r
+\r
+\r
+                // If no ATTRIBUTES on the connection get them from the\r
+                // defaults\r
+                if (connInfo == null)\r
+                        connInfo = util.updateConnInfo(userS,passwordS,\r
+                        utilInstance.getConnAttributeDefaults());\r
+                else\r
+                        connInfo = util.updateConnInfo(userS,passwordS, connInfo);\r
+\r
+\r
+                theConnection = DriverManager.getConnection(sVal,connInfo);\r
+\r
+                {if (true) return addSession( theConnection, n );}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Handles DESCRIBE table\r
+ */\r
+  final public ijResult DescTableStatement() throws ParseException, SQLException {\r
+        String i = null;\r
+        String i2 = null;\r
+        Token  s = null;\r
+    jj_consume_token(DESCRIBE);\r
+    if (jj_2_67(2)) {\r
+      i = identifier();\r
+      jj_consume_token(PERIOD);\r
+      i2 = identifier();\r
+    } else if (jj_2_68(2)) {\r
+      i2 = identifier();\r
+    } else if (jj_2_69(2)) {\r
+      s = jj_consume_token(STRING);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+                if(s!=null) {\r
+                        i2 = stringValue(s.image);\r
+\r
+                        if (i2.length() == 0)\r
+                                {if (true) throw ijException.noSuchTable("(missing)");}\r
+\r
+                        int dotPosition = i2.indexOf('.');\r
+                        if(dotPosition!=-1) {\r
+                                i = i2.substring(0,dotPosition);\r
+                                i2 = i2.substring(dotPosition+1);\r
+                        }\r
+                        if ("*".equals(i2))\r
+                                i2 = null;\r
+                }\r
+\r
+                if(i==null)\r
+                        i = util.getSelectedSchema(theConnection);\r
+\r
+                {if (true) return describeTable(i,i2);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+  * Handles CONNECT yadda.yadda.foo( stringArg, ... stringArg ) AS connectionName\r
+  */\r
+  final public ijResult staticConnection() throws ParseException, SQLException {\r
+        String                  name = null;\r
+        Vector                  idList;\r
+        int                             idx = 0;\r
+        int                             lastID = 0;\r
+        StringBuffer    buffer;\r
+        String                  className;\r
+        String                  methodName;\r
+        Class                   classC;\r
+        Method                  method;\r
+        int                             argCount;\r
+        String[]                args;\r
+        Class                   stringClass;\r
+        Class[]                 argTypes;\r
+        ijResult                result = null;\r
+    idList = staticMethodName();\r
+    args = staticMethodArgs();\r
+    if (jj_2_70(2)) {\r
+      jj_consume_token(AS);\r
+      name = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                lastID = idList.size() - 1;\r
+                buffer = new StringBuffer();\r
+\r
+                for ( ; idx < lastID; idx++ )\r
+                {\r
+                        if ( idx > 0 ) { buffer.append( "." ); }\r
+                        buffer.append( (String) idList.elementAt( idx ) );\r
+                }\r
+                methodName = (String) idList.elementAt( idx );\r
+                className = buffer.toString();\r
+\r
+                try {\r
+                        argCount = args.length;\r
+                        argTypes = new Class[ argCount ];\r
+                        stringClass = Class.forName( "java.lang.String" );\r
+                               //Added by Jeff Huang\r
+                               //TODO: FIXIT\r
+                        for ( idx = 0; idx < argCount; idx++ ) { argTypes[ idx ] = stringClass; }\r
+\r
+                        classC = Class.forName( className );\r
+                               //Added by Jeff Huang\r
+                               //TODO: FIXIT\r
+                        method = classC.getMethod( methodName, argTypes );\r
+                        theConnection = (Connection) method.invoke( null, args );\r
+                        result = addSession( theConnection, name );\r
+\r
+                }\r
+                catch (java.lang.reflect.InvocationTargetException ite) {\r
+                        Throwable t = ite.getTargetException();\r
+                        if (t instanceof SQLException)\r
+                                {if (true) throw (SQLException) t;}\r
+\r
+                        {if (true) throw new SQLException( t.toString() );}\r
+                }\r
+                catch (Exception e) { {if (true) throw new SQLException( e.toString() );} }\r
+\r
+                {if (true) return result;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * SetConnectionStatement is SET CONNECTION ident\r
+ * <p>\r
+ * Moves to the named session, if it exists. If it doesn't\r
+ * exist, remains on the current session and returns an error.\r
+ */\r
+  final public ijResult SetConnectionStatement() throws ParseException, SQLException {\r
+        String t;\r
+    jj_consume_token(SET);\r
+    jj_consume_token(CONNECTION);\r
+    t = identifier();\r
+                if (!currentConnEnv.haveSession(t)) {\r
+                        {if (true) throw ijException.noSuchConnection(t);}\r
+                }\r
+                currentConnEnv.setCurrentSession(t);\r
+                theConnection = currentConnEnv.getConnection();\r
+                {if (true) return new ijConnectionResult(theConnection);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Handles showing current connections for the current environment, and\r
+ * SHOW TABLES/VIEWS/... commands.\r
+ */\r
+  final public ijResult ShowStatement() throws ParseException, SQLException {\r
+        String schema  = null;\r
+        String tblname = null;\r
+        String str     = null;\r
+        String[] types = null;\r
+        Token t = null;\r
+        Token v = null;\r
+    if (jj_2_81(2)) {\r
+      jj_consume_token(SHOW);\r
+      jj_consume_token(CONNECTIONS);\r
+                {if (true) return showConnectionsMethod(false);}\r
+    } else if (jj_2_82(2)) {\r
+      jj_consume_token(SHOW);\r
+      if (jj_2_71(2)) {\r
+        t = jj_consume_token(TABLES);\r
+      } else if (jj_2_72(2)) {\r
+        v = jj_consume_token(VIEWS);\r
+      } else if (jj_2_73(2)) {\r
+        jj_consume_token(SYNONYMS);\r
+      } else if (jj_2_74(2)) {\r
+        jj_consume_token(ALIASES);\r
+      } else {\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+      if (jj_2_75(2)) {\r
+        jj_consume_token(IN);\r
+        schema = identifier();\r
+      } else {\r
+        ;\r
+      }\r
+                if(t!=null) {\r
+                    types = new String[] { "TABLE", "SYSTEM TABLE" };\r
+                }\r
+                else if(v!=null)\r
+                        types = new String[] { "VIEW" };\r
+                else\r
+                        types = new String[] { "SYNONYM" };\r
+                {if (true) return showTables(schema, types);}\r
+    } else if (jj_2_83(2)) {\r
+      jj_consume_token(SHOW);\r
+      jj_consume_token(INDEXES);\r
+      if (jj_2_79(2)) {\r
+        if (jj_2_77(2)) {\r
+          jj_consume_token(IN);\r
+          schema = identifier();\r
+        } else if (jj_2_78(2)) {\r
+          jj_consume_token(FROM);\r
+          tblname = identifier();\r
+          if (jj_2_76(2)) {\r
+            jj_consume_token(PERIOD);\r
+            str = identifier();\r
+          } else {\r
+            ;\r
+          }\r
+        } else {\r
+          jj_consume_token(-1);\r
+          throw new ParseException();\r
+        }\r
+      } else {\r
+        ;\r
+      }\r
+                if(str != null) {\r
+                        // if absolute table reference given\r
+                        schema = tblname;\r
+                        tblname = str;\r
+                }\r
+\r
+                // If user specifies a table name, then assume schema is\r
+                // current schema. Note that getSelectedSchema may return\r
+                // null for some DBMSes.\r
+                if(schema == null && tblname != null)\r
+                        schema = util.getSelectedSchema(theConnection);\r
+                {if (true) return showIndexes(schema,tblname);}\r
+    } else if (jj_2_84(2)) {\r
+      jj_consume_token(SHOW);\r
+      jj_consume_token(PROCEDURES);\r
+      if (jj_2_80(2)) {\r
+        jj_consume_token(IN);\r
+        schema = identifier();\r
+      } else {\r
+        ;\r
+      }\r
+                {if (true) return showProcedures(schema);}\r
+    } else if (jj_2_85(2)) {\r
+      jj_consume_token(SHOW);\r
+      jj_consume_token(SCHEMAS);\r
+                {if (true) return showSchemas();}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * CommitStatement is simply COMMIT.\r
+ * It commits the current transation.\r
+ */\r
+  final public ijResult CommitStatement() throws ParseException, SQLException {\r
+    jj_consume_token(COMMIT);\r
+    if (jj_2_86(2)) {\r
+      jj_consume_token(WORK);\r
+    } else {\r
+      ;\r
+    }\r
+                haveConnection();\r
+                theConnection.commit();\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * RollbackStatement is simply ROLLBACK.\r
+ * It undoes the current transation.\r
+ */\r
+  final public ijResult RollbackStatement() throws ParseException, SQLException {\r
+    jj_consume_token(ROLLBACK);\r
+    if (jj_2_87(2)) {\r
+      jj_consume_token(WORK);\r
+    } else {\r
+      ;\r
+    }\r
+                haveConnection();\r
+                theConnection.rollback();\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * DisconnectStatement is simply DISCONNECT [ ALL | CURRENT | connectionName ]\r
+ * it ends the specified connection(s) and\r
+ * releases its statement resource.\r
+ * <p>\r
+ * If ALL is specified, it disconnects all available sessions\r
+ * in the current environment.\r
+ */\r
+  final public ijResult DisconnectStatement() throws ParseException, SQLException {\r
+        Token a = null;\r
+        String n = null;\r
+    jj_consume_token(DISCONNECT);\r
+    if (jj_2_91(2)) {\r
+      if (jj_2_88(2)) {\r
+        jj_consume_token(CURRENT);\r
+      } else if (jj_2_89(2)) {\r
+        a = jj_consume_token(ALL);\r
+      } else if (jj_2_90(2)) {\r
+        n = identifier();\r
+      } else {\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+    } else {\r
+      ;\r
+    }\r
+                if ( a == null ) {\r
+                        if (n == null) {\r
+                        // only remove the current session\r
+                            haveConnection();\r
+                            // Also need to release the session object\r
+                            currentConnEnv.removeCurrentSession();\r
+                            theConnection = null;\r
+                        }\r
+                        else {\r
+                            if (! currentConnEnv.haveSession(n))\r
+                                    {if (true) throw ijException.noSuchConnection(n);}\r
+                                currentConnEnv.removeSession(n);\r
+                            if (currentConnEnv.getSession() == null)\r
+                                    theConnection = null;\r
+                        }\r
+                } else {\r
+                        currentConnEnv.removeAllSessions();\r
+                        theConnection = null;\r
+                }\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult ExitStatement() throws ParseException, SQLException {\r
+    if (jj_2_92(2)) {\r
+      jj_consume_token(EXIT);\r
+                {if (true) return quit();}\r
+    } else if (jj_2_93(2)) {\r
+      jj_consume_token(QUIT);\r
+                {if (true) return quit();}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult IllegalStatementName() throws ParseException, SQLException {\r
+        Token s = null;\r
+    jj_consume_token(PREPARE);\r
+    jj_consume_token(PROCEDURE);\r
+    jj_consume_token(AS);\r
+    s = jj_consume_token(STRING);\r
+                // "procedure" is not allowed as a statement name. this is\r
+                // because "execute procedure" is a valid Foundation2000\r
+                // command\r
+                {if (true) throw ijException.illegalStatementName( "procedure" );}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult PrepareStatement() throws ParseException, SQLException {\r
+        Token t;\r
+        String i;\r
+        PreparedStatement ps;\r
+        String sVal;\r
+    jj_consume_token(PREPARE);\r
+    i = identifier();\r
+    jj_consume_token(AS);\r
+    t = jj_consume_token(STRING);\r
+                haveConnection();\r
+                sVal = stringValue(t.image);\r
+                ps = theConnection.prepareStatement(sVal);\r
+                JDBCDisplayUtil.checkNotNull(ps,"prepared statement");\r
+                currentConnEnv.getSession().addPreparedStatement(i,ps);\r
+\r
+                // all we want callers to see are the warnings.\r
+                SQLWarning w = ps.getWarnings();\r
+                ps.clearWarnings();\r
+                {if (true) return new ijWarningResult(w);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult GetCursorStatement() throws ParseException, SQLException {\r
+        haveConnection();\r
+        int scrollType = JDBC20Translation.TYPE_FORWARD_ONLY;\r
+        Token s;\r
+        Token scrolling = null;\r
+        Token withtoken = null;\r
+        int holdType = utilInstance.getHoldability(theConnection);\r
+        String c;\r
+        Statement st = null;\r
+        String sVal;\r
+        ResultSet rs = null;\r
+        SQLWarning warns;\r
+    jj_consume_token(GET);\r
+    if (jj_2_94(2)) {\r
+      scrolling = jj_consume_token(SCROLL);\r
+      scrollType = scrollType();\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_95(2)) {\r
+      withtoken = jj_consume_token(WITH);\r
+      holdType = holdType();\r
+    } else {\r
+      ;\r
+    }\r
+    jj_consume_token(CURSOR);\r
+    c = identifier();\r
+    jj_consume_token(AS);\r
+    s = jj_consume_token(STRING);\r
+                sVal = stringValue(s.image);\r
+                try {\r
+                        st = utilInstance.createStatement(theConnection, scrollType, holdType);\r
+                        JDBCDisplayUtil.checkNotNull(st,"cursor");\r
+                        st.setCursorName(c);\r
+                        rs = st.executeQuery(sVal);\r
+                        JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+                        Session sn = currentConnEnv.getSession();\r
+                        sn.addCursorStatement(c,st);\r
+                        sn.addCursor(c,rs);\r
+                } catch (SQLException e) {\r
+                        if (rs!=null) rs.close();\r
+                        if (st!=null) st.close();\r
+                        {if (true) throw e;}\r
+                }\r
+\r
+                // all we want callers to see are the warnings.\r
+                SQLWarning w1 = theConnection.getWarnings();\r
+                SQLWarning w2 = st.getWarnings();\r
+                SQLWarning w3 = rs.getWarnings();\r
+                theConnection.clearWarnings();\r
+                st.clearWarnings();\r
+                rs.clearWarnings();\r
+                warns = appendWarnings(w1,w2);\r
+                {if (true) return new ijWarningResult(appendWarnings(warns,w3));}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public int scrollType() throws ParseException, SQLException {\r
+    if (jj_2_96(2)) {\r
+      jj_consume_token(INSENSITIVE);\r
+                {if (true) return JDBC20Translation.TYPE_SCROLL_INSENSITIVE;}\r
+    } else if (jj_2_97(2)) {\r
+      jj_consume_token(SENSITIVE);\r
+                {if (true) return JDBC20Translation.TYPE_SCROLL_SENSITIVE;}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public int holdType() throws ParseException, SQLException {\r
+    if (jj_2_98(2)) {\r
+      jj_consume_token(HOLD);\r
+                {if (true) return JDBC30Translation.HOLD_CURSORS_OVER_COMMIT;}\r
+    } else if (jj_2_99(2)) {\r
+      jj_consume_token(NOHOLD);\r
+                {if (true) return JDBC30Translation.CLOSE_CURSORS_AT_COMMIT;}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult AbsoluteStatement() throws ParseException, SQLException {\r
+        int row;\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(ABSOLUTE);\r
+    row = intLiteral();\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.absolute(rs, row);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult RelativeStatement() throws ParseException, SQLException {\r
+        int row;\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(RELATIVE);\r
+    row = intLiteral();\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.relative(rs, row);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult BeforeFirstStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(BEFORE);\r
+    jj_consume_token(FIRST);\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.beforeFirst(rs);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult FirstStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(FIRST);\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.first(rs);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult NextStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(NEXT);\r
+    c = identifier();\r
+                haveConnection();\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return new ijRowResult(rs, rs.next());}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult AfterLastStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(AFTER);\r
+    jj_consume_token(LAST);\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.afterLast(rs);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult LastStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(LAST);\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.last(rs);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult PreviousStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+    jj_consume_token(PREVIOUS);\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+                {if (true) return utilInstance.previous(rs);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult GetCurrentRowNumber() throws ParseException, SQLException {\r
+        ResultSet rs;\r
+        String c;\r
+    jj_consume_token(GETCURRENTROWNUMBER);\r
+    c = identifier();\r
+                haveConnection();\r
+                // Verify that we have JDBC 2.0\r
+                Session s = currentConnEnv.getSession();\r
+                rs = (ResultSet) s.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+\r
+        LocalizedResource.OutputWriter().println(utilInstance.getCurrentRowNumber(rs));\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult CloseStatement() throws ParseException, SQLException {\r
+        String c;\r
+        ResultSet rs;\r
+        Statement s;\r
+    jj_consume_token(CLOSE);\r
+    c = identifier();\r
+                haveConnection();\r
+                Session sn = currentConnEnv.getSession();\r
+                rs = (ResultSet) sn.getCursor(c);\r
+                JDBCDisplayUtil.checkNotNull(rs,"cursor");\r
+                s = (Statement) sn.getCursorStatement(c);\r
+                JDBCDisplayUtil.checkNotNull(s,"cursor");\r
+                rs.close();\r
+                s.close();\r
+                sn.removeCursor(c);\r
+                sn.removeCursorStatement(c);\r
+\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Hack to get the grammar to leave a\r
+ * EXECUTE STATEMENT &lt;stmt&gt; alone.  Short\r
+ * circuit the ij EXECUTE built in.\r
+ */\r
+  final public ijResult JBMSPreparedStatementExec() throws ParseException, SQLException {\r
+        Token s = null;\r
+    jj_consume_token(EXECUTE);\r
+    jj_consume_token(STATEMENT);\r
+    s = jj_consume_token(STRING);\r
+                {if (true) return executeImmediate(stringValue(s.image));}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Hack to get the grammar to leave a\r
+ * EXECUTE PROCEDURE &lt;procSpec&gt; alone.  Short\r
+ * circuit the ij EXECUTE built in so that\r
+ * we can deploy ij against Foundation2000.\r
+ */\r
+  final public ijResult F2KExecuteProcedure() throws ParseException, SQLException {\r
+        Token s = null;\r
+    jj_consume_token(EXECUTE);\r
+    jj_consume_token(PROCEDURE);\r
+    s = jj_consume_token(STRING);\r
+                haveConnection();\r
+\r
+                Statement       aStatement = theConnection.createStatement();\r
+                String          text = "execute procedure " + s;\r
+\r
+                aStatement.execute( text );\r
+\r
+                {if (true) return new ijStatementResult( aStatement,true );}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Two forms of execute: immediate, with a string\r
+ * and prepared, with the id of a prepared statement.\r
+ * We expect the latter form will\r
+ * eventually support a USING clause to supply\r
+ * parameter values (that will be constants).\r
+ * No parameters yet, however.\r
+ * <p>\r
+ * Syntax:\r
+ *   EXECUTE statementSource [ USING statementSource] ;\r
+ *\r
+ *      statementSource is an identifier of a previously prepared statement\r
+ *      or a string containing SQL-J text.\r
+ */\r
+  final public ijResult ExecuteStatement() throws ParseException, SQLException {\r
+        String i = null;\r
+        Token s = null;\r
+        PreparedStatement ps;\r
+        String sVal = null;\r
+\r
+        String iUsing = null;\r
+        Token sUsing = null;\r
+        Token   usingObject = null;\r
+    jj_consume_token(EXECUTE);\r
+    if (jj_2_100(2)) {\r
+      i = identifier();\r
+    } else if (jj_2_101(2)) {\r
+      s = jj_consume_token(STRING);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    if (jj_2_104(2)) {\r
+      jj_consume_token(USING);\r
+      if (jj_2_102(2)) {\r
+        iUsing = identifier();\r
+      } else if (jj_2_103(2)) {\r
+        sUsing = jj_consume_token(STRING);\r
+      } else {\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+    } else {\r
+      ;\r
+    }\r
+            if (iUsing!=null || sUsing!=null) { // parameters in use\r
+                        String sUsingVal = null;\r
+                        PreparedStatement psUsing;\r
+                        SQLWarning warns = null;\r
+\r
+                        haveConnection();\r
+\r
+                        /*\r
+                               Steps:\r
+                               1. find or prepare the statement\r
+                               2. execute the using statement\r
+                               3. push the row of the using statement into the parameters\r
+                               4. execute the statement against those parameters\r
+                               5. clear the parameters\r
+                        */\r
+                        /*\r
+                               get the prepared statement\r
+                        */\r
+                        boolean closeWhenDone = false; // will we close the ps when done?\r
+                if (i!=null) {\r
+                                ps = (PreparedStatement) currentConnEnv.getSession().getPreparedStatement(i);\r
+                                JDBCDisplayUtil.checkNotNull(ps,"prepared statement "+i);\r
+                }\r
+                else { // (s!=null)\r
+                                sVal = stringValue(s.image);\r
+                                ps = theConnection.prepareStatement(sVal);\r
+                                closeWhenDone = true;\r
+                                JDBCDisplayUtil.checkNotNull(ps,"prepared statement");\r
+                                warns = appendWarnings(warns, ps.getWarnings());\r
+                                ps.clearWarnings();\r
+                }\r
+\r
+                        /*\r
+                               execute the using statement\r
+                        */\r
+                if (iUsing!=null) {\r
+                                psUsing = (PreparedStatement) currentConnEnv.getSession().getPreparedStatement(iUsing);\r
+                                JDBCDisplayUtil.checkNotNull(psUsing,"prepared statement "+iUsing);\r
+                }\r
+                else { // (sUsing!=null)\r
+                                sUsingVal = stringValue(sUsing.image);\r
+                                psUsing = theConnection.prepareStatement(sUsingVal);\r
+                                JDBCDisplayUtil.checkNotNull(psUsing,"prepared statement");\r
+                                warns = appendWarnings(warns, psUsing.getWarnings());\r
+                                psUsing.clearWarnings();\r
+                }\r
+\r
+                        ResultSet rsUsing;\r
+                        /*\r
+                               If the USING statement is not a query, we\r
+                               will not execute the statement; the number of\r
+                               rows controls the execution.\r
+                        */\r
+                        if (psUsing.execute()) {\r
+                                rsUsing = psUsing.getResultSet();\r
+\r
+                                /*\r
+                                       push the row of the using statement into the parameters\r
+                                */\r
+\r
+                                ResultSetMetaData rsmdUsing = rsUsing.getMetaData();\r
+                                int numCols = rsmdUsing.getColumnCount();\r
+\r
+                                /*\r
+                                       Insufficient or too many parameters will\r
+                                       be caught at the JDBC level, and halt execution.\r
+                                */\r
+                                boolean exec = false;\r
+\r
+                                /* Only do 1 next on rsUsing if autocommit is on,\r
+                                * since rsUsing will be closed when ps is closed.\r
+                                */\r
+                            boolean autoCommited = false;\r
+                                ijMultiResult result = new ijMultiResult(ps,rsUsing,closeWhenDone);\r
+\r
+//                             while (! autoCommited && rsUsing.next()) {\r
+//                                     // note the first time through\r
+//                                     if (!exec) {\r
+//                                             exec = true;\r
+//\r
+//                                             // send a warning if additional results may be lost\r
+//                                             if (theConnection.getAutoCommit()) {\r
+//                                                     // FIXME: currOut.println("IJ WARNING: Autocommit may close using result set");\r
+//                                                     autoCommited = true;\r
+//                                             }\r
+//                                     }\r
+//                                     for (int c=1; c<=numCols; c++) {\r
+//                                             if (usingObject == null)\r
+//                                             {\r
+//                                                     ps.setObject(c,rsUsing.getObject(c),\r
+//                                                             rsmdUsing.getColumnType(c));\r
+//                                             } \r
+//                                             else\r
+//                                             {\r
+//                                                     ps.setObject(c,rsUsing.getObject(c));\r
+//                                             }\r
+//                                     }\r
+//\r
+//                                     /*\r
+//                                             4. execute the statement against those parameters\r
+//                                      */\r
+//\r
+//                                     ps.execute();\r
+//                                     result.addStatementResult(ps);\r
+//\r
+//                                     /*\r
+//                                             5. clear the parameters\r
+//                                      */\r
+//                                     ps.clearParameters();\r
+//\r
+//                             }\r
+//                             if (!exec) {\r
+//                                     throw ijException.noUsingResults();\r
+//                             }\r
+//\r
+//                             if (! theConnection.getAutoCommit())\r
+//                             {\r
+//                                     rsUsing.close();\r
+//                             }\r
+//                             // REMIND: any way to look for more rsUsing rows if autoCommit?\r
+//                             // perhaps just document the behavior... \r
+\r
+                                {if (true) return result;}\r
+                        }\r
+                        else\r
+                                {if (true) throw ijException.noUsingResults();}\r
+                }\r
+                else { // no parameters in use\r
+                if (i!=null) {\r
+                                haveConnection();\r
+                                ps = (PreparedStatement) currentConnEnv.getSession().getPreparedStatement(i);\r
+                                JDBCDisplayUtil.checkNotNull(ps,"prepared statement "+i);\r
+                                ps.execute();\r
+\r
+                                {if (true) return new ijStatementResult(ps,false);}\r
+                }\r
+                else { // (s!=null)\r
+                            {if (true) return executeImmediate(stringValue(s.image));}\r
+                }\r
+            }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Async: like execute immediate, without using,\r
+ * but runs the statement in a separate thread, against\r
+ * the current connection.\r
+ * <p>\r
+ * Syntax:\r
+ *   ASYNC asyncName statementSource \r
+ *\r
+ *      statementSource is a string containing SQL-J text.\r
+ */\r
+  final public ijResult AsyncStatement() throws ParseException, SQLException {\r
+        Token s = null;\r
+        String n = null;\r
+    jj_consume_token(ASYNC);\r
+    n = identifier();\r
+    s = jj_consume_token(STRING);\r
+            {if (true) return executeAsync(stringValue(s.image), n);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Wait for: the second half of Async, waits for completion\r
+ * if needed and then supplies the result.  Only execute is done,\r
+ * not row fetching.\r
+ * <p>\r
+ * Syntax:\r
+ *   WAIT FOR asyncName \r
+ *\r
+ *      asyncName is a name used in an ASYNC statement previously\r
+ */\r
+  final public ijResult WaitForStatement() throws ParseException, SQLException {\r
+        Token s = null;\r
+        String n = null;\r
+    jj_consume_token(WAIT);\r
+    jj_consume_token(FOR);\r
+    n = identifier();\r
+                AsyncStatement as = currentConnEnv.getSession().getAsyncStatement(n);\r
+                if (as == null) {if (true) throw ijException.noSuchAsyncStatement(n);}\r
+                try {\r
+                    as.join(); // we wait for it to finish.\r
+                } catch (InterruptedException ie) {\r
+                        {if (true) throw ijException.waitInterrupted(ie);}\r
+                }\r
+                {if (true) return as.getResult();}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * RemoveStatement is REMOVE identifier. It identifies\r
+ * a previously prepared statement.  We would prefer a DROP\r
+ * syntax, but SQL-J is using that word and I want to point out\r
+ * that special processing will be needed to give that parser\r
+ * this parser's input for unrecognized text.\r
+ */\r
+  final public ijResult RemoveStatement() throws ParseException, SQLException {\r
+        String i;\r
+        PreparedStatement ps;\r
+    jj_consume_token(REMOVE);\r
+    i = identifier();\r
+                haveConnection();\r
+                Session s = currentConnEnv.getSession();\r
+                ps = (PreparedStatement) s.getPreparedStatement(i);\r
+                JDBCDisplayUtil.checkNotNull(ps,"prepared statement "+i);\r
+                ps.close();\r
+                s.removePreparedStatement(i);\r
+\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public ijResult RunStatement() throws ParseException, SQLException {\r
+        Token i;\r
+    Token r = null;\r
+        PreparedStatement ps;\r
+    jj_consume_token(RUN);\r
+    if (jj_2_105(2)) {\r
+      r = jj_consume_token(RESOURCE);\r
+    } else {\r
+      ;\r
+    }\r
+    i = jj_consume_token(STRING);\r
+                if (utilInstance==null) {if (true) return null;}\r
+            if (r == null)\r
+                        utilInstance.newInput(stringValue(i.image));\r
+                else\r
+            utilInstance.newResourceInput(stringValue(i.image));\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Autocommit lets you control this aspect of the connection.\r
+ * REMIND: should have a general way to set all connection attributes,\r
+ * this is a shortcut for immediate needs.\r
+ * <p>\r
+ * Syntax:\r
+ *   AUTOCOMMIT [ ON | OFF ] ;\r
+ */\r
+  final public ijResult AutocommitStatement() throws ParseException, SQLException {\r
+        Token on=null;\r
+    jj_consume_token(AUTOCOMMIT);\r
+    if (jj_2_106(2)) {\r
+      on = jj_consume_token(ON);\r
+    } else if (jj_2_107(2)) {\r
+      jj_consume_token(OFF);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+                haveConnection();\r
+                // REMIND: want to warn if unchanged?\r
+                theConnection.setAutoCommit((on==null?false:true));\r
+\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * By default, holdability is set to true for Connection objects. This syntax NOHOLDFORCONNECTION lets you set it to close cursors at commit.\r
+ * Syntax:\r
+ *   NOHOLDFORCONNECTION ;\r
+ */\r
+  final public ijResult NoHoldForConnectionStatement() throws ParseException, SQLException {\r
+        Token on=null;\r
+    jj_consume_token(NOHOLDFORCONNECTION);\r
+                haveConnection();\r
+                theConnection = utilInstance.setHoldability(theConnection, JDBC30Translation.CLOSE_CURSORS_AT_COMMIT);\r
+\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Localizeddisplay controls locale sensitive data representayion\r
+ * <p>\r
+ * Syntax:\r
+ *   LOCALIZEDDISPLAY [ ON | OFF ] ;\r
+ */\r
+  final public ijResult LocalizedDisplay() throws ParseException {\r
+        Token on=null;\r
+    jj_consume_token(LOCALIZEDDISPLAY);\r
+    if (jj_2_108(2)) {\r
+      on = jj_consume_token(ON);\r
+    } else if (jj_2_109(2)) {\r
+      jj_consume_token(OFF);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+                LocalizedResource.enableLocalization((on==null?false:true));\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * ReadOnly lets you control this aspect of the connection.\r
+ * REMIND: should have a general way to set all connection attributes,\r
+ * this is a shortcut for immediate needs.\r
+ * <p>\r
+ * Syntax:\r
+ *   READONLY [ ON | OFF ] ;\r
+ */\r
+  final public ijResult ReadOnlyStatement() throws ParseException, SQLException {\r
+        Token on=null;\r
+    jj_consume_token(READONLY);\r
+    if (jj_2_110(2)) {\r
+      on = jj_consume_token(ON);\r
+    } else if (jj_2_111(2)) {\r
+      jj_consume_token(OFF);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+                haveConnection();\r
+                theConnection.setReadOnly((on==null?false:true));\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Elapsedtime on causes ij to dump out the elapsed time it takes\r
+ * to run a user statement at the end of that statement.\r
+ * <p>\r
+ * Syntax:\r
+ *   ELAPSEDTIME [ ON | OFF ] ;\r
+ */\r
+  final public ijResult ElapsedTimeStatement() throws ParseException {\r
+        Token on=null;\r
+    jj_consume_token(ELAPSEDTIME);\r
+    if (jj_2_112(2)) {\r
+      on = jj_consume_token(ON);\r
+    } else if (jj_2_113(2)) {\r
+      jj_consume_token(OFF);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+                elapsedTime = (on != null);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * MaximumDisplayWidth EXACT_NUMERIC changes the maximum display width for\r
+ * java.lang.String to the specified EXACT_NUMERIC.\r
+ * This is only used by the console view.\r
+ * <p>\r
+ * Syntax:\r
+ *   MAXIMUMDISPLAYWIDTH INTEGER ;\r
+ */\r
+  final public ijResult MaximumDisplayWidthStatement() throws ParseException {\r
+        int       maxWidth;\r
+    jj_consume_token(MAXIMUMDISPLAYWIDTH);\r
+    maxWidth = intValue();\r
+                JDBCDisplayUtil.setMaxDisplayWidth(maxWidth);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public int intValue() throws ParseException {\r
+        Token t;\r
+    t = jj_consume_token(INTEGER);\r
+                {if (true) return Integer.parseInt(t.image);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * Bang lets you issue a system command using System.exec.\r
+ * <p>\r
+ * Syntax:\r
+ *   ! 'command to issue' ;\r
+ */\r
+  final public ijResult Bang() throws ParseException {\r
+        Token cmd=null;\r
+    jj_consume_token(BANG);\r
+    cmd = jj_consume_token(STRING);\r
+          ijResult result = null;\r
+          try {\r
+                Process p = Runtime.getRuntime().exec(stringValue(cmd.image));\r
+                LocalizedInput in = new LocalizedInput(p.getInputStream());\r
+                int c;\r
+                Vector v = new Vector();\r
+                StringBuffer output = new StringBuffer();\r
+                // echo output\r
+                while ((c = in.read()) != -1) {\r
+                        output.append((char)c);\r
+                }\r
+                in.close();\r
+                // echo errors\r
+                in = new LocalizedInput(p.getErrorStream());\r
+                // echo output\r
+                while ((c = in.read()) != -1) {\r
+                        output.append((char)c);\r
+                }\r
+                in.close();\r
+                v.addElement(output);\r
+                result = new ijVectorResult(v,null);\r
+                // wait for completion\r
+                try {\r
+                        p.waitFor();\r
+                } catch (InterruptedException e) {\r
+                        {if (true) throw ijException.bangException(e);}\r
+                }\r
+          } catch (IOException ioe) {\r
+                {if (true) throw ijException.bangException(ioe);}\r
+          }\r
+          {if (true) return result;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+       ExpectStatement is EXPECT [ FAIL ] {'String'}* END EXPECT\r
+       <p>\r
+       Will eventually detect the lines that the strings are without\r
+       special literals, but for now this is expedient (except for the\r
+       doubling of quotes...)\r
+       <p>\r
+       Used to test the previous statement's output. Note that ij must be\r
+       in "expect" mode to use this statement, otherwise it is just\r
+       ignored.  This is due to the overhead of tracking the prior statement's\r
+       output.\r
+ */\r
+  final public ijResult ExpectStatement() throws ParseException {\r
+        Token f = null;\r
+        Vector stringVector = new Vector();\r
+    jj_consume_token(EXPECT);\r
+    if (jj_2_114(2)) {\r
+      f = jj_consume_token(FAIL);\r
+    } else {\r
+      ;\r
+    }\r
+    StringList(stringVector);\r
+    jj_consume_token(END);\r
+    jj_consume_token(EXPECT);\r
+                if (!getExpect()) {if (true) return null;} // don't bother processing.\r
+\r
+                // FIXME\r
+\r
+                // Do the comparison of the string list to the prior rows of\r
+                // output, using a row-by-row perl-regex comparison.\r
+                boolean result = true;\r
+\r
+                // register the result and whether it should be true or false\r
+                // FIXME: how to find the expecter??\r
+                noteExpect(result, f==null);\r
+\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public void StringList(Vector v) throws ParseException {\r
+    StringItem(v);\r
+    label_1:\r
+    while (true) {\r
+      if (jj_2_115(2)) {\r
+        ;\r
+      } else {\r
+        break label_1;\r
+      }\r
+      StringItem(v);\r
+    }\r
+  }\r
+\r
+  final public void StringItem(Vector v) throws ParseException {\r
+        Token s;\r
+    s = jj_consume_token(STRING);\r
+                v.addElement(s);\r
+  }\r
+\r
+/**\r
+       Haven't included: ASYNC, !, EXPECT\r
+       Don't include: XA_*\r
+ **/\r
+  final public ijResult HelpStatement() throws ParseException {\r
+    jj_consume_token(HELP);\r
+                Vector v = new Vector();\r
+\r
+                StringTokenizer st = new StringTokenizer(LocalizedResource.getMessage("IJ_HelpText"), "\n");\r
+                while (st.hasMoreTokens()) {\r
+                    v.addElement(st.nextToken());\r
+                }\r
+\r
+                {if (true) return new ijVectorResult(v,null);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public String identifier() throws ParseException {\r
+        Token t;\r
+    t = jj_consume_token(IDENTIFIER);\r
+                // identifiers are case insensitive, so we map them up.\r
+                // ij doesn't recognize any use of delimited identifiers in its syntax.\r
+                {if (true) return (t.image.toUpperCase(Locale.ENGLISH));}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public int intLiteral() throws ParseException, SQLException {\r
+        String  sign = "";\r
+        Token   tok;\r
+    if (jj_2_116(2)) {\r
+      sign = sign();\r
+    } else {\r
+      ;\r
+    }\r
+    tok = jj_consume_token(INTEGER);\r
+                /*\r
+               ** The various java parse utilities can't handle leading +,\r
+               ** so only concatenate leading -.\r
+               */\r
+\r
+                String num = tok.image;\r
+\r
+                if (sign.equals("-"))\r
+                {\r
+                        num = sign.concat(num);\r
+                }\r
+\r
+                {if (true) return Integer.parseInt(num);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public Vector staticMethodName() throws ParseException, SQLException {\r
+        Vector  list = new Vector();\r
+    methodLeg(list);\r
+    label_2:\r
+    while (true) {\r
+      jj_consume_token(PERIOD);\r
+      methodLeg(list);\r
+      if (jj_2_117(2)) {\r
+        ;\r
+      } else {\r
+        break label_2;\r
+      }\r
+    }\r
+                {if (true) return list;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public void methodLeg(Vector list) throws ParseException, SQLException {\r
+        Token   id;\r
+    id = jj_consume_token(IDENTIFIER);\r
+                list.addElement( id.image );\r
+  }\r
+\r
+  final public String[] staticMethodArgs() throws ParseException, SQLException {\r
+        Vector          list = new Vector();\r
+        String[]        args;\r
+    jj_consume_token(LEFT_PAREN);\r
+    if (jj_2_119(2)) {\r
+      oneStaticArg(list);\r
+      label_3:\r
+      while (true) {\r
+        if (jj_2_118(2)) {\r
+          ;\r
+        } else {\r
+          break label_3;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        oneStaticArg(list);\r
+      }\r
+    } else {\r
+      ;\r
+    }\r
+    jj_consume_token(RIGHT_PAREN);\r
+                args = new String[ list.size() ];\r
+                list.copyInto( args );\r
+\r
+                {if (true) return args;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public void oneStaticArg(Vector list) throws ParseException, SQLException {\r
+        Token   tok;\r
+    tok = jj_consume_token(STRING);\r
+                list.addElement( stringValue( tok.image ) );\r
+  }\r
+\r
+/*\r
+ * <A NAME="sign">sign</A>\r
+ */\r
+  final public String sign() throws ParseException, SQLException {\r
+        Token   s;\r
+    if (jj_2_120(2)) {\r
+      s = jj_consume_token(PLUS_SIGN);\r
+                {if (true) return s.image;}\r
+    } else if (jj_2_121(2)) {\r
+      s = jj_consume_token(MINUS_SIGN);\r
+                {if (true) return s.image;}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+       Undocumented commands to help XA testing.\r
+\r
+       This is the grammer for the XA commands\r
+\r
+       &lt;XA_DATASOURCE&gt; 'dbname' ( &lt;CREATE&gt; | shutdown ) \r
+                - get a XADataSource whose database name is dbname and make that\r
+               XADataSource the current XADataSource\r
+\r
+       &lt;XA_CONNECT&gt;      [ &lt;USER&gt; 'user' ]\r
+                       [ &lt;PASSWORD&gt; 'password' ]\r
+                       [ &lt;AS&gt; xaconnid ] \r
+               - make an XAConnection using the current XADataSource and make\r
+               that XAConnection the current XAConnection.  If xaconnid is \r
+               given, then associate xaconnid with the XAConnection.  \r
+               (xaconnid not implemeneted)\r
+\r
+\r
+       &lt;XA_COMMIT&gt;  ( &lt;XA_1PHASE&gt; | &lt;XA_2PHASE&gt; ) xid\r
+               - commit a global transaction xid\r
+\r
+\r
+       &lt;XA_DISCONNECT&gt; [ xaconnid = identifier() ] \r
+               - disconnect an XAConnection.  If xaconnid is given, then\r
+               disconnect the XAConnection with the given xaconnid. \r
+               (xaconnid not implemeneted)\r
+\r
+\r
+       &lt;XA_END&gt; ( &lt;XA_SUSPEND&gt; | &lt;XA_SUCCESS&gt; | &lt;XA_FAIL&gt; ) xid\r
+               - dissociate a transaction from the current XAConnection or end\r
+               an already suspened one \r
+\r
+       &lt;XA_FORGET&gt; xid           - forget about a global transaction\r
+\r
+       &lt;XA_GETCONNECTION&gt;  [ &lt;AS&gt; connid ] \r
+               - get a Connection object from the current XAConnection.\r
+               If connid is given, then associate connid with the connection.\r
+               (connid not implemented)\r
+\r
+       &lt;XA_PREPARE&gt; xid  - prepare a global transaction\r
+\r
+       &lt;XA_RECOVER&gt; ( &lt;XA_NOFLAGS&gt; | &lt;XA_STARTRSCAN&gt; | &lt;XA_ENDRSCAN&gt; )\r
+               - return the list of in-doubt transactions\r
+\r
+       &lt;XA_ROLLBACK&gt; xid - rollback a global transaction\r
+\r
+       &lt;XA_START&gt; ( &lt;XA_NOFLAGS&gt; | &lt;XA_JOIN&gt; | &lt;XA_RESUME&gt; ) xid\r
+               - associate a transaction or start a new global\r
+               transaction with the current XAConnection.\r
+\r
+       The following is for testing other JDBC2.0 ext interface, DataSource\r
+       and ConnectionPoolDataSource.  Strictly speaking, these are not xa, but\r
+       their functionality will be lumped into xaHelper because these are here\r
+       only for testing purposes.\r
+\r
+       &lt;DATASOURCE&gt; 'dbname'     [ &lt;PROTOCOL&gt; 'protocol' ]\r
+                               [ &lt;USER&gt; 'user' ]\r
+                               [ &lt;PASSWORD&gt; 'password' ]\r
+                               [ &lt;AS&gt; n=identifier() ]\r
+               - get a data source whose database name is dbname and make that\r
+               DataSource the current DataSource.  If &lt;PROTOCOL&gt; is specified,\r
+               the DataSource may be remote.   Get a connection from that\r
+               dataSource and use the user/password if specified.\r
+\r
+       &lt;CP_DATASOURCE&gt; 'dbname' [ &lt;PROTOCOL&gt; 'protocol' ]\r
+               - get a connection pool data source whose database name is\r
+               dbname and make that DataSource the current CPDataSource.  \r
+               If &lt;PROTOCOL&gt; is specified, the DataSource may be\r
+               remote.\r
+\r
+       &lt;CP_CONNECT&gt;      [ &lt;USER&gt; 'user' ]\r
+                       [ &lt;PASSWORD&gt; 'password' ]\r
+                       [ &lt;AS&gt; cpconnid ]\r
+               - make a PooledConnection using the current CPDataSource and\r
+               make that PooledConnection the current PooledConnection.\r
+               If cpconnid is given, then associate cpconnid with the\r
+               PooledConnection. (cpconnid not implemented).\r
+\r
+       &lt;CP_GETCONNECTION&gt; [ &lt;AS&gt; connid ]\r
+               - get a Connection object from the current PooledConnection.\r
+               If connid is given, the associate connid with the connection.\r
+               (connid not implemented)\r
+\r
+       &lt;CP_DISCONNECT&gt; [  cpconnid = identifier() ] \r
+               - disconnect a PooledConnection.  If cpconnid is given, then\r
+               disconnect the PooledConnection with the given cpconnid. \r
+               (cpconnid not implemented)\r
+\r
+*/\r
+\r
+\r
+/**\r
+ * XA_DataSourceStatement is XA_DataSource 'dbname' ( create | shutdown )\r
+ * We new'ed an instance of XADataSource as the current DataSource and set its\r
+ * database name to dbname.\r
+ */\r
+  final public ijResult XA_DataSourceStatement() throws ParseException, SQLException {\r
+        Token dbname = null;\r
+        Token shut = null;\r
+        String create = null;\r
+    jj_consume_token(XA_DATASOURCE);\r
+    dbname = jj_consume_token(STRING);\r
+    if (jj_2_124(2)) {\r
+      if (jj_2_122(2)) {\r
+        shut = jj_consume_token(SHUTDOWN);\r
+      } else if (jj_2_123(2)) {\r
+        create = identifier();\r
+      } else {\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+    } else {\r
+      ;\r
+    }\r
+                xahelper.XADataSourceStatement(this, dbname, shut, create);\r
+\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_ConnectStatement is XA_CONNECT (&lt;AS&gt; connid)\r
+ * make a XAConnection using the currentXADataSource and make that XAConnection\r
+ * the current XAConnection.  If connid is given, then associate connid with\r
+ * the XAConnection.  This connid is not th xid.\r
+ */\r
+  final public ijResult XA_ConnectStatement() throws ParseException, SQLException {\r
+        Token userT = null;\r
+        Token passwordT = null;\r
+        String n = null;\r
+    jj_consume_token(XA_CONNECT);\r
+    if (jj_2_125(2)) {\r
+      jj_consume_token(USER);\r
+      userT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_126(2)) {\r
+      jj_consume_token(PASSWORD);\r
+      passwordT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_127(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                xahelper.XAConnectStatement(this, userT, passwordT, n);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_DisconnectStatement is XA_DISCONNECT [xaconnid = identifier()]\r
+ * disconnect the current XAConnection \r
+ * If xaconnid is given, then disconnect XAConnection with xaconnid (xaconnid\r
+ *     not implemented).\r
+ * \r
+ */\r
+  final public ijResult XA_DisconnectStatement() throws ParseException, SQLException {\r
+        String n = null;\r
+    jj_consume_token(XA_DISCONNECT);\r
+    if (jj_2_128(2)) {\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                xahelper.XADisconnectStatement(this, n);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_CommitStatement is XA_COMMIT [ XA_1PHASE | XA_2PHASE ] xid\r
+ * commits a global transaction xid\r
+ */\r
+  final public ijResult XA_CommitStatement() throws ParseException, SQLException {\r
+        Token onePhase=null;\r
+        Token twoPhase=null;\r
+        int xid = 0;\r
+    jj_consume_token(XA_COMMIT);\r
+    if (jj_2_129(2)) {\r
+      onePhase = jj_consume_token(XA_1PHASE);\r
+    } else if (jj_2_130(2)) {\r
+      twoPhase = jj_consume_token(XA_2PHASE);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    xid = intValue();\r
+                xahelper.CommitStatement(this, onePhase, twoPhase, xid);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_EndStatement is XA_END [ XA_SUSPEND | XA_SUCCESS | XA_FAIL] xid\r
+ * dissociates a transaction from the current XAConnection or end an already\r
+ * suspended one\r
+ */\r
+  final public ijResult XA_EndStatement() throws ParseException, SQLException {\r
+        int flag = 0;\r
+        int xid = 0;\r
+    jj_consume_token(XA_END);\r
+    flag = xatmflag();\r
+    xid = intValue();\r
+                xahelper.EndStatement(this, flag, xid);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_ForgetStatement is XA_FORGET xid\r
+ * forgets about a heuristically completed transaction\r
+ */\r
+  final public ijResult XA_ForgetStatement() throws ParseException, SQLException {\r
+        int xid = 0;\r
+    jj_consume_token(XA_FORGET);\r
+    xid = intValue();\r
+                xahelper.ForgetStatement(this, xid);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_GetConnectionStatement is XA_GETCONNECTION\r
+ * it gets a Connection from the currentXAConnection and uses that as the\r
+ * current connection \r
+ */\r
+  final public ijResult XA_GetConnectionStatement() throws ParseException, SQLException {\r
+        String n = "XA";\r
+    jj_consume_token(XA_GETCONNECTION);\r
+    if (jj_2_131(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                theConnection = xahelper.XAGetConnectionStatement(this, n);\r
+                currentConnEnv.addSession(theConnection, n);\r
+\r
+                {if (true) return new ijConnectionResult(theConnection);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_PrepareStatement is XA_PREPARE xid\r
+ * prepares a global transaction\r
+ */\r
+  final public ijResult XA_PrepareStatement() throws ParseException, SQLException {\r
+        int xid = 0;\r
+    jj_consume_token(XA_PREPARE);\r
+    xid = intValue();\r
+                xahelper.PrepareStatement(this, xid);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_RecoverStatement is XA_RECOVER flag\r
+ * displays the list of prepared transactions\r
+ */\r
+  final public ijResult XA_RecoverStatement() throws ParseException, SQLException {\r
+        int flag = 0;\r
+    jj_consume_token(XA_RECOVER);\r
+    flag = xatmflag();\r
+                {if (true) return xahelper.RecoverStatement(this, flag);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_RollbackStatement is XA_Rollback xid\r
+ * rolls back a global transaction\r
+ */\r
+  final public ijResult XA_RollbackStatement() throws ParseException, SQLException {\r
+        int xid = 0;\r
+    jj_consume_token(XA_ROLLBACK);\r
+    xid = intValue();\r
+                xahelper.RollbackStatement(this, xid);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * XA_StartStatement is XA_START [ XA_NOFLAGS | XA_JOIN | XA_RESUME ] xid\r
+ * start or associates a transaction with the current XAConnection\r
+ */\r
+  final public ijResult XA_StartStatement() throws ParseException, SQLException {\r
+        int flag = 0;\r
+        int xid = 0;\r
+    jj_consume_token(XA_START);\r
+    flag = xatmflag();\r
+    xid = intValue();\r
+                xahelper.StartStatement(this, flag, xid);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public int xatmflag() throws ParseException, SQLException {\r
+    if (jj_2_132(2)) {\r
+      jj_consume_token(XA_ENDRSCAN);\r
+                {if (true) return JDBC20Translation.XA_ENDRSCAN;}\r
+    } else if (jj_2_133(2)) {\r
+      jj_consume_token(XA_FAIL);\r
+                {if (true) return JDBC20Translation.XA_FAIL;}\r
+    } else if (jj_2_134(2)) {\r
+      jj_consume_token(XA_JOIN);\r
+                {if (true) return JDBC20Translation.XA_JOIN;}\r
+    } else if (jj_2_135(2)) {\r
+      jj_consume_token(XA_NOFLAGS);\r
+                {if (true) return JDBC20Translation.XA_NOFLAGS;}\r
+    } else if (jj_2_136(2)) {\r
+      jj_consume_token(XA_RESUME);\r
+                {if (true) return JDBC20Translation.XA_RESUME;}\r
+    } else if (jj_2_137(2)) {\r
+      jj_consume_token(XA_STARTRSCAN);\r
+                {if (true) return JDBC20Translation.XA_STARTRSCAN;}\r
+    } else if (jj_2_138(2)) {\r
+      jj_consume_token(XA_SUCCESS);\r
+                {if (true) return JDBC20Translation.XA_SUCCESS;}\r
+    } else if (jj_2_139(2)) {\r
+      jj_consume_token(XA_SUSPEND);\r
+                {if (true) return JDBC20Translation.XA_SUSPEND;}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * DataSourceStatement is \r
+ *     DataSource 'dbname' \r
+ *             [ &lt;PROTCOL&gt; 'protocol']\r
+ *             [ &lt;USER&gt; 'user' ]\r
+ *             [ &lt;PASSWORD&gt; 'password' ]\r
+ *             [ &lt;AS&gt; n=identifier() ]\r
+ *\r
+ * We new'ed an instance of DataSource as the current DataSource and set its\r
+ * database name to dbname.  Also get a connection\r
+ */\r
+  final public ijResult DataSourceStatement() throws ParseException, SQLException {\r
+        Token dbname = null;\r
+        Token protocol = null;\r
+        Token userT = null;\r
+        Token passwordT = null;\r
+        String n = null;\r
+    jj_consume_token(DATASOURCE);\r
+    dbname = jj_consume_token(STRING);\r
+    if (jj_2_140(2)) {\r
+      jj_consume_token(PROTOCOL);\r
+      protocol = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_141(2)) {\r
+      jj_consume_token(USER);\r
+      userT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_142(2)) {\r
+      jj_consume_token(PASSWORD);\r
+      passwordT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_143(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                theConnection = xahelper.DataSourceStatement(this, dbname, protocol,\r
+                        userT, passwordT, n);\r
+\r
+                {if (true) return addSession( theConnection, n );}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * CP_DataSourceStatement is\r
+ *     CP_DataSource 'dbname' [ &lt;PROTOCOL&gt; 'protocol' ]\r
+ *             - get a connection pool data source whose database name is\r
+ *             dbname and make that DataSource the current CPDataSource.  \r
+ *             If &lt;PROTOCOL&gt; is specified, the DataSource may be\r
+ *             remote.\r
+ */\r
+  final public ijResult CP_DataSourceStatement() throws ParseException, SQLException {\r
+        Token dbname = null;\r
+        Token protocol = null;\r
+    jj_consume_token(CP_DATASOURCE);\r
+    dbname = jj_consume_token(STRING);\r
+    if (jj_2_144(2)) {\r
+      jj_consume_token(PROTOCOL);\r
+      protocol = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+                xahelper.CPDataSourceStatement(this, dbname, protocol);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * CP_ConnectStatement is\r
+ *     &lt;CP_CONNECT&gt;      [ &lt;USER&gt; 'user' ]\r
+ *                     [ &lt;PASSWORD&gt; 'password' ]\r
+ *                     [ &lt;AS&gt; cpconnid ]\r
+ * make a PooledConnection using the current CPDataSource and\r
+ * make that PooledConnection the current PooledConnection.\r
+ * If cpconnid is given, then associate cpconnid with the\r
+ * PooledConnection. (cpconnid not implemented).\r
+ */\r
+  final public ijResult CP_ConnectStatement() throws ParseException, SQLException {\r
+        Token userT = null;\r
+        Token passwordT = null;\r
+        String n = null;\r
+    jj_consume_token(CP_CONNECT);\r
+    if (jj_2_145(2)) {\r
+      jj_consume_token(USER);\r
+      userT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_146(2)) {\r
+      jj_consume_token(PASSWORD);\r
+      passwordT = jj_consume_token(STRING);\r
+    } else {\r
+      ;\r
+    }\r
+    if (jj_2_147(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                xahelper.CPConnectStatement(this, userT, passwordT, n);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * CP_GetConnectionStatement is\r
+ *     &lt;CP_GETCONNECTION&gt; [ &lt;AS&gt; connid ]\r
+ * get a Connection object from the current PooledConnection.\r
+ * If connid is given, the associate connid with the connection.\r
+ * (connid not implemented)\r
+ */\r
+  final public ijResult CP_GetConnectionStatement() throws ParseException, SQLException {\r
+        String n = "Pooled";\r
+    jj_consume_token(CP_GETCONNECTION);\r
+    if (jj_2_148(2)) {\r
+      jj_consume_token(AS);\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                theConnection = xahelper.CPGetConnectionStatement(this, n);\r
+                currentConnEnv.addSession(theConnection, n);\r
+                {if (true) return new ijConnectionResult(theConnection);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+/**\r
+ * CP_DisconnectStatement is\r
+ *     &lt;CP_DISCONNECT&gt; [ cpconnid = identifier() ]\r
+ * disconnect a PooledConnection.  If cpconnid is given, then\r
+ * disconnect the PooledConnection with the given cpconnid. \r
+ * (cpconnid not implemented)\r
+ */\r
+  final public ijResult CP_DisconnectStatement() throws ParseException, SQLException {\r
+        String n = null;\r
+    jj_consume_token(CP_DISCONNECT);\r
+    if (jj_2_149(2)) {\r
+      n = identifier();\r
+    } else {\r
+      ;\r
+    }\r
+                xahelper.CPDisconnectStatement(this, n);\r
+                {if (true) return null;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public Properties attributeList() throws ParseException {\r
+        Properties properties = new Properties();\r
+        Token tok;\r
+        String value;\r
+    if (jj_2_151(2)) {\r
+      property(properties);\r
+      label_4:\r
+      while (true) {\r
+        if (jj_2_150(2)) {\r
+          ;\r
+        } else {\r
+          break label_4;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        property(properties);\r
+      }\r
+    } else {\r
+      ;\r
+    }\r
+                //properties.put(tok.image,value);\r
+                {if (true) return properties;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public void property(Properties properties) throws ParseException {\r
+        String key;\r
+        String value;\r
+    key = caseSensitiveIdentifierOrKeyword();\r
+    jj_consume_token(EQUALS_OPERATOR);\r
+    value = caseSensitiveIdentifierOrKeyword();\r
+                properties.put(key, value);\r
+  }\r
+\r
+  final public String caseSensitiveIdentifierOrKeyword() throws ParseException {\r
+        String value=null;\r
+        Token tok;\r
+    if (jj_2_152(2)) {\r
+      value = keyword();\r
+                {if (true) return value;}\r
+    } else if (jj_2_153(2)) {\r
+      tok = jj_consume_token(IDENTIFIER);\r
+                {if (true) return tok.image;}\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public String caseSensitiveIdentifier() throws ParseException {\r
+        Token tok;\r
+    tok = jj_consume_token(IDENTIFIER);\r
+                {if (true) return tok.image;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final public String keyword() throws ParseException {\r
+        Token tok;\r
+        String value= null;\r
+    if (jj_2_154(2)) {\r
+      tok = jj_consume_token(ABSOLUTE);\r
+    } else if (jj_2_155(2)) {\r
+      tok = jj_consume_token(AFTER);\r
+    } else if (jj_2_156(2)) {\r
+      tok = jj_consume_token(ALIASES);\r
+    } else if (jj_2_157(2)) {\r
+      tok = jj_consume_token(ALL);\r
+    } else if (jj_2_158(2)) {\r
+      tok = jj_consume_token(AS);\r
+    } else if (jj_2_159(2)) {\r
+      tok = jj_consume_token(ASYNC);\r
+    } else if (jj_2_160(2)) {\r
+      tok = jj_consume_token(ATTRIBUTES);\r
+    } else if (jj_2_161(2)) {\r
+      tok = jj_consume_token(AUTOCOMMIT);\r
+    } else if (jj_2_162(2)) {\r
+      tok = jj_consume_token(BANG);\r
+    } else if (jj_2_163(2)) {\r
+      tok = jj_consume_token(BEFORE);\r
+    } else if (jj_2_164(2)) {\r
+      tok = jj_consume_token(CLOSE);\r
+    } else if (jj_2_165(2)) {\r
+      tok = jj_consume_token(COMMIT);\r
+    } else if (jj_2_166(2)) {\r
+      tok = jj_consume_token(CONNECT);\r
+    } else if (jj_2_167(2)) {\r
+      tok = jj_consume_token(CONNECTION);\r
+    } else if (jj_2_168(2)) {\r
+      tok = jj_consume_token(CONNECTIONS);\r
+    } else if (jj_2_169(2)) {\r
+      tok = jj_consume_token(CURRENT);\r
+    } else if (jj_2_170(2)) {\r
+      tok = jj_consume_token(CURSOR);\r
+    } else if (jj_2_171(2)) {\r
+      tok = jj_consume_token(DESCRIBE);\r
+    } else if (jj_2_172(2)) {\r
+      tok = jj_consume_token(DISCONNECT);\r
+    } else if (jj_2_173(2)) {\r
+      tok = jj_consume_token(DRIVER);\r
+    } else if (jj_2_174(2)) {\r
+      tok = jj_consume_token(ELAPSEDTIME);\r
+    } else if (jj_2_175(2)) {\r
+      tok = jj_consume_token(END);\r
+    } else if (jj_2_176(2)) {\r
+      tok = jj_consume_token(EXECUTE);\r
+    } else if (jj_2_177(2)) {\r
+      tok = jj_consume_token(EXIT);\r
+    } else if (jj_2_178(2)) {\r
+      tok = jj_consume_token(EXPECT);\r
+    } else if (jj_2_179(2)) {\r
+      tok = jj_consume_token(FAIL);\r
+    } else if (jj_2_180(2)) {\r
+      tok = jj_consume_token(FIRST);\r
+    } else if (jj_2_181(2)) {\r
+      tok = jj_consume_token(FOR);\r
+    } else if (jj_2_182(2)) {\r
+      tok = jj_consume_token(FROM);\r
+    } else if (jj_2_183(2)) {\r
+      tok = jj_consume_token(GET);\r
+    } else if (jj_2_184(2)) {\r
+      tok = jj_consume_token(GETCURRENTROWNUMBER);\r
+    } else if (jj_2_185(2)) {\r
+      tok = jj_consume_token(HOLD);\r
+    } else if (jj_2_186(2)) {\r
+      tok = jj_consume_token(HELP);\r
+    } else if (jj_2_187(2)) {\r
+      tok = jj_consume_token(IN);\r
+    } else if (jj_2_188(2)) {\r
+      tok = jj_consume_token(INDEXES);\r
+    } else if (jj_2_189(2)) {\r
+      tok = jj_consume_token(INSENSITIVE);\r
+    } else if (jj_2_190(2)) {\r
+      tok = jj_consume_token(INTO);\r
+    } else if (jj_2_191(2)) {\r
+      tok = jj_consume_token(LAST);\r
+    } else if (jj_2_192(2)) {\r
+      tok = jj_consume_token(LOCALIZEDDISPLAY);\r
+    } else if (jj_2_193(2)) {\r
+      tok = jj_consume_token(MAXIMUMDISPLAYWIDTH);\r
+    } else if (jj_2_194(2)) {\r
+      tok = jj_consume_token(NAME);\r
+    } else if (jj_2_195(2)) {\r
+      tok = jj_consume_token(NEXT);\r
+    } else if (jj_2_196(2)) {\r
+      tok = jj_consume_token(NOHOLD);\r
+    } else if (jj_2_197(2)) {\r
+      tok = jj_consume_token(NOHOLDFORCONNECTION);\r
+    } else if (jj_2_198(2)) {\r
+      tok = jj_consume_token(OFF);\r
+    } else if (jj_2_199(2)) {\r
+      tok = jj_consume_token(ON);\r
+    } else if (jj_2_200(2)) {\r
+      tok = jj_consume_token(PASSWORD);\r
+    } else if (jj_2_201(2)) {\r
+      tok = jj_consume_token(PERIOD);\r
+    } else if (jj_2_202(2)) {\r
+      tok = jj_consume_token(PREPARE);\r
+    } else if (jj_2_203(2)) {\r
+      tok = jj_consume_token(PREVIOUS);\r
+    } else if (jj_2_204(2)) {\r
+      tok = jj_consume_token(PROCEDURE);\r
+    } else if (jj_2_205(2)) {\r
+      tok = jj_consume_token(PROCEDURES);\r
+    } else if (jj_2_206(2)) {\r
+      tok = jj_consume_token(PROPERTIES);\r
+    } else if (jj_2_207(2)) {\r
+      tok = jj_consume_token(PROTOCOL);\r
+    } else if (jj_2_208(2)) {\r
+      tok = jj_consume_token(QUIT);\r
+    } else if (jj_2_209(2)) {\r
+      tok = jj_consume_token(READONLY);\r
+    } else if (jj_2_210(2)) {\r
+      tok = jj_consume_token(RELATIVE);\r
+    } else if (jj_2_211(2)) {\r
+      tok = jj_consume_token(REMOVE);\r
+    } else if (jj_2_212(2)) {\r
+      tok = jj_consume_token(RESOURCE);\r
+    } else if (jj_2_213(2)) {\r
+      tok = jj_consume_token(ROLLBACK);\r
+    } else if (jj_2_214(2)) {\r
+      tok = jj_consume_token(RUN);\r
+    } else if (jj_2_215(2)) {\r
+      tok = jj_consume_token(TO);\r
+    } else if (jj_2_216(2)) {\r
+      tok = jj_consume_token(SCHEMAS);\r
+    } else if (jj_2_217(2)) {\r
+      tok = jj_consume_token(SCROLL);\r
+    } else if (jj_2_218(2)) {\r
+      tok = jj_consume_token(SENSITIVE);\r
+    } else if (jj_2_219(2)) {\r
+      tok = jj_consume_token(SET);\r
+    } else if (jj_2_220(2)) {\r
+      tok = jj_consume_token(SHOW);\r
+    } else if (jj_2_221(2)) {\r
+      tok = jj_consume_token(SHUTDOWN);\r
+    } else if (jj_2_222(2)) {\r
+      tok = jj_consume_token(STATEMENT);\r
+    } else if (jj_2_223(2)) {\r
+      tok = jj_consume_token(SYNONYMS);\r
+    } else if (jj_2_224(2)) {\r
+      tok = jj_consume_token(TABLES);\r
+    } else if (jj_2_225(2)) {\r
+      tok = jj_consume_token(USER);\r
+    } else if (jj_2_226(2)) {\r
+      tok = jj_consume_token(USING);\r
+    } else if (jj_2_227(2)) {\r
+      tok = jj_consume_token(VIEWS);\r
+    } else if (jj_2_228(2)) {\r
+      tok = jj_consume_token(WAIT);\r
+    } else if (jj_2_229(2)) {\r
+      tok = jj_consume_token(WITH);\r
+    } else if (jj_2_230(2)) {\r
+      tok = jj_consume_token(XA_1PHASE);\r
+    } else if (jj_2_231(2)) {\r
+      tok = jj_consume_token(XA_2PHASE);\r
+    } else if (jj_2_232(2)) {\r
+      tok = jj_consume_token(XA_DATASOURCE);\r
+    } else if (jj_2_233(2)) {\r
+      tok = jj_consume_token(XA_CONNECT);\r
+    } else if (jj_2_234(2)) {\r
+      tok = jj_consume_token(XA_COMMIT);\r
+    } else if (jj_2_235(2)) {\r
+      tok = jj_consume_token(XA_DISCONNECT);\r
+    } else if (jj_2_236(2)) {\r
+      tok = jj_consume_token(XA_END);\r
+    } else if (jj_2_237(2)) {\r
+      tok = jj_consume_token(XA_ENDRSCAN);\r
+    } else if (jj_2_238(2)) {\r
+      tok = jj_consume_token(XA_FAIL);\r
+    } else if (jj_2_239(2)) {\r
+      tok = jj_consume_token(XA_FORGET);\r
+    } else if (jj_2_240(2)) {\r
+      tok = jj_consume_token(XA_GETCONNECTION);\r
+    } else if (jj_2_241(2)) {\r
+      tok = jj_consume_token(XA_JOIN);\r
+    } else if (jj_2_242(2)) {\r
+      tok = jj_consume_token(XA_NOFLAGS);\r
+    } else if (jj_2_243(2)) {\r
+      tok = jj_consume_token(XA_PREPARE);\r
+    } else if (jj_2_244(2)) {\r
+      tok = jj_consume_token(XA_RECOVER);\r
+    } else if (jj_2_245(2)) {\r
+      tok = jj_consume_token(XA_RESUME);\r
+    } else if (jj_2_246(2)) {\r
+      tok = jj_consume_token(XA_ROLLBACK);\r
+    } else if (jj_2_247(2)) {\r
+      tok = jj_consume_token(XA_START);\r
+    } else if (jj_2_248(2)) {\r
+      tok = jj_consume_token(XA_STARTRSCAN);\r
+    } else if (jj_2_249(2)) {\r
+      tok = jj_consume_token(XA_SUCCESS);\r
+    } else if (jj_2_250(2)) {\r
+      tok = jj_consume_token(XA_SUSPEND);\r
+    } else if (jj_2_251(2)) {\r
+      tok = jj_consume_token(DATASOURCE);\r
+    } else if (jj_2_252(2)) {\r
+      tok = jj_consume_token(CP_DATASOURCE);\r
+    } else if (jj_2_253(2)) {\r
+      tok = jj_consume_token(CP_CONNECT);\r
+    } else if (jj_2_254(2)) {\r
+      tok = jj_consume_token(CP_GETCONNECTION);\r
+    } else if (jj_2_255(2)) {\r
+      tok = jj_consume_token(CP_DISCONNECT);\r
+    } else if (jj_2_256(2)) {\r
+      tok = jj_consume_token(WORK);\r
+    } else {\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+                {if (true) return tok.image;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  final private boolean jj_2_1(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_1(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(0, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_2(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_2(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(1, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_3(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_3(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(2, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_4(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_4(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(3, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_5(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_5(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(4, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_6(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_6(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(5, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_7(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_7(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(6, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_8(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_8(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(7, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_9(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_9(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(8, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_10(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_10(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(9, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_11(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_11(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(10, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_12(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_12(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(11, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_13(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_13(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(12, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_14(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_14(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(13, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_15(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_15(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(14, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_16(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_16(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(15, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_17(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_17(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(16, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_18(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_18(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(17, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_19(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_19(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(18, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_20(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_20(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(19, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_21(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_21(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(20, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_22(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_22(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(21, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_23(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_23(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(22, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_24(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_24(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(23, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_25(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_25(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(24, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_26(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_26(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(25, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_27(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_27(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(26, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_28(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_28(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(27, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_29(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_29(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(28, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_30(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_30(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(29, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_31(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_31(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(30, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_32(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_32(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(31, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_33(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_33(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(32, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_34(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_34(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(33, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_35(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_35(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(34, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_36(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_36(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(35, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_37(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_37(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(36, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_38(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_38(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(37, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_39(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_39(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(38, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_40(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_40(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(39, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_41(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_41(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(40, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_42(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_42(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(41, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_43(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_43(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(42, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_44(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_44(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(43, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_45(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_45(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(44, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_46(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_46(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(45, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_47(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_47(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(46, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_48(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_48(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(47, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_49(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_49(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(48, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_50(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_50(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(49, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_51(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_51(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(50, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_52(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_52(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(51, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_53(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_53(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(52, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_54(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_54(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(53, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_55(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_55(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(54, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_56(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_56(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(55, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_57(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_57(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(56, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_58(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_58(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(57, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_59(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_59(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(58, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_60(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_60(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(59, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_61(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_61(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(60, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_62(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_62(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(61, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_63(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_63(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(62, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_64(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_64(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(63, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_65(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_65(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(64, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_66(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_66(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(65, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_67(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_67(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(66, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_68(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_68(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(67, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_69(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_69(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(68, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_70(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_70(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(69, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_71(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_71(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(70, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_72(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_72(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(71, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_73(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_73(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(72, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_74(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_74(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(73, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_75(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_75(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(74, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_76(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_76(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(75, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_77(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_77(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(76, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_78(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_78(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(77, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_79(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_79(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(78, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_80(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_80(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(79, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_81(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_81(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(80, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_82(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_82(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(81, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_83(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_83(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(82, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_84(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_84(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(83, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_85(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_85(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(84, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_86(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_86(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(85, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_87(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_87(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(86, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_88(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_88(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(87, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_89(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_89(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(88, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_90(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_90(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(89, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_91(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_91(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(90, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_92(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_92(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(91, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_93(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_93(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(92, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_94(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_94(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(93, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_95(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_95(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(94, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_96(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_96(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(95, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_97(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_97(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(96, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_98(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_98(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(97, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_99(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_99(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(98, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_100(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_100(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(99, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_101(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_101(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(100, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_102(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_102(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(101, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_103(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_103(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(102, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_104(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_104(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(103, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_105(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_105(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(104, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_106(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_106(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(105, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_107(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_107(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(106, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_108(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_108(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(107, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_109(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_109(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(108, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_110(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_110(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(109, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_111(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_111(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(110, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_112(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_112(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(111, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_113(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_113(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(112, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_114(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_114(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(113, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_115(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_115(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(114, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_116(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_116(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(115, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_117(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_117(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(116, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_118(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_118(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(117, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_119(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_119(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(118, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_120(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_120(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(119, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_121(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_121(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(120, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_122(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_122(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(121, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_123(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_123(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(122, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_124(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_124(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(123, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_125(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_125(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(124, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_126(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_126(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(125, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_127(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_127(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(126, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_128(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_128(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(127, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_129(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_129(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(128, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_130(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_130(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(129, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_131(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_131(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(130, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_132(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_132(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(131, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_133(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_133(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(132, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_134(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_134(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(133, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_135(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_135(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(134, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_136(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_136(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(135, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_137(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_137(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(136, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_138(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_138(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(137, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_139(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_139(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(138, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_140(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_140(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(139, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_141(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_141(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(140, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_142(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_142(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(141, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_143(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_143(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(142, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_144(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_144(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(143, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_145(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_145(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(144, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_146(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_146(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(145, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_147(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_147(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(146, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_148(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_148(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(147, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_149(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_149(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(148, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_150(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_150(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(149, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_151(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_151(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(150, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_152(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_152(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(151, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_153(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_153(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(152, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_154(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_154(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(153, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_155(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_155(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(154, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_156(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_156(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(155, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_157(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_157(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(156, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_158(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_158(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(157, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_159(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_159(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(158, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_160(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_160(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(159, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_161(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_161(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(160, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_162(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_162(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(161, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_163(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_163(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(162, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_164(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_164(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(163, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_165(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_165(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(164, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_166(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_166(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(165, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_167(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_167(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(166, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_168(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_168(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(167, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_169(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_169(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(168, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_170(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_170(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(169, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_171(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_171(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(170, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_172(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_172(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(171, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_173(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_173(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(172, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_174(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_174(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(173, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_175(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_175(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(174, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_176(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_176(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(175, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_177(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_177(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(176, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_178(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_178(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(177, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_179(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_179(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(178, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_180(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_180(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(179, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_181(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_181(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(180, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_182(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_182(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(181, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_183(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_183(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(182, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_184(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_184(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(183, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_185(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_185(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(184, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_186(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_186(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(185, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_187(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_187(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(186, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_188(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_188(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(187, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_189(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_189(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(188, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_190(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_190(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(189, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_191(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_191(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(190, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_192(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_192(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(191, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_193(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_193(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(192, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_194(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_194(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(193, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_195(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_195(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(194, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_196(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_196(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(195, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_197(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_197(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(196, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_198(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_198(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(197, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_199(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_199(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(198, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_200(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_200(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(199, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_201(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_201(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(200, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_202(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_202(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(201, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_203(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_203(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(202, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_204(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_204(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(203, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_205(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_205(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(204, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_206(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_206(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(205, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_207(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_207(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(206, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_208(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_208(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(207, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_209(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_209(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(208, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_210(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_210(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(209, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_211(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_211(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(210, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_212(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_212(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(211, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_213(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_213(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(212, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_214(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_214(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(213, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_215(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_215(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(214, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_216(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_216(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(215, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_217(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_217(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(216, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_218(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_218(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(217, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_219(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_219(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(218, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_220(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_220(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(219, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_221(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_221(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(220, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_222(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_222(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(221, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_223(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_223(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(222, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_224(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_224(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(223, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_225(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_225(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(224, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_226(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_226(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(225, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_227(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_227(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(226, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_228(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_228(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(227, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_229(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_229(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(228, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_230(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_230(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(229, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_231(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_231(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(230, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_232(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_232(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(231, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_233(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_233(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(232, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_234(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_234(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(233, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_235(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_235(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(234, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_236(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_236(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(235, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_237(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_237(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(236, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_238(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_238(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(237, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_239(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_239(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(238, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_240(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_240(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(239, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_241(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_241(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(240, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_242(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_242(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(241, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_243(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_243(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(242, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_244(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_244(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(243, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_245(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_245(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(244, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_246(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_246(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(245, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_247(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_247(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(246, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_248(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_248(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(247, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_249(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_249(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(248, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_250(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_250(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(249, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_251(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_251(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(250, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_252(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_252(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(251, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_253(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_253(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(252, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_254(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_254(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(253, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_255(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_255(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(254, xla); }\r
+  }\r
+\r
+  final private boolean jj_2_256(int xla) {\r
+    jj_la = xla; jj_lastpos = jj_scanpos = token;\r
+    try { return !jj_3_256(); }\r
+    catch(LookaheadSuccess ls) { return true; }\r
+    finally { jj_save(255, xla); }\r
+  }\r
+\r
+  final private boolean jj_3_65() {\r
+    if (jj_scan_token(ATTRIBUTES)) return true;\r
+    if (jj_3R_63()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_62() {\r
+    if (jj_scan_token(PROTOCOL)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_61() {\r
+    if (jj_scan_token(STRING)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_62()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_63()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_64()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_65()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_66()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_59() {\r
+    if (jj_3R_62()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_21() {\r
+    if (jj_scan_token(EXECUTE)) return true;\r
+    if (jj_scan_token(PROCEDURE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_20() {\r
+    if (jj_scan_token(EXECUTE)) return true;\r
+    if (jj_scan_token(STATEMENT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_58() {\r
+    if (jj_3R_61()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_61() {\r
+    if (jj_scan_token(CONNECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_58()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_59()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_60() {\r
+    if (jj_scan_token(CONNECT)) return true;\r
+    if (jj_scan_token(TO)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_13() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_60()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_61()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_11() {\r
+    if (jj_scan_token(CLOSE)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_16() {\r
+    if (jj_scan_token(DRIVER)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_57() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_25() {\r
+    if (jj_scan_token(GETCURRENTROWNUMBER)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_121() {\r
+    if (jj_scan_token(MINUS_SIGN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_67() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_120()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_121()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_120() {\r
+    if (jj_scan_token(PLUS_SIGN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_118() {\r
+    if (jj_scan_token(COMMA)) return true;\r
+    if (jj_3R_69()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_35() {\r
+    if (jj_scan_token(PROTOCOL)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_34() {\r
+    if (jj_scan_token(PREVIOUS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_69() {\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_119() {\r
+    if (jj_3R_69()) return true;\r
+    Token xsp;\r
+    while (true) {\r
+      xsp = jj_scanpos;\r
+      if (jj_3_118()) { jj_scanpos = xsp; break; }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_28() {\r
+    if (jj_scan_token(LAST)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_55() {\r
+    if (jj_3R_58()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_54() {\r
+    if (jj_3R_57()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_53() {\r
+    if (jj_3R_56()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_52() {\r
+    if (jj_3R_55()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_51() {\r
+    if (jj_3R_54()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_50() {\r
+    if (jj_3R_53()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_117() {\r
+    if (jj_scan_token(PERIOD)) return true;\r
+    if (jj_3R_68()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_49() {\r
+    if (jj_3R_52()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_48() {\r
+    if (jj_3R_51()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_47() {\r
+    if (jj_3R_50()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_46() {\r
+    if (jj_3R_49()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_45() {\r
+    if (jj_3R_48()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_44() {\r
+    if (jj_3R_47()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_43() {\r
+    if (jj_3R_46()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_68() {\r
+    if (jj_scan_token(IDENTIFIER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_42() {\r
+    if (jj_3R_45()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_41() {\r
+    if (jj_3R_44()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_40() {\r
+    if (jj_3R_43()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_39() {\r
+    if (jj_3R_42()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_38() {\r
+    if (jj_3R_41()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_37() {\r
+    if (jj_3R_40()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_36() {\r
+    if (jj_3R_39()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_35() {\r
+    if (jj_3R_38()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_6() {\r
+    if (jj_scan_token(AFTER)) return true;\r
+    if (jj_scan_token(LAST)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_34() {\r
+    if (jj_3R_37()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_33() {\r
+    if (jj_3R_36()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_32() {\r
+    if (jj_3R_35()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_31() {\r
+    if (jj_3R_34()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_77() {\r
+    if (jj_3R_68()) return true;\r
+    Token xsp;\r
+    if (jj_3_117()) return true;\r
+    while (true) {\r
+      xsp = jj_scanpos;\r
+      if (jj_3_117()) { jj_scanpos = xsp; break; }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_30() {\r
+    if (jj_3R_33()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_29() {\r
+    if (jj_3R_32()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_28() {\r
+    if (jj_3R_31()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_27() {\r
+    if (jj_3R_30()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_26() {\r
+    if (jj_3R_29()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_25() {\r
+    if (jj_3R_28()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_24() {\r
+    if (jj_3R_27()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_23() {\r
+    if (jj_3R_26()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_22() {\r
+    if (jj_3R_25()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_21() {\r
+    if (jj_3R_24()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_20() {\r
+    if (jj_3R_23()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_19() {\r
+    if (jj_3R_22()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_18() {\r
+    if (jj_3R_21()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_17() {\r
+    if (jj_3R_20()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_16() {\r
+    if (jj_3R_19()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_15() {\r
+    if (jj_3R_19()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_31() {\r
+    if (jj_scan_token(NEXT)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_14() {\r
+    if (jj_3R_18()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_13() {\r
+    if (jj_3R_17()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_12() {\r
+    if (jj_3R_16()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_11() {\r
+    if (jj_3R_15()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_10() {\r
+    if (jj_3R_14()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_9() {\r
+    if (jj_3R_13()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_256() {\r
+    if (jj_scan_token(WORK)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_8() {\r
+    if (jj_3R_12()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_116() {\r
+    if (jj_3R_67()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_255() {\r
+    if (jj_scan_token(CP_DISCONNECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_7() {\r
+    if (jj_3R_11()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_254() {\r
+    if (jj_scan_token(CP_GETCONNECTION)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_72() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_116()) jj_scanpos = xsp;\r
+    if (jj_scan_token(INTEGER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_6() {\r
+    if (jj_3R_10()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_253() {\r
+    if (jj_scan_token(CP_CONNECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_5() {\r
+    if (jj_3R_9()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_252() {\r
+    if (jj_scan_token(CP_DATASOURCE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_4() {\r
+    if (jj_3R_8()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_251() {\r
+    if (jj_scan_token(DATASOURCE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_3() {\r
+    if (jj_3R_7()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_250() {\r
+    if (jj_scan_token(XA_SUSPEND)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_2() {\r
+    if (jj_3R_6()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_249() {\r
+    if (jj_scan_token(XA_SUCCESS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_1() {\r
+    if (jj_3R_5()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_248() {\r
+    if (jj_scan_token(XA_STARTRSCAN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_247() {\r
+    if (jj_scan_token(XA_START)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_246() {\r
+    if (jj_scan_token(XA_ROLLBACK)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_245() {\r
+    if (jj_scan_token(XA_RESUME)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_244() {\r
+    if (jj_scan_token(XA_RECOVER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_243() {\r
+    if (jj_scan_token(XA_PREPARE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_59() {\r
+    if (jj_3R_76()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_56() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    lookingAhead = true;\r
+    jj_semLA = getToken(1).kind == ROLLBACK &&\r
+                        (!(getToken(3).kind == TO || getToken(3).kind == SAVEPOINT));\r
+    lookingAhead = false;\r
+    if (!jj_semLA || jj_3R_59()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_1()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_2()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_3()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_4()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_5()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_6()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_7()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_8()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_9()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_10()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_11()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_12()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_13()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_14()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_15()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_16()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_17()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_18()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_19()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_20()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_21()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_22()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_23()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_24()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_25()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_26()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_27()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_28()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_29()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_30()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_31()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_32()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_33()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_34()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_35()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_36()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_37()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_38()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_39()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_40()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_41()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_42()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_43()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_44()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_45()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_46()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_47()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_48()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_49()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_50()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_51()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_52()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_53()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_54()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_55()) return true;\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_242() {\r
+    if (jj_scan_token(XA_NOFLAGS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_19() {\r
+    if (jj_scan_token(FIRST)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_241() {\r
+    if (jj_scan_token(XA_JOIN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_240() {\r
+    if (jj_scan_token(XA_GETCONNECTION)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_239() {\r
+    if (jj_scan_token(XA_FORGET)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_60() {\r
+    if (jj_scan_token(IDENTIFIER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_238() {\r
+    if (jj_scan_token(XA_FAIL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_237() {\r
+    if (jj_scan_token(XA_ENDRSCAN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_236() {\r
+    if (jj_scan_token(XA_END)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_235() {\r
+    if (jj_scan_token(XA_DISCONNECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_234() {\r
+    if (jj_scan_token(XA_COMMIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_233() {\r
+    if (jj_scan_token(XA_CONNECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_232() {\r
+    if (jj_scan_token(XA_DATASOURCE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_231() {\r
+    if (jj_scan_token(XA_2PHASE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_230() {\r
+    if (jj_scan_token(XA_1PHASE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_229() {\r
+    if (jj_scan_token(WITH)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_228() {\r
+    if (jj_scan_token(WAIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_227() {\r
+    if (jj_scan_token(VIEWS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_226() {\r
+    if (jj_scan_token(USING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_225() {\r
+    if (jj_scan_token(USER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_224() {\r
+    if (jj_scan_token(TABLES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_223() {\r
+    if (jj_scan_token(SYNONYMS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_222() {\r
+    if (jj_scan_token(STATEMENT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_221() {\r
+    if (jj_scan_token(SHUTDOWN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_10() {\r
+    if (jj_scan_token(BEFORE)) return true;\r
+    if (jj_scan_token(FIRST)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_220() {\r
+    if (jj_scan_token(SHOW)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_26() {\r
+    if (jj_scan_token(HELP)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_219() {\r
+    if (jj_scan_token(SET)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_218() {\r
+    if (jj_scan_token(SENSITIVE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_217() {\r
+    if (jj_scan_token(SCROLL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_216() {\r
+    if (jj_scan_token(SCHEMAS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_215() {\r
+    if (jj_scan_token(TO)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_214() {\r
+    if (jj_scan_token(RUN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_213() {\r
+    if (jj_scan_token(ROLLBACK)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_212() {\r
+    if (jj_scan_token(RESOURCE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_115() {\r
+    if (jj_3R_66()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_211() {\r
+    if (jj_scan_token(REMOVE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_210() {\r
+    if (jj_scan_token(RELATIVE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_209() {\r
+    if (jj_scan_token(READONLY)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_208() {\r
+    if (jj_scan_token(QUIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_207() {\r
+    if (jj_scan_token(PROTOCOL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_206() {\r
+    if (jj_scan_token(PROPERTIES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_205() {\r
+    if (jj_scan_token(PROCEDURES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_66() {\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_204() {\r
+    if (jj_scan_token(PROCEDURE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_203() {\r
+    if (jj_scan_token(PREVIOUS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_202() {\r
+    if (jj_scan_token(PREPARE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_201() {\r
+    if (jj_scan_token(PERIOD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_200() {\r
+    if (jj_scan_token(PASSWORD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_37() {\r
+    if (jj_scan_token(RELATIVE)) return true;\r
+    if (jj_3R_72()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_199() {\r
+    if (jj_scan_token(ON)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_198() {\r
+    if (jj_scan_token(OFF)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_197() {\r
+    if (jj_scan_token(NOHOLDFORCONNECTION)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_196() {\r
+    if (jj_scan_token(NOHOLD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_73() {\r
+    if (jj_3R_66()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_195() {\r
+    if (jj_scan_token(NEXT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_194() {\r
+    if (jj_scan_token(NAME)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_193() {\r
+    if (jj_scan_token(MAXIMUMDISPLAYWIDTH)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_192() {\r
+    if (jj_scan_token(LOCALIZEDDISPLAY)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_191() {\r
+    if (jj_scan_token(LAST)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_190() {\r
+    if (jj_scan_token(INTO)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_189() {\r
+    if (jj_scan_token(INSENSITIVE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_188() {\r
+    if (jj_scan_token(INDEXES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_187() {\r
+    if (jj_scan_token(IN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_186() {\r
+    if (jj_scan_token(HELP)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_185() {\r
+    if (jj_scan_token(HOLD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_184() {\r
+    if (jj_scan_token(GETCURRENTROWNUMBER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_114() {\r
+    if (jj_scan_token(FAIL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_183() {\r
+    if (jj_scan_token(GET)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_182() {\r
+    if (jj_scan_token(FROM)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_181() {\r
+    if (jj_scan_token(FOR)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_180() {\r
+    if (jj_scan_token(FIRST)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_179() {\r
+    if (jj_scan_token(FAIL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_178() {\r
+    if (jj_scan_token(EXPECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_5() {\r
+    if (jj_scan_token(ABSOLUTE)) return true;\r
+    if (jj_3R_72()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_177() {\r
+    if (jj_scan_token(EXIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_176() {\r
+    if (jj_scan_token(EXECUTE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_175() {\r
+    if (jj_scan_token(END)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_174() {\r
+    if (jj_scan_token(ELAPSEDTIME)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_173() {\r
+    if (jj_scan_token(DRIVER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_23() {\r
+    if (jj_scan_token(EXPECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_114()) jj_scanpos = xsp;\r
+    if (jj_3R_73()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_172() {\r
+    if (jj_scan_token(DISCONNECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_171() {\r
+    if (jj_scan_token(DESCRIBE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_170() {\r
+    if (jj_scan_token(CURSOR)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_169() {\r
+    if (jj_scan_token(CURRENT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_168() {\r
+    if (jj_scan_token(CONNECTIONS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_167() {\r
+    if (jj_scan_token(CONNECTION)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_166() {\r
+    if (jj_scan_token(CONNECT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_165() {\r
+    if (jj_scan_token(COMMIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_164() {\r
+    if (jj_scan_token(CLOSE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_163() {\r
+    if (jj_scan_token(BEFORE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_162() {\r
+    if (jj_scan_token(BANG)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_99() {\r
+    if (jj_scan_token(NOHOLD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_161() {\r
+    if (jj_scan_token(AUTOCOMMIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_160() {\r
+    if (jj_scan_token(ATTRIBUTES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_159() {\r
+    if (jj_scan_token(ASYNC)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_158() {\r
+    if (jj_scan_token(AS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_157() {\r
+    if (jj_scan_token(ALL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_65() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_98()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_99()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_98() {\r
+    if (jj_scan_token(HOLD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_156() {\r
+    if (jj_scan_token(ALIASES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_155() {\r
+    if (jj_scan_token(AFTER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_154() {\r
+    if (jj_scan_token(ABSOLUTE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_71() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_154()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_155()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_156()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_157()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_158()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_159()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_160()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_161()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_162()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_163()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_164()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_165()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_166()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_167()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_168()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_169()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_170()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_171()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_172()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_173()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_174()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_175()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_176()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_177()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_178()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_179()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_180()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_181()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_182()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_183()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_184()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_185()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_186()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_187()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_188()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_189()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_190()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_191()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_192()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_193()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_194()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_195()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_196()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_197()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_198()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_199()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_200()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_201()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_202()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_203()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_204()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_205()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_206()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_207()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_208()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_209()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_210()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_211()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_212()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_213()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_214()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_215()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_216()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_217()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_218()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_219()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_220()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_221()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_222()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_223()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_224()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_225()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_226()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_227()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_228()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_229()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_230()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_231()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_232()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_233()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_234()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_235()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_236()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_237()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_238()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_239()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_240()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_241()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_242()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_243()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_244()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_245()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_246()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_247()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_248()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_249()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_250()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_251()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_252()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_253()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_254()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_255()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_256()) return true;\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_97() {\r
+    if (jj_scan_token(SENSITIVE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_64() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_96()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_97()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_96() {\r
+    if (jj_scan_token(INSENSITIVE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_153() {\r
+    if (jj_scan_token(IDENTIFIER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_78() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_152()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_153()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_152() {\r
+    if (jj_3R_71()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_9() {\r
+    if (jj_scan_token(BANG)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_150() {\r
+    if (jj_scan_token(COMMA)) return true;\r
+    if (jj_3R_70()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_94() {\r
+    if (jj_scan_token(SCROLL)) return true;\r
+    if (jj_3R_64()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_70() {\r
+    if (jj_3R_78()) return true;\r
+    if (jj_scan_token(EQUALS_OPERATOR)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_95() {\r
+    if (jj_scan_token(WITH)) return true;\r
+    if (jj_3R_65()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_24() {\r
+    if (jj_scan_token(GET)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_94()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_95()) jj_scanpos = xsp;\r
+    if (jj_scan_token(CURSOR)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_74() {\r
+    if (jj_scan_token(INTEGER)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_151() {\r
+    if (jj_3R_70()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_63() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_151()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_149() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_30() {\r
+    if (jj_scan_token(MAXIMUMDISPLAYWIDTH)) return true;\r
+    if (jj_3R_74()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_58() {\r
+    if (jj_scan_token(CP_DISCONNECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_149()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_148() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_33() {\r
+    if (jj_scan_token(PREPARE)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_113() {\r
+    if (jj_scan_token(OFF)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_112() {\r
+    if (jj_scan_token(ON)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_17() {\r
+    if (jj_scan_token(ELAPSEDTIME)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_112()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_113()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_57() {\r
+    if (jj_scan_token(CP_GETCONNECTION)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_148()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_27() {\r
+    if (jj_scan_token(PREPARE)) return true;\r
+    if (jj_scan_token(PROCEDURE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_147() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_146() {\r
+    if (jj_scan_token(PASSWORD)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_145() {\r
+    if (jj_scan_token(USER)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_111() {\r
+    if (jj_scan_token(OFF)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_110() {\r
+    if (jj_scan_token(ON)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_36() {\r
+    if (jj_scan_token(READONLY)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_110()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_111()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_90() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_144() {\r
+    if (jj_scan_token(PROTOCOL)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_93() {\r
+    if (jj_scan_token(QUIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_92() {\r
+    if (jj_scan_token(EXIT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_22() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_92()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_93()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_56() {\r
+    if (jj_scan_token(CP_CONNECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_145()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_146()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_147()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_89() {\r
+    if (jj_scan_token(ALL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_109() {\r
+    if (jj_scan_token(OFF)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_108() {\r
+    if (jj_scan_token(ON)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_88() {\r
+    if (jj_scan_token(CURRENT)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_91() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_88()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_89()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_90()) return true;\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_29() {\r
+    if (jj_scan_token(LOCALIZEDDISPLAY)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_108()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_109()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_143() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_142() {\r
+    if (jj_scan_token(PASSWORD)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_141() {\r
+    if (jj_scan_token(USER)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_140() {\r
+    if (jj_scan_token(PROTOCOL)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_55() {\r
+    if (jj_scan_token(CP_DATASOURCE)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_15() {\r
+    if (jj_scan_token(DISCONNECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_91()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_32() {\r
+    if (jj_scan_token(NOHOLDFORCONNECTION)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_87() {\r
+    if (jj_scan_token(WORK)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_54() {\r
+    if (jj_scan_token(DATASOURCE)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_76() {\r
+    if (jj_scan_token(ROLLBACK)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_87()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_107() {\r
+    if (jj_scan_token(OFF)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_106() {\r
+    if (jj_scan_token(ON)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_7() {\r
+    if (jj_scan_token(AUTOCOMMIT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_106()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_107()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_86() {\r
+    if (jj_scan_token(WORK)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_76() {\r
+    if (jj_scan_token(PERIOD)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_12() {\r
+    if (jj_scan_token(COMMIT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_86()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_105() {\r
+    if (jj_scan_token(RESOURCE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_74() {\r
+    if (jj_scan_token(ALIASES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_139() {\r
+    if (jj_scan_token(XA_SUSPEND)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_80() {\r
+    if (jj_scan_token(IN)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_138() {\r
+    if (jj_scan_token(XA_SUCCESS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_39() {\r
+    if (jj_scan_token(RUN)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_105()) jj_scanpos = xsp;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_85() {\r
+    if (jj_scan_token(SHOW)) return true;\r
+    if (jj_scan_token(SCHEMAS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_137() {\r
+    if (jj_scan_token(XA_STARTRSCAN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_84() {\r
+    if (jj_scan_token(SHOW)) return true;\r
+    if (jj_scan_token(PROCEDURES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_73() {\r
+    if (jj_scan_token(SYNONYMS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_136() {\r
+    if (jj_scan_token(XA_RESUME)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_78() {\r
+    if (jj_scan_token(FROM)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_79() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_77()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_78()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_77() {\r
+    if (jj_scan_token(IN)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_135() {\r
+    if (jj_scan_token(XA_NOFLAGS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_72() {\r
+    if (jj_scan_token(VIEWS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_134() {\r
+    if (jj_scan_token(XA_JOIN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_38() {\r
+    if (jj_scan_token(REMOVE)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_83() {\r
+    if (jj_scan_token(SHOW)) return true;\r
+    if (jj_scan_token(INDEXES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_133() {\r
+    if (jj_scan_token(XA_FAIL)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_75() {\r
+    if (jj_scan_token(IN)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_75() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_132()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_133()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_134()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_135()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_136()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_137()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_138()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_139()) return true;\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_132() {\r
+    if (jj_scan_token(XA_ENDRSCAN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_71() {\r
+    if (jj_scan_token(TABLES)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_41() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_81()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_82()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_83()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_84()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_85()) return true;\r
+    }\r
+    }\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_82() {\r
+    if (jj_scan_token(SHOW)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_71()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_72()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_73()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_74()) return true;\r
+    }\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_81() {\r
+    if (jj_scan_token(SHOW)) return true;\r
+    if (jj_scan_token(CONNECTIONS)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_53() {\r
+    if (jj_scan_token(XA_START)) return true;\r
+    if (jj_3R_75()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_42() {\r
+    if (jj_scan_token(WAIT)) return true;\r
+    if (jj_scan_token(FOR)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_52() {\r
+    if (jj_scan_token(XA_ROLLBACK)) return true;\r
+    if (jj_3R_74()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_70() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_40() {\r
+    if (jj_scan_token(SET)) return true;\r
+    if (jj_scan_token(CONNECTION)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_8() {\r
+    if (jj_scan_token(ASYNC)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_51() {\r
+    if (jj_scan_token(XA_RECOVER)) return true;\r
+    if (jj_3R_75()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_131() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_50() {\r
+    if (jj_scan_token(XA_PREPARE)) return true;\r
+    if (jj_3R_74()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_47() {\r
+    if (jj_scan_token(XA_GETCONNECTION)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_131()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_62() {\r
+    if (jj_3R_77()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_49() {\r
+    if (jj_scan_token(XA_FORGET)) return true;\r
+    if (jj_3R_74()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_130() {\r
+    if (jj_scan_token(XA_2PHASE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_48() {\r
+    if (jj_scan_token(XA_END)) return true;\r
+    if (jj_3R_75()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_129() {\r
+    if (jj_scan_token(XA_1PHASE)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_69() {\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_68() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_67() {\r
+    if (jj_3R_60()) return true;\r
+    if (jj_scan_token(PERIOD)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_14() {\r
+    if (jj_scan_token(DESCRIBE)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_67()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_68()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_69()) return true;\r
+    }\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_45() {\r
+    if (jj_scan_token(XA_COMMIT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_129()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_130()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_128() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_46() {\r
+    if (jj_scan_token(XA_DISCONNECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_128()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_127() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_126() {\r
+    if (jj_scan_token(PASSWORD)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_125() {\r
+    if (jj_scan_token(USER)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_123() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_103() {\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_44() {\r
+    if (jj_scan_token(XA_CONNECT)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_125()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_126()) jj_scanpos = xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_127()) jj_scanpos = xsp;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_102() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_122() {\r
+    if (jj_scan_token(SHUTDOWN)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_124() {\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_122()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_123()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_104() {\r
+    if (jj_scan_token(USING)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_102()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_103()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_101() {\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_100() {\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_66() {\r
+    if (jj_scan_token(AS)) return true;\r
+    if (jj_3R_60()) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_18() {\r
+    if (jj_scan_token(EXECUTE)) return true;\r
+    Token xsp;\r
+    xsp = jj_scanpos;\r
+    if (jj_3_100()) {\r
+    jj_scanpos = xsp;\r
+    if (jj_3_101()) return true;\r
+    }\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_64() {\r
+    if (jj_scan_token(PASSWORD)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3_63() {\r
+    if (jj_scan_token(USER)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  final private boolean jj_3R_43() {\r
+    if (jj_scan_token(XA_DATASOURCE)) return true;\r
+    if (jj_scan_token(STRING)) return true;\r
+    return false;\r
+  }\r
+\r
+  public ijTokenManager token_source;\r
+  public Token token, jj_nt;\r
+  private Token jj_scanpos, jj_lastpos;\r
+  private int jj_la;\r
+  public boolean lookingAhead = false;\r
+  private boolean jj_semLA;\r
+  private int jj_gen;\r
+  final private int[] jj_la1 = new int[0];\r
+  static private int[] jj_la1_0;\r
+  static private int[] jj_la1_1;\r
+  static private int[] jj_la1_2;\r
+  static private int[] jj_la1_3;\r
+  static {\r
+      jj_la1_0();\r
+      jj_la1_1();\r
+      jj_la1_2();\r
+      jj_la1_3();\r
+   }\r
+   private static void jj_la1_0() {\r
+      jj_la1_0 = new int[] {};\r
+   }\r
+   private static void jj_la1_1() {\r
+      jj_la1_1 = new int[] {};\r
+   }\r
+   private static void jj_la1_2() {\r
+      jj_la1_2 = new int[] {};\r
+   }\r
+   private static void jj_la1_3() {\r
+      jj_la1_3 = new int[] {};\r
+   }\r
+  final private JJCalls[] jj_2_rtns = new JJCalls[256];\r
+  private boolean jj_rescan = false;\r
+  private int jj_gc = 0;\r
+\r
+  public ij(CharStream stream) {\r
+    token_source = new ijTokenManager(stream);\r
+    token = new Token();\r
+    token.next = jj_nt = token_source.getNextToken();\r
+    jj_gen = 0;\r
+    for (int i = 0; i < 0; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();\r
+  }\r
+\r
+  public void ReInit(CharStream stream) {\r
+    token_source.ReInit(stream);\r
+    token = new Token();\r
+    token.next = jj_nt = token_source.getNextToken();\r
+    jj_gen = 0;\r
+    for (int i = 0; i < 0; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();\r
+  }\r
+\r
+  public ij(ijTokenManager tm) {\r
+    token_source = tm;\r
+    token = new Token();\r
+    token.next = jj_nt = token_source.getNextToken();\r
+    jj_gen = 0;\r
+    for (int i = 0; i < 0; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();\r
+  }\r
+\r
+  public void ReInit(ijTokenManager tm) {\r
+    token_source = tm;\r
+    token = new Token();\r
+    token.next = jj_nt = token_source.getNextToken();\r
+    jj_gen = 0;\r
+    for (int i = 0; i < 0; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();\r
+  }\r
+\r
+  final private Token jj_consume_token(int kind) throws ParseException {\r
+    Token oldToken = token;\r
+    if ((token = jj_nt).next != null) jj_nt = jj_nt.next;\r
+    else jj_nt = jj_nt.next = token_source.getNextToken();\r
+    if (token.kind == kind) {\r
+      jj_gen++;\r
+      if (++jj_gc > 100) {\r
+        jj_gc = 0;\r
+        for (int i = 0; i < jj_2_rtns.length; i++) {\r
+          JJCalls c = jj_2_rtns[i];\r
+          while (c != null) {\r
+            if (c.gen < jj_gen) c.first = null;\r
+            c = c.next;\r
+          }\r
+        }\r
+      }\r
+      return token;\r
+    }\r
+    jj_nt = token;\r
+    token = oldToken;\r
+    jj_kind = kind;\r
+    throw generateParseException();\r
+  }\r
+\r
+  static private final class LookaheadSuccess extends java.lang.Error { }\r
+  final private LookaheadSuccess jj_ls = new LookaheadSuccess();\r
+  final private boolean jj_scan_token(int kind) {\r
+    if (jj_scanpos == jj_lastpos) {\r
+      jj_la--;\r
+      if (jj_scanpos.next == null) {\r
+        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();\r
+      } else {\r
+        jj_lastpos = jj_scanpos = jj_scanpos.next;\r
+      }\r
+    } else {\r
+      jj_scanpos = jj_scanpos.next;\r
+    }\r
+    if (jj_rescan) {\r
+      int i = 0; Token tok = token;\r
+      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }\r
+      if (tok != null) jj_add_error_token(kind, i);\r
+    }\r
+    if (jj_scanpos.kind != kind) return true;\r
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;\r
+    return false;\r
+  }\r
+\r
+  final public Token getNextToken() {\r
+    if ((token = jj_nt).next != null) jj_nt = jj_nt.next;\r
+    else jj_nt = jj_nt.next = token_source.getNextToken();\r
+    jj_gen++;\r
+    return token;\r
+  }\r
+\r
+  final public Token getToken(int index) {\r
+    Token t = lookingAhead ? jj_scanpos : token;\r
+    for (int i = 0; i < index; i++) {\r
+      if (t.next != null) t = t.next;\r
+      else t = t.next = token_source.getNextToken();\r
+    }\r
+    return t;\r
+  }\r
+\r
+  private java.util.Vector jj_expentries = new java.util.Vector();\r
+  private int[] jj_expentry;\r
+  private int jj_kind = -1;\r
+  private int[] jj_lasttokens = new int[100];\r
+  private int jj_endpos;\r
+\r
+  private void jj_add_error_token(int kind, int pos) {\r
+    if (pos >= 100) return;\r
+    if (pos == jj_endpos + 1) {\r
+      jj_lasttokens[jj_endpos++] = kind;\r
+    } else if (jj_endpos != 0) {\r
+      jj_expentry = new int[jj_endpos];\r
+      for (int i = 0; i < jj_endpos; i++) {\r
+        jj_expentry[i] = jj_lasttokens[i];\r
+      }\r
+      boolean exists = false;\r
+      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {\r
+        int[] oldentry = (int[])(e.nextElement());\r
+        if (oldentry.length == jj_expentry.length) {\r
+          exists = true;\r
+          for (int i = 0; i < jj_expentry.length; i++) {\r
+            if (oldentry[i] != jj_expentry[i]) {\r
+              exists = false;\r
+              break;\r
+            }\r
+          }\r
+          if (exists) break;\r
+        }\r
+      }\r
+      if (!exists) jj_expentries.addElement(jj_expentry);\r
+      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;\r
+    }\r
+  }\r
+\r
+  public ParseException generateParseException() {\r
+    jj_expentries.removeAllElements();\r
+    boolean[] la1tokens = new boolean[125];\r
+    for (int i = 0; i < 125; i++) {\r
+      la1tokens[i] = false;\r
+    }\r
+    if (jj_kind >= 0) {\r
+      la1tokens[jj_kind] = true;\r
+      jj_kind = -1;\r
+    }\r
+    for (int i = 0; i < 0; i++) {\r
+      if (jj_la1[i] == jj_gen) {\r
+        for (int j = 0; j < 32; j++) {\r
+          if ((jj_la1_0[i] & (1<<j)) != 0) {\r
+            la1tokens[j] = true;\r
+          }\r
+          if ((jj_la1_1[i] & (1<<j)) != 0) {\r
+            la1tokens[32+j] = true;\r
+          }\r
+          if ((jj_la1_2[i] & (1<<j)) != 0) {\r
+            la1tokens[64+j] = true;\r
+          }\r
+          if ((jj_la1_3[i] & (1<<j)) != 0) {\r
+            la1tokens[96+j] = true;\r
+          }\r
+        }\r
+      }\r
+    }\r
+    for (int i = 0; i < 125; i++) {\r
+      if (la1tokens[i]) {\r
+        jj_expentry = new int[1];\r
+        jj_expentry[0] = i;\r
+        jj_expentries.addElement(jj_expentry);\r
+      }\r
+    }\r
+    jj_endpos = 0;\r
+    jj_rescan_token();\r
+    jj_add_error_token(0, 0);\r
+    int[][] exptokseq = new int[jj_expentries.size()][];\r
+    for (int i = 0; i < jj_expentries.size(); i++) {\r
+      exptokseq[i] = (int[])jj_expentries.elementAt(i);\r
+    }\r
+    return new ParseException(token, exptokseq, ijConstants.tokenImage);\r
+  }\r
+\r
+  final public void enable_tracing() {\r
+  }\r
+\r
+  final public void disable_tracing() {\r
+  }\r
+\r
+  final private void jj_rescan_token() {\r
+    jj_rescan = true;\r
+    for (int i = 0; i < 256; i++) {\r
+    try {\r
+      JJCalls p = jj_2_rtns[i];\r
+      do {\r
+        if (p.gen > jj_gen) {\r
+          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;\r
+          switch (i) {\r
+            case 0: jj_3_1(); break;\r
+            case 1: jj_3_2(); break;\r
+            case 2: jj_3_3(); break;\r
+            case 3: jj_3_4(); break;\r
+            case 4: jj_3_5(); break;\r
+            case 5: jj_3_6(); break;\r
+            case 6: jj_3_7(); break;\r
+            case 7: jj_3_8(); break;\r
+            case 8: jj_3_9(); break;\r
+            case 9: jj_3_10(); break;\r
+            case 10: jj_3_11(); break;\r
+            case 11: jj_3_12(); break;\r
+            case 12: jj_3_13(); break;\r
+            case 13: jj_3_14(); break;\r
+            case 14: jj_3_15(); break;\r
+            case 15: jj_3_16(); break;\r
+            case 16: jj_3_17(); break;\r
+            case 17: jj_3_18(); break;\r
+            case 18: jj_3_19(); break;\r
+            case 19: jj_3_20(); break;\r
+            case 20: jj_3_21(); break;\r
+            case 21: jj_3_22(); break;\r
+            case 22: jj_3_23(); break;\r
+            case 23: jj_3_24(); break;\r
+            case 24: jj_3_25(); break;\r
+            case 25: jj_3_26(); break;\r
+            case 26: jj_3_27(); break;\r
+            case 27: jj_3_28(); break;\r
+            case 28: jj_3_29(); break;\r
+            case 29: jj_3_30(); break;\r
+            case 30: jj_3_31(); break;\r
+            case 31: jj_3_32(); break;\r
+            case 32: jj_3_33(); break;\r
+            case 33: jj_3_34(); break;\r
+            case 34: jj_3_35(); break;\r
+            case 35: jj_3_36(); break;\r
+            case 36: jj_3_37(); break;\r
+            case 37: jj_3_38(); break;\r
+            case 38: jj_3_39(); break;\r
+            case 39: jj_3_40(); break;\r
+            case 40: jj_3_41(); break;\r
+            case 41: jj_3_42(); break;\r
+            case 42: jj_3_43(); break;\r
+            case 43: jj_3_44(); break;\r
+            case 44: jj_3_45(); break;\r
+            case 45: jj_3_46(); break;\r
+            case 46: jj_3_47(); break;\r
+            case 47: jj_3_48(); break;\r
+            case 48: jj_3_49(); break;\r
+            case 49: jj_3_50(); break;\r
+            case 50: jj_3_51(); break;\r
+            case 51: jj_3_52(); break;\r
+            case 52: jj_3_53(); break;\r
+            case 53: jj_3_54(); break;\r
+            case 54: jj_3_55(); break;\r
+            case 55: jj_3_56(); break;\r
+            case 56: jj_3_57(); break;\r
+            case 57: jj_3_58(); break;\r
+            case 58: jj_3_59(); break;\r
+            case 59: jj_3_60(); break;\r
+            case 60: jj_3_61(); break;\r
+            case 61: jj_3_62(); break;\r
+            case 62: jj_3_63(); break;\r
+            case 63: jj_3_64(); break;\r
+            case 64: jj_3_65(); break;\r
+            case 65: jj_3_66(); break;\r
+            case 66: jj_3_67(); break;\r
+            case 67: jj_3_68(); break;\r
+            case 68: jj_3_69(); break;\r
+            case 69: jj_3_70(); break;\r
+            case 70: jj_3_71(); break;\r
+            case 71: jj_3_72(); break;\r
+            case 72: jj_3_73(); break;\r
+            case 73: jj_3_74(); break;\r
+            case 74: jj_3_75(); break;\r
+            case 75: jj_3_76(); break;\r
+            case 76: jj_3_77(); break;\r
+            case 77: jj_3_78(); break;\r
+            case 78: jj_3_79(); break;\r
+            case 79: jj_3_80(); break;\r
+            case 80: jj_3_81(); break;\r
+            case 81: jj_3_82(); break;\r
+            case 82: jj_3_83(); break;\r
+            case 83: jj_3_84(); break;\r
+            case 84: jj_3_85(); break;\r
+            case 85: jj_3_86(); break;\r
+            case 86: jj_3_87(); break;\r
+            case 87: jj_3_88(); break;\r
+            case 88: jj_3_89(); break;\r
+            case 89: jj_3_90(); break;\r
+            case 90: jj_3_91(); break;\r
+            case 91: jj_3_92(); break;\r
+            case 92: jj_3_93(); break;\r
+            case 93: jj_3_94(); break;\r
+            case 94: jj_3_95(); break;\r
+            case 95: jj_3_96(); break;\r
+            case 96: jj_3_97(); break;\r
+            case 97: jj_3_98(); break;\r
+            case 98: jj_3_99(); break;\r
+            case 99: jj_3_100(); break;\r
+            case 100: jj_3_101(); break;\r
+            case 101: jj_3_102(); break;\r
+            case 102: jj_3_103(); break;\r
+            case 103: jj_3_104(); break;\r
+            case 104: jj_3_105(); break;\r
+            case 105: jj_3_106(); break;\r
+            case 106: jj_3_107(); break;\r
+            case 107: jj_3_108(); break;\r
+            case 108: jj_3_109(); break;\r
+            case 109: jj_3_110(); break;\r
+            case 110: jj_3_111(); break;\r
+            case 111: jj_3_112(); break;\r
+            case 112: jj_3_113(); break;\r
+            case 113: jj_3_114(); break;\r
+            case 114: jj_3_115(); break;\r
+            case 115: jj_3_116(); break;\r
+            case 116: jj_3_117(); break;\r
+            case 117: jj_3_118(); break;\r
+            case 118: jj_3_119(); break;\r
+            case 119: jj_3_120(); break;\r
+            case 120: jj_3_121(); break;\r
+            case 121: jj_3_122(); break;\r
+            case 122: jj_3_123(); break;\r
+            case 123: jj_3_124(); break;\r
+            case 124: jj_3_125(); break;\r
+            case 125: jj_3_126(); break;\r
+            case 126: jj_3_127(); break;\r
+            case 127: jj_3_128(); break;\r
+            case 128: jj_3_129(); break;\r
+            case 129: jj_3_130(); break;\r
+            case 130: jj_3_131(); break;\r
+            case 131: jj_3_132(); break;\r
+            case 132: jj_3_133(); break;\r
+            case 133: jj_3_134(); break;\r
+            case 134: jj_3_135(); break;\r
+            case 135: jj_3_136(); break;\r
+            case 136: jj_3_137(); break;\r
+            case 137: jj_3_138(); break;\r
+            case 138: jj_3_139(); break;\r
+            case 139: jj_3_140(); break;\r
+            case 140: jj_3_141(); break;\r
+            case 141: jj_3_142(); break;\r
+            case 142: jj_3_143(); break;\r
+            case 143: jj_3_144(); break;\r
+            case 144: jj_3_145(); break;\r
+            case 145: jj_3_146(); break;\r
+            case 146: jj_3_147(); break;\r
+            case 147: jj_3_148(); break;\r
+            case 148: jj_3_149(); break;\r
+            case 149: jj_3_150(); break;\r
+            case 150: jj_3_151(); break;\r
+            case 151: jj_3_152(); break;\r
+            case 152: jj_3_153(); break;\r
+            case 153: jj_3_154(); break;\r
+            case 154: jj_3_155(); break;\r
+            case 155: jj_3_156(); break;\r
+            case 156: jj_3_157(); break;\r
+            case 157: jj_3_158(); break;\r
+            case 158: jj_3_159(); break;\r
+            case 159: jj_3_160(); break;\r
+            case 160: jj_3_161(); break;\r
+            case 161: jj_3_162(); break;\r
+            case 162: jj_3_163(); break;\r
+            case 163: jj_3_164(); break;\r
+            case 164: jj_3_165(); break;\r
+            case 165: jj_3_166(); break;\r
+            case 166: jj_3_167(); break;\r
+            case 167: jj_3_168(); break;\r
+            case 168: jj_3_169(); break;\r
+            case 169: jj_3_170(); break;\r
+            case 170: jj_3_171(); break;\r
+            case 171: jj_3_172(); break;\r
+            case 172: jj_3_173(); break;\r
+            case 173: jj_3_174(); break;\r
+            case 174: jj_3_175(); break;\r
+            case 175: jj_3_176(); break;\r
+            case 176: jj_3_177(); break;\r
+            case 177: jj_3_178(); break;\r
+            case 178: jj_3_179(); break;\r
+            case 179: jj_3_180(); break;\r
+            case 180: jj_3_181(); break;\r
+            case 181: jj_3_182(); break;\r
+            case 182: jj_3_183(); break;\r
+            case 183: jj_3_184(); break;\r
+            case 184: jj_3_185(); break;\r
+            case 185: jj_3_186(); break;\r
+            case 186: jj_3_187(); break;\r
+            case 187: jj_3_188(); break;\r
+            case 188: jj_3_189(); break;\r
+            case 189: jj_3_190(); break;\r
+            case 190: jj_3_191(); break;\r
+            case 191: jj_3_192(); break;\r
+            case 192: jj_3_193(); break;\r
+            case 193: jj_3_194(); break;\r
+            case 194: jj_3_195(); break;\r
+            case 195: jj_3_196(); break;\r
+            case 196: jj_3_197(); break;\r
+            case 197: jj_3_198(); break;\r
+            case 198: jj_3_199(); break;\r
+            case 199: jj_3_200(); break;\r
+            case 200: jj_3_201(); break;\r
+            case 201: jj_3_202(); break;\r
+            case 202: jj_3_203(); break;\r
+            case 203: jj_3_204(); break;\r
+            case 204: jj_3_205(); break;\r
+            case 205: jj_3_206(); break;\r
+            case 206: jj_3_207(); break;\r
+            case 207: jj_3_208(); break;\r
+            case 208: jj_3_209(); break;\r
+            case 209: jj_3_210(); break;\r
+            case 210: jj_3_211(); break;\r
+            case 211: jj_3_212(); break;\r
+            case 212: jj_3_213(); break;\r
+            case 213: jj_3_214(); break;\r
+            case 214: jj_3_215(); break;\r
+            case 215: jj_3_216(); break;\r
+            case 216: jj_3_217(); break;\r
+            case 217: jj_3_218(); break;\r
+            case 218: jj_3_219(); break;\r
+            case 219: jj_3_220(); break;\r
+            case 220: jj_3_221(); break;\r
+            case 221: jj_3_222(); break;\r
+            case 222: jj_3_223(); break;\r
+            case 223: jj_3_224(); break;\r
+            case 224: jj_3_225(); break;\r
+            case 225: jj_3_226(); break;\r
+            case 226: jj_3_227(); break;\r
+            case 227: jj_3_228(); break;\r
+            case 228: jj_3_229(); break;\r
+            case 229: jj_3_230(); break;\r
+            case 230: jj_3_231(); break;\r
+            case 231: jj_3_232(); break;\r
+            case 232: jj_3_233(); break;\r
+            case 233: jj_3_234(); break;\r
+            case 234: jj_3_235(); break;\r
+            case 235: jj_3_236(); break;\r
+            case 236: jj_3_237(); break;\r
+            case 237: jj_3_238(); break;\r
+            case 238: jj_3_239(); break;\r
+            case 239: jj_3_240(); break;\r
+            case 240: jj_3_241(); break;\r
+            case 241: jj_3_242(); break;\r
+            case 242: jj_3_243(); break;\r
+            case 243: jj_3_244(); break;\r
+            case 244: jj_3_245(); break;\r
+            case 245: jj_3_246(); break;\r
+            case 246: jj_3_247(); break;\r
+            case 247: jj_3_248(); break;\r
+            case 248: jj_3_249(); break;\r
+            case 249: jj_3_250(); break;\r
+            case 250: jj_3_251(); break;\r
+            case 251: jj_3_252(); break;\r
+            case 252: jj_3_253(); break;\r
+            case 253: jj_3_254(); break;\r
+            case 254: jj_3_255(); break;\r
+            case 255: jj_3_256(); break;\r
+          }\r
+        }\r
+        p = p.next;\r
+      } while (p != null);\r
+      } catch(LookaheadSuccess ls) { }\r
+    }\r
+    jj_rescan = false;\r
+  }\r
+\r
+  final private void jj_save(int index, int xla) {\r
+    JJCalls p = jj_2_rtns[index];\r
+    while (p.gen > jj_gen) {\r
+      if (p.next == null) { p = p.next = new JJCalls(); break; }\r
+      p = p.next;\r
+    }\r
+    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;\r
+  }\r
+\r
+  static final class JJCalls {\r
+    int gen;\r
+    Token first;\r
+    int arg;\r
+    JJCalls next;\r
+  }\r
+\r
+}\r