All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.orientechnologies.orient.core.sql.parser.OrientSql Maven / Gradle / Ivy

/* Generated By:JJTree&JavaCC: Do not edit this line. OrientSql.java */
package com.orientechnologies.orient.core.sql.parser;

import com.orientechnologies.orient.core.exception.OQueryParsingException;
import com.orientechnologies.orient.core.sql.OCommandSQLParsingException;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/** Orient Database Sql grammar. */
public class OrientSql/*@bgen(jjtree)*/implements OrientSqlTreeConstants, OrientSqlConstants {/*@bgen(jjtree)*/
  protected JJTOrientSqlState jjtree = new JJTOrientSqlState();
  private int inputParamCount = 0;


    public OrientSql(InputStream stream) {
      this(new JavaCharStream(stream));
    }

    public OrientSql(InputStream stream, String charset) throws java.io.UnsupportedEncodingException {
      this(new JavaCharStream(stream, charset));
    }

  final public ORid Rid() throws ParseException {
 /*@bgen(jjtree) Rid */
  ORid jjtn000 = new ORid(JJTRID);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_1(4)) {
        jj_consume_token(246);
        jjtn000.cluster = Integer();
        jj_consume_token(COLON);
        jjtn000.position = Integer();
      } else if (jj_2_2(3)) {
        jjtn000.cluster = Integer();
        jj_consume_token(COLON);
        jjtn000.position = Integer();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

/** Root productions. */
  final public OStatement parse() throws ParseException {
 /*@bgen(jjtree) parse */
 Oparse jjtn000 = new Oparse(JJTPARSE);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OStatement result;
    try {
      result = Statement();
      jj_consume_token(0);
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return result;}
    } catch (Throwable jjte000) {
    if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    if (jjte000 instanceof RuntimeException) {
      {if (true) throw (RuntimeException)jjte000;}
    }
    if (jjte000 instanceof ParseException) {
      {if (true) throw (ParseException)jjte000;}
    }
    {if (true) throw (Error)jjte000;}
    } finally {
    if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
    throw new Error("Missing return statement in function");
  }

  final public List parseScript() throws ParseException {
 /*@bgen(jjtree) parseScript */
  OparseScript jjtn000 = new OparseScript(JJTPARSESCRIPT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));List result = new ArrayList();
  OStatement last;
    try {
      label_1:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SELECT:
        case TRAVERSE:
        case MATCH:
        case INSERT:
        case CREATE:
        case DELETE:
        case UPDATE:
        case RETURN:
        case LET:
        case PROFILE:
        case TRUNCATE:
        case FIND:
        case ALTER:
        case DROP:
        case REBUILD:
        case OPTIMIZE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case SLEEP:
        case CONSOLE:
        case HA:
        case MOVE:
        case SEMICOLON:
          ;
          break;
        default:
          jj_la1[0] = jj_gen;
          break label_1;
        }
        if (jj_2_3(2147483647)) {
          last = StatementSemicolon();
                                     result.add(last);
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case IF:
            last = IfStatement();
                              result.add(last);
            break;
          case SEMICOLON:
            jj_consume_token(SEMICOLON);
            break;
          default:
            jj_la1[1] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
      jj_consume_token(0);
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OIdentifier Identifier() throws ParseException {
 /*@bgen(jjtree) Identifier */
    OIdentifier jjtn000 = new OIdentifier(JJTIDENTIFIER);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token quotedToken = null;
    Token token = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IDENTIFIER:
        token = jj_consume_token(IDENTIFIER);
        break;
      case IN:
        token = jj_consume_token(IN);
        break;
      case SET:
        token = jj_consume_token(SET);
        break;
      case PUT:
        token = jj_consume_token(PUT);
        break;
      case ADD:
        token = jj_consume_token(ADD);
        break;
      case REMOVE:
        token = jj_consume_token(REMOVE);
        break;
      case MERGE:
        token = jj_consume_token(MERGE);
        break;
      case CONTENT:
        token = jj_consume_token(CONTENT);
        break;
      case ORDER:
        token = jj_consume_token(ORDER);
        break;
      case KEY:
        token = jj_consume_token(KEY);
        break;
      case OFFSET:
        token = jj_consume_token(OFFSET);
        break;
      case GROUP:
        token = jj_consume_token(GROUP);
        break;
      case VALUE:
        token = jj_consume_token(VALUE);
        break;
      case VALUES:
        token = jj_consume_token(VALUES);
        break;
      case RECORD:
        token = jj_consume_token(RECORD);
        break;
      case TO:
        token = jj_consume_token(TO);
        break;
      case LUCENE:
        token = jj_consume_token(LUCENE);
        break;
      case CLASS:
        token = jj_consume_token(CLASS);
        break;
      case CLASSES:
        token = jj_consume_token(CLASSES);
        break;
      case MINDEPTH:
        token = jj_consume_token(MINDEPTH);
        break;
      case NEAR:
        token = jj_consume_token(NEAR);
        break;
      case WITHIN:
        token = jj_consume_token(WITHIN);
        break;
      case EXCEPTION:
        token = jj_consume_token(EXCEPTION);
        break;
      case PROFILE:
        token = jj_consume_token(PROFILE);
        break;
      case STORAGE:
        token = jj_consume_token(STORAGE);
        break;
      case ON:
        token = jj_consume_token(ON);
        break;
      case OFF:
        token = jj_consume_token(OFF);
        break;
      case TRUNCATE:
        token = jj_consume_token(TRUNCATE);
        break;
      case FIND:
        token = jj_consume_token(FIND);
        break;
      case REFERENCES:
        token = jj_consume_token(REFERENCES);
        break;
      case EXTENDS:
        token = jj_consume_token(EXTENDS);
        break;
      case CLUSTERS:
        token = jj_consume_token(CLUSTERS);
        break;
      case ABSTRACT:
        token = jj_consume_token(ABSTRACT);
        break;
      case ALTER:
        token = jj_consume_token(ALTER);
        break;
      case NAME:
        token = jj_consume_token(NAME);
        break;
      case SHORTNAME:
        token = jj_consume_token(SHORTNAME);
        break;
      case SUPERCLASS:
        token = jj_consume_token(SUPERCLASS);
        break;
      case SUPERCLASSES:
        token = jj_consume_token(SUPERCLASSES);
        break;
      case OVERSIZE:
        token = jj_consume_token(OVERSIZE);
        break;
      case STRICTMODE:
        token = jj_consume_token(STRICTMODE);
        break;
      case ADDCLUSTER:
        token = jj_consume_token(ADDCLUSTER);
        break;
      case REMOVECLUSTER:
        token = jj_consume_token(REMOVECLUSTER);
        break;
      case CUSTOM:
        token = jj_consume_token(CUSTOM);
        break;
      case CLUSTERSELECTION:
        token = jj_consume_token(CLUSTERSELECTION);
        break;
      case DESCRIPTION:
        token = jj_consume_token(DESCRIPTION);
        break;
      case ENCRYPTION:
        token = jj_consume_token(ENCRYPTION);
        break;
      case DROP:
        token = jj_consume_token(DROP);
        break;
      case PROPERTY:
        token = jj_consume_token(PROPERTY);
        break;
      case FORCE:
        token = jj_consume_token(FORCE);
        break;
      case METADATA:
        token = jj_consume_token(METADATA);
        break;
      case COLLATE:
        token = jj_consume_token(COLLATE);
        break;
      case INDEX:
        token = jj_consume_token(INDEX);
        break;
      case ENGINE:
        token = jj_consume_token(ENGINE);
        break;
      case REBUILD:
        token = jj_consume_token(REBUILD);
        break;
      case ID:
        token = jj_consume_token(ID);
        break;
      case DATABASE:
        token = jj_consume_token(DATABASE);
        break;
      case OPTIMIZE:
        token = jj_consume_token(OPTIMIZE);
        break;
      case LINK:
        token = jj_consume_token(LINK);
        break;
      case TYPE:
        token = jj_consume_token(TYPE);
        break;
      case INVERSE:
        token = jj_consume_token(INVERSE);
        break;
      case EXPLAIN:
        token = jj_consume_token(EXPLAIN);
        break;
      case GRANT:
        token = jj_consume_token(GRANT);
        break;
      case REVOKE:
        token = jj_consume_token(REVOKE);
        break;
      case READ:
        token = jj_consume_token(READ);
        break;
      case EXECUTE:
        token = jj_consume_token(EXECUTE);
        break;
      case ALL:
        token = jj_consume_token(ALL);
        break;
      case NONE:
        token = jj_consume_token(NONE);
        break;
      case FUNCTION:
        token = jj_consume_token(FUNCTION);
        break;
      case PARAMETERS:
        token = jj_consume_token(PARAMETERS);
        break;
      case IDEMPOTENT:
        token = jj_consume_token(IDEMPOTENT);
        break;
      case LANGUAGE:
        token = jj_consume_token(LANGUAGE);
        break;
      case BEGIN:
        token = jj_consume_token(BEGIN);
        break;
      case COMMIT:
        token = jj_consume_token(COMMIT);
        break;
      case ROLLBACK:
        token = jj_consume_token(ROLLBACK);
        break;
      case IF:
        token = jj_consume_token(IF);
        break;
      case ISOLATION:
        token = jj_consume_token(ISOLATION);
        break;
      case SLEEP:
        token = jj_consume_token(SLEEP);
        break;
      case CONSOLE:
        token = jj_consume_token(CONSOLE);
        break;
      case BLOB:
        token = jj_consume_token(BLOB);
        break;
      case SHARED:
        token = jj_consume_token(SHARED);
        break;
      case DEFAULT_:
        token = jj_consume_token(DEFAULT_);
        break;
      case SEQUENCE:
        token = jj_consume_token(SEQUENCE);
        break;
      case CACHE:
        token = jj_consume_token(CACHE);
        break;
      case START:
        token = jj_consume_token(START);
        break;
      case OPTIONAL:
        token = jj_consume_token(OPTIONAL);
        break;
      case COUNT:
        token = jj_consume_token(COUNT);
        break;
      case HA:
        token = jj_consume_token(HA);
        break;
      case STATUS:
        token = jj_consume_token(STATUS);
        break;
      case SERVER:
        token = jj_consume_token(SERVER);
        break;
      case SYNC:
        token = jj_consume_token(SYNC);
        break;
      case EXISTS:
        token = jj_consume_token(EXISTS);
        break;
      case RID:
        token = jj_consume_token(RID);
        break;
      case RIDS:
        token = jj_consume_token(RIDS);
        break;
      case MOVE:
        token = jj_consume_token(MOVE);
        break;
      case QUOTED_IDENTIFIER:
        quotedToken = jj_consume_token(QUOTED_IDENTIFIER);
        break;
      default:
        jj_la1[2] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    if(token!=null){
        jjtn000.value = token.image;
    }else{
        jjtn000.quoted = true;
        jjtn000.value = quotedToken.image;
        jjtn000.value = jjtn000.value.substring(1, jjtn000.value.length() - 1);
        /*try{
            jjtThis.value = java.net.URLEncoder.encode(jjtThis.value, null);
        }catch(Exception e){

        }*/
    }

    {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OInteger Integer() throws ParseException {
 /*@bgen(jjtree) Integer */
    OInteger jjtn000 = new OInteger(JJTINTEGER);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));int sign = 1;
    Token tokenVal;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
               sign = -1;
        break;
      default:
        jj_la1[3] = jj_gen;
        ;
      }
      tokenVal = jj_consume_token(INTEGER_LITERAL);
                                                           jjtn000.value = sign * Long.parseLong(tokenVal.image);
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFloatingPoint FloatingPoint() throws ParseException {
 /*@bgen(jjtree) FloatingPoint */
    OFloatingPoint jjtn000 = new OFloatingPoint(JJTFLOATINGPOINT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));String stringValue;
    Token tokenVal;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
                    jjtn000.sign = -1;
        break;
      default:
        jj_la1[4] = jj_gen;
        ;
      }
      tokenVal = jj_consume_token(FLOATING_POINT_LITERAL);
                                                                                 jjtn000.stringValue = tokenVal.image;
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ONumber Number() throws ParseException {
 /*@bgen(jjtree) Number */
  ONumber jjtn000 = new ONumber(JJTNUMBER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));ONumber result;
    try {
      if (jj_2_4(2147483647)) {
        result = Integer();
      } else if (jj_2_5(2147483647)) {
        result = FloatingPoint();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OStatement Statement() throws ParseException {
 /*@bgen(jjtree) Statement */
 OStatement jjtn000 = new OStatement(JJTSTATEMENT);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OStatement result = null;
    try {
      result = StatementInternal();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SEMICOLON:
        jj_consume_token(SEMICOLON);
        break;
      default:
        jj_la1[5] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OStatement StatementSemicolon() throws ParseException {
 /*@bgen(jjtree) StatementSemicolon */
 OStatementSemicolon jjtn000 = new OStatementSemicolon(JJTSTATEMENTSEMICOLON);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OStatement result = null;
    try {
      result = StatementInternal();
      jj_consume_token(SEMICOLON);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OStatement StatementInternal() throws ParseException {
 /*@bgen(jjtree) StatementInternal */
    OStatementInternal jjtn000 = new OStatementInternal(JJTSTATEMENTINTERNAL);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OStatement result = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SELECT:
      case TRAVERSE:
      case MATCH:
      case INSERT:
      case CREATE:
      case DELETE:
      case UPDATE:
      case RETURN:
      case PROFILE:
      case TRUNCATE:
      case FIND:
      case ALTER:
      case DROP:
      case REBUILD:
      case OPTIMIZE:
      case GRANT:
      case REVOKE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case SLEEP:
      case CONSOLE:
      case HA:
      case MOVE:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SELECT:
        case TRAVERSE:
        case MATCH:
        case FIND:
          result = QueryStatement();
          break;
        default:
          jj_la1[6] = jj_gen;
          if (jj_2_6(2)) {
            result = DeleteStatement();
          } else if (jj_2_7(2)) {
            result = DeleteVertexStatement();
          } else if (jj_2_8(2)) {
            result = DeleteEdgeStatement();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case INSERT:
              result = InsertStatement();
              break;
            default:
              jj_la1[7] = jj_gen;
              if (jj_2_9(2)) {
                result = CreateClassStatement();
              } else if (jj_2_10(2)) {
                result = CreatePropertyStatement();
              } else if (jj_2_11(2)) {
                result = CreateIndexStatement();
              } else if (jj_2_12(2)) {
                result = CreateClusterStatement();
              } else if (jj_2_13(2)) {
                result = CreateLinkStatement();
              } else if (jj_2_14(2)) {
                result = CreateFunctionStatement();
              } else if (jj_2_15(2)) {
                result = CreateSequenceStatement();
              } else if (jj_2_16(2147483647)) {
                result = CreateVertexStatementNoTarget();
              } else if (jj_2_17(2147483647)) {
                result = CreateVertexStatement();
              } else if (jj_2_18(2147483647)) {
                result = CreateVertexStatementEmpty();
              } else if (jj_2_19(2147483647)) {
                result = CreateVertexStatementEmptyNoTarget();
              } else if (jj_2_20(2147483647)) {
                result = MoveVertexStatement();
              } else if (jj_2_21(2147483647)) {
                result = CreateEdgeStatement();
              } else if (jj_2_22(2147483647)) {
                result = UpdateEdgeStatement();
              } else if (jj_2_23(2147483647)) {
                result = UpdateStatement();
              } else {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case PROFILE:
                  result = ProfileStorageStatement();
                  break;
                default:
                  jj_la1[8] = jj_gen;
                  if (jj_2_24(2147483647)) {
                    result = TruncateClassStatement();
                  } else if (jj_2_25(2147483647)) {
                    result = TruncateClusterStatement();
                  } else if (jj_2_26(2147483647)) {
                    result = TruncateRecordStatement();
                  } else if (jj_2_27(2)) {
                    result = AlterSequenceStatement();
                  } else if (jj_2_28(2147483647)) {
                    result = AlterClassStatement();
                  } else if (jj_2_29(2)) {
                    result = DropSequenceStatement();
                  } else if (jj_2_30(2147483647)) {
                    result = DropClassStatement();
                  } else if (jj_2_31(2147483647)) {
                    result = AlterPropertyStatement();
                  } else if (jj_2_32(2147483647)) {
                    result = DropPropertyStatement();
                  } else {
                    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                    case REBUILD:
                      result = RebuildIndexStatement();
                      break;
                    default:
                      jj_la1[9] = jj_gen;
                      if (jj_2_33(2)) {
                        result = DropIndexStatement();
                      } else if (jj_2_34(2147483647)) {
                        result = AlterClusterStatement();
                      } else if (jj_2_35(2)) {
                        result = DropClusterStatement();
                      } else if (jj_2_36(2)) {
                        result = AlterDatabaseStatement();
                      } else {
                        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                        case OPTIMIZE:
                          result = OptimizeDatabaseStatement();
                          break;
                        case GRANT:
                          result = GrantStatement();
                          break;
                        case REVOKE:
                          result = RevokeStatement();
                          break;
                        case BEGIN:
                          result = BeginStatement();
                          break;
                        case COMMIT:
                          result = CommitStatement();
                          break;
                        case ROLLBACK:
                          result = RollbackStatement();
                          break;
                        case RETURN:
                          result = ReturnStatement();
                          break;
                        case SLEEP:
                          result = SleepStatement();
                          break;
                        case CONSOLE:
                          result = ConsoleStatement();
                          break;
                        case IF:
                          result = IfStatement();
                          break;
                        default:
                          jj_la1[10] = jj_gen;
                          if (jj_2_37(2)) {
                            result = HaStatusStatement();
                          } else if (jj_2_38(2)) {
                            result = HaRemoveServerStatement();
                          } else if (jj_2_39(3)) {
                            result = HaSyncDatabaseStatement();
                          } else if (jj_2_40(3)) {
                            result = HaSyncClusterStatement();
                          } else {
                            jj_consume_token(-1);
                            throw new ParseException();
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        break;
      case EXPLAIN:
        result = ExplainStatement();
        break;
      case LET:
        result = LetStatement();
        break;
      default:
        jj_la1[11] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
            {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OStatement QueryStatement() throws ParseException {
 /*@bgen(jjtree) QueryStatement */
 OQueryStatement jjtn000 = new OQueryStatement(JJTQUERYSTATEMENT);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OStatement result;
    try {
      if (jj_2_41(2147483647)) {
        result = SelectStatement();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SELECT:
          result = SelectWithoutTargetStatement();
          break;
        case TRAVERSE:
          result = TraverseStatement();
          break;
        case MATCH:
          result = MatchStatement();
          break;
        default:
          jj_la1[12] = jj_gen;
          if (jj_2_42(2147483647)) {
            result = FindReferencesStatement();
          } else {
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OSelectWithoutTargetStatement SelectWithoutTargetStatement() throws ParseException {
 /*@bgen(jjtree) SelectWithoutTargetStatement */
  OSelectWithoutTargetStatement jjtn000 = new OSelectWithoutTargetStatement(JJTSELECTWITHOUTTARGETSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(SELECT);
      jjtn000.projection = Projection();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LET:
        jjtn000.letClause = LetClause();
        break;
      default:
        jj_la1[13] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNWIND:
        jjtn000.unwind = Unwind();
        break;
      default:
        jj_la1[14] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
      case SKIP2:
      case OFFSET:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SKIP2:
        case OFFSET:
          jjtn000.skip = Skip();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LIMIT:
            jjtn000.limit = Limit();
            break;
          default:
            jj_la1[15] = jj_gen;
            ;
          }
          break;
        case LIMIT:
          jjtn000.limit = Limit();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case SKIP2:
          case OFFSET:
            jjtn000.skip = Skip();
            break;
          default:
            jj_la1[16] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[17] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[18] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FETCHPLAN:
        jjtn000.fetchPlan = FetchPlan();
        break;
      default:
        jj_la1[19] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TIMEOUT:
        jjtn000.timeout = Timeout();
        break;
      default:
        jj_la1[20] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOCK:
        jj_consume_token(LOCK);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case RECORD:
          jj_consume_token(RECORD);
                          jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.EXCLUSIVE_LOCK;
          break;
        case NONE:
          jj_consume_token(NONE);
                        jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.NONE;
          break;
        case SHARED:
          jj_consume_token(SHARED);
                          jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.SHARED_LOCK;
          break;
        case DEFAULT_:
          jj_consume_token(DEFAULT_);
                            jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.DEFAULT;
          break;
        default:
          jj_la1[21] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[22] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PARALLEL:
        jj_consume_token(PARALLEL);
                       jjtn000.parallel = true;
        break;
      default:
        jj_la1[23] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NOCACHE:
        jj_consume_token(NOCACHE);
                      jjtn000.noCache = true;
        break;
      default:
        jj_la1[24] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
        jjtn000.validate();
        {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OSelectStatement SelectStatement() throws ParseException {
 /*@bgen(jjtree) SelectStatement */
  OSelectStatement jjtn000 = new OSelectStatement(JJTSELECTSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(SELECT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case NULL:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LBRACE:
      case LBRACKET:
      case HOOK:
      case COLON:
      case MINUS:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
        jjtn000.projection = Projection();
        break;
      default:
        jj_la1[25] = jj_gen;
        ;
      }
      jj_consume_token(FROM);
      jjtn000.target = FromClause();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LET:
        jjtn000.letClause = LetClause();
        break;
      default:
        jj_la1[26] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[27] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case GROUP:
        jjtn000.groupBy = GroupBy();
        break;
      default:
        jj_la1[28] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ORDER:
        jjtn000.orderBy = OrderBy();
        break;
      default:
        jj_la1[29] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNWIND:
        jjtn000.unwind = Unwind();
        break;
      default:
        jj_la1[30] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
      case SKIP2:
      case OFFSET:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SKIP2:
        case OFFSET:
          jjtn000.skip = Skip();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LIMIT:
            jjtn000.limit = Limit();
            break;
          default:
            jj_la1[31] = jj_gen;
            ;
          }
          break;
        case LIMIT:
          jjtn000.limit = Limit();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case SKIP2:
          case OFFSET:
            jjtn000.skip = Skip();
            break;
          default:
            jj_la1[32] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[33] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[34] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FETCHPLAN:
        jjtn000.fetchPlan = FetchPlan();
        break;
      default:
        jj_la1[35] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TIMEOUT:
        jjtn000.timeout = Timeout();
        break;
      default:
        jj_la1[36] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOCK:
        jj_consume_token(LOCK);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case RECORD:
          jj_consume_token(RECORD);
                          jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.EXCLUSIVE_LOCK;
          break;
        case NONE:
          jj_consume_token(NONE);
                        jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.NONE;
          break;
        case SHARED:
          jj_consume_token(SHARED);
                          jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.SHARED_LOCK;
          break;
        case DEFAULT_:
          jj_consume_token(DEFAULT_);
                            jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.DEFAULT;
          break;
        default:
          jj_la1[37] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[38] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PARALLEL:
        jj_consume_token(PARALLEL);
                       jjtn000.parallel = true;
        break;
      default:
        jj_la1[39] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NOCACHE:
        jj_consume_token(NOCACHE);
                      jjtn000.noCache = true;
        break;
      default:
        jj_la1[40] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
        jjtn000.validate();
        {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OTraverseStatement TraverseStatement() throws ParseException {
 /*@bgen(jjtree) TraverseStatement */
  OTraverseStatement jjtn000 = new OTraverseStatement(JJTTRAVERSESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OTraverseProjectionItem lastProjection;
    try {
      jj_consume_token(TRAVERSE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case LBRACKET:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        lastProjection = TraverseProjectionItem();
                                                        jjtn000.projections.add(lastProjection);
        label_2:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[41] = jj_gen;
            break label_2;
          }
          jj_consume_token(COMMA);
          lastProjection = TraverseProjectionItem();
                                                                   jjtn000.projections.add(lastProjection);
        }
        break;
      default:
        jj_la1[42] = jj_gen;
        ;
      }
      jj_consume_token(FROM);
      jjtn000.target = FromClause();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MAXDEPTH:
        jj_consume_token(MAXDEPTH);
        jjtn000.maxDepth = Integer();
        break;
      default:
        jj_la1[43] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHILE:
        jj_consume_token(WHILE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[44] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[45] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STRATEGY:
        jj_consume_token(STRATEGY);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DEPTH_FIRST:
          jj_consume_token(DEPTH_FIRST);
                                jjtn000.strategy = OTraverseStatement.Strategy.DEPTH_FIRST;
          break;
        case BREADTH_FIRST:
          jj_consume_token(BREADTH_FIRST);
                                  jjtn000.strategy = OTraverseStatement.Strategy.BREADTH_FIRST;
          break;
        default:
          jj_la1[46] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[47] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchStatement MatchStatement() throws ParseException {
 /*@bgen(jjtree) MatchStatement */
    OMatchStatement jjtn000 = new OMatchStatement(JJTMATCHSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OMatchExpression lastMatchExpr = null;
    OExpression lastReturn = null;
    OIdentifier lastReturnAlias = null;
    try {
      jj_consume_token(MATCH);
      lastMatchExpr = MatchExpression();
                                            jjtn000.matchExpressions.add(lastMatchExpr);
      label_3:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[48] = jj_gen;
          break label_3;
        }
        jj_consume_token(COMMA);
        lastMatchExpr = MatchExpression();
                                                jjtn000.matchExpressions.add(lastMatchExpr);
      }
      jj_consume_token(RETURN);
      lastReturn = Expression();
                                   lastReturnAlias = null;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AS:
        jj_consume_token(AS);
        lastReturnAlias = Identifier();
        break;
      default:
        jj_la1[49] = jj_gen;
        ;
      }
            jjtn000.returnAliases.add(lastReturnAlias);
            jjtn000.returnItems.add(lastReturn);
      label_4:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[50] = jj_gen;
          break label_4;
        }
        jj_consume_token(COMMA);
        lastReturn = Expression();
                                       lastReturnAlias = null;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case AS:
          jj_consume_token(AS);
          lastReturnAlias = Identifier();
          break;
        default:
          jj_la1[51] = jj_gen;
          ;
        }
                jjtn000.returnAliases.add(lastReturnAlias);
                jjtn000.returnItems.add(lastReturn);
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[52] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteStatement DeleteStatement() throws ParseException {
 /*@bgen(jjtree) DeleteStatement */
  ODeleteStatement jjtn000 = new ODeleteStatement(JJTDELETESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DELETE);
      jj_consume_token(FROM);
      jjtn000.fromClause = FromClause();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
        jj_consume_token(RETURN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BEFORE:
          jj_consume_token(BEFORE);
                           jjtn000.returnBefore = true;
          break;
        case COUNT:
          jj_consume_token(COUNT);
                         jjtn000.returnCount = true;
          break;
        default:
          jj_la1[53] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[54] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[55] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[56] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                     jjtn000.unsafe = true;
        break;
      default:
        jj_la1[57] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteVertexStatement DeleteVertexStatement() throws ParseException {
 /*@bgen(jjtree) DeleteVertexStatement */
  ODeleteVertexStatement jjtn000 = new ODeleteVertexStatement(JJTDELETEVERTEXSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DELETE);
      jj_consume_token(VERTEX);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FROM:
        jj_consume_token(FROM);
                  jjtn000.from = true;
        break;
      default:
        jj_la1[58] = jj_gen;
        ;
      }
      jjtn000.fromClause = FromClause();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
        jj_consume_token(RETURN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BEFORE:
          jj_consume_token(BEFORE);
                      jjtn000.returnBefore = true;
          break;
        case COUNT:
          jj_consume_token(COUNT);
                    jjtn000.returnCount = true;
          break;
        default:
          jj_la1[59] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[60] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[61] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[62] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[63] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMoveVertexStatement MoveVertexStatement() throws ParseException {
 /*@bgen(jjtree) MoveVertexStatement */
  OMoveVertexStatement jjtn000 = new OMoveVertexStatement(JJTMOVEVERTEXSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OExpression lastSetExpr;
    try {
      jj_consume_token(MOVE);
      jj_consume_token(VERTEX);
      jjtn000.source = FromItem();
      jj_consume_token(TO);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTER_IDENTIFIER:
      case CLUSTER_NUMBER_IDENTIFIER:
        jjtn000.targetCluster = Cluster();
        break;
      case CLASS:
        jj_consume_token(CLASS);
        jj_consume_token(COLON);
        jjtn000.targetClass = Identifier();
        break;
      default:
        jj_la1[64] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case INCREMENT:
        jjtn000.updateOperations = UpdateOperations();
        break;
      default:
        jj_la1[65] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[66] = jj_gen;
        ;
      }
     jjtree.closeNodeScope(jjtn000, true);
     jjtc000 = false;
     jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
    if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    if (jjte000 instanceof RuntimeException) {
      {if (true) throw (RuntimeException)jjte000;}
    }
    if (jjte000 instanceof ParseException) {
      {if (true) throw (ParseException)jjte000;}
    }
    {if (true) throw (Error)jjte000;}
    } finally {
    if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteEdgeStatement DeleteEdgeStatement() throws ParseException {
 /*@bgen(jjtree) DeleteEdgeStatement */
  ODeleteEdgeStatement jjtn000 = new ODeleteEdgeStatement(JJTDELETEEDGESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));ODeleteEdgeStatement result;
    try {
      if (jj_2_43(2147483647)) {
        result = DeleteEdgeByRidStatement();
      } else if (jj_2_44(2147483647)) {
        result = DeleteEdgeFromToStatement();
      } else if (jj_2_45(2147483647)) {
        result = DeleteEdgeVToStatement();
      } else if (jj_2_46(2147483647)) {
        result = DeleteEdgeToStatement();
      } else if (jj_2_47(2147483647)) {
        result = DeleteEdgeWhereStatement();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteEdgeStatement DeleteEdgeByRidStatement() throws ParseException {
 /*@bgen(jjtree) DeleteEdgeByRidStatement */
    ODeleteEdgeByRidStatement jjtn000 = new ODeleteEdgeByRidStatement(JJTDELETEEDGEBYRIDSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));ORid lastRid;
    try {
      jj_consume_token(DELETE);
      jj_consume_token(EDGE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        jjtn000.rid = Rid();
        break;
      case LBRACKET:
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastRid = Rid();
                    jjtn000.rids = new ArrayList();
                    jjtn000.rids.add(lastRid);
          label_5:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[67] = jj_gen;
              break label_5;
            }
            jj_consume_token(COMMA);
            lastRid = Rid();
                                      jjtn000.rids.add(lastRid);
          }
          break;
        default:
          jj_la1[68] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      default:
        jj_la1[69] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[70] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteEdgeStatement DeleteEdgeFromToStatement() throws ParseException {
 /*@bgen(jjtree) DeleteEdgeFromToStatement */
    ODeleteEdgeFromToStatement jjtn000 = new ODeleteEdgeFromToStatement(JJTDELETEEDGEFROMTOSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));ORid lastRid;
    try {
      jj_consume_token(DELETE);
      jj_consume_token(EDGE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.className = Identifier();
        break;
      default:
        jj_la1[71] = jj_gen;
        ;
      }
      jj_consume_token(FROM);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        jjtn000.leftRid = Rid();
        break;
      case LBRACKET:
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastRid = Rid();
                        jjtn000.leftRids=new ArrayList();
                        jjtn000.leftRids.add(lastRid);
          label_6:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[72] = jj_gen;
              break label_6;
            }
            jj_consume_token(COMMA);
            lastRid = Rid();
                                          jjtn000.leftRids.add(lastRid);
          }
          break;
        default:
          jj_la1[73] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      case LPAREN:
        jj_consume_token(LPAREN);
        if (jj_2_48(2147483647)) {
          jjtn000.leftStatement = SelectStatement();
        } else if (jj_2_49(2147483647)) {
          jjtn000.leftStatement = SelectWithoutTargetStatement();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        jj_consume_token(RPAREN);
        break;
      case HOOK:
      case COLON:
        jjtn000.leftParam = InputParameter();
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.leftIdentifier = Identifier();
        break;
      default:
        jj_la1[74] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
        jj_consume_token(TO);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          jjtn000.rightRid = Rid();
          break;
        case LBRACKET:
          jj_consume_token(LBRACKET);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case INTEGER_LITERAL:
          case MINUS:
          case 246:
            lastRid = Rid();
                            jjtn000.rightRids=new ArrayList();
                            jjtn000.rightRids.add(lastRid);
            label_7:
            while (true) {
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                ;
                break;
              default:
                jj_la1[75] = jj_gen;
                break label_7;
              }
              jj_consume_token(COMMA);
              lastRid = Rid();
                                              jjtn000.rightRids.add(lastRid);
            }
            break;
          default:
            jj_la1[76] = jj_gen;
            ;
          }
          jj_consume_token(RBRACKET);
          break;
        case LPAREN:
          jj_consume_token(LPAREN);
          if (jj_2_50(2147483647)) {
            jjtn000.rightStatement = SelectStatement();
          } else if (jj_2_51(2147483647)) {
            jjtn000.rightStatement = SelectWithoutTargetStatement();
          } else {
            jj_consume_token(-1);
            throw new ParseException();
          }
          jj_consume_token(RPAREN);
          break;
        case HOOK:
        case COLON:
          jjtn000.rightParam = InputParameter();
          break;
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.rightIdentifier = Identifier();
          break;
        default:
          jj_la1[77] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[78] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[79] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[80] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[81] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteEdgeStatement DeleteEdgeToStatement() throws ParseException {
 /*@bgen(jjtree) DeleteEdgeToStatement */
    ODeleteEdgeToStatement jjtn000 = new ODeleteEdgeToStatement(JJTDELETEEDGETOSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));ORid lastRid;
    try {
      jj_consume_token(DELETE);
      jj_consume_token(EDGE);
      jjtn000.className = Identifier();
      jj_consume_token(TO);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        jjtn000.rightRid = Rid();
        break;
      case LBRACKET:
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastRid = Rid();
                        jjtn000.rightRids=new ArrayList();
                        jjtn000.rightRids.add(lastRid);
          label_8:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[82] = jj_gen;
              break label_8;
            }
            jj_consume_token(COMMA);
            lastRid = Rid();
                                          jjtn000.rightRids.add(lastRid);
          }
          break;
        default:
          jj_la1[83] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      case LPAREN:
        jj_consume_token(LPAREN);
        if (jj_2_52(2147483647)) {
          jjtn000.rightStatement = SelectStatement();
        } else if (jj_2_53(2147483647)) {
          jjtn000.rightStatement = SelectWithoutTargetStatement();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        jj_consume_token(RPAREN);
        break;
      case HOOK:
      case COLON:
        jjtn000.rightParam = InputParameter();
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.rightIdentifier = Identifier();
        break;
      default:
        jj_la1[84] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[85] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[86] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[87] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteEdgeStatement DeleteEdgeVToStatement() throws ParseException {
 /*@bgen(jjtree) DeleteEdgeVToStatement */
    ODeleteEdgeVToStatement jjtn000 = new ODeleteEdgeVToStatement(JJTDELETEEDGEVTOSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));ORid lastRid;
    try {
      jj_consume_token(DELETE);
      jj_consume_token(EDGE);
      jj_consume_token(TO);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        jjtn000.rightRid = Rid();
        break;
      case LBRACKET:
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastRid = Rid();
                        jjtn000.rightRids=new ArrayList();
                        jjtn000.rightRids.add(lastRid);
          label_9:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[88] = jj_gen;
              break label_9;
            }
            jj_consume_token(COMMA);
            lastRid = Rid();
                                          jjtn000.rightRids.add(lastRid);
          }
          break;
        default:
          jj_la1[89] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      case LPAREN:
        jj_consume_token(LPAREN);
        if (jj_2_54(2147483647)) {
          jjtn000.rightStatement = SelectStatement();
        } else if (jj_2_55(2147483647)) {
          jjtn000.rightStatement = SelectWithoutTargetStatement();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        jj_consume_token(RPAREN);
        break;
      case HOOK:
      case COLON:
        jjtn000.rightParam = InputParameter();
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.rightIdentifier = Identifier();
        break;
      default:
        jj_la1[90] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[91] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[92] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[93] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODeleteEdgeStatement DeleteEdgeWhereStatement() throws ParseException {
 /*@bgen(jjtree) DeleteEdgeWhereStatement */
    ODeleteEdgeWhereStatement jjtn000 = new ODeleteEdgeWhereStatement(JJTDELETEEDGEWHERESTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));ORid lastRid;
    try {
      jj_consume_token(DELETE);
      jj_consume_token(EDGE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.className = Identifier();
        break;
      default:
        jj_la1[94] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[95] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[96] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[97] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateEdgeStatement UpdateEdgeStatement() throws ParseException {
 /*@bgen(jjtree) UpdateEdgeStatement */
  OUpdateEdgeStatement jjtn000 = new OUpdateEdgeStatement(JJTUPDATEEDGESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OUpdateOperations lastOperations;
 ORid lastRid;
    try {
      jj_consume_token(UPDATE);
      jj_consume_token(EDGE);
      jjtn000.target = FromClause();
      label_10:
      while (true) {
        lastOperations = UpdateOperations();
                                                jjtn000.operations.add(lastOperations);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case INCREMENT:
          ;
          break;
        default:
          jj_la1[98] = jj_gen;
          break label_10;
        }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UPSERT:
        jj_consume_token(UPSERT);
                     jjtn000.upsert = true;
        break;
      default:
        jj_la1[99] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
        jj_consume_token(RETURN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BEFORE:
          jj_consume_token(BEFORE);
                             jjtn000.returnBefore = true;
          break;
        case AFTER:
          jj_consume_token(AFTER);
                                                                        jjtn000.returnAfter = true;
          break;
        default:
          jj_la1[100] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case NULL:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LBRACE:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
          jjtn000.returnProjection = Projection();
          break;
        default:
          jj_la1[101] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[102] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[103] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOCK:
        jj_consume_token(LOCK);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case RECORD:
          jj_consume_token(RECORD);
                      jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.EXCLUSIVE_LOCK;
          break;
        case NONE:
          jj_consume_token(NONE);
                    jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.NONE;
          break;
        case SHARED:
          jj_consume_token(SHARED);
                      jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.SHARED_LOCK;
          break;
        case DEFAULT_:
          jj_consume_token(DEFAULT_);
                        jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.DEFAULT;
          break;
        default:
          jj_la1[104] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[105] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[106] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TIMEOUT:
        jjtn000.timeout = Timeout();
        break;
      default:
        jj_la1[107] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
    if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    if (jjte000 instanceof RuntimeException) {
      {if (true) throw (RuntimeException)jjte000;}
    }
    if (jjte000 instanceof ParseException) {
      {if (true) throw (ParseException)jjte000;}
    }
    {if (true) throw (Error)jjte000;}
    } finally {
    if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateStatement UpdateStatement() throws ParseException {
 /*@bgen(jjtree) UpdateStatement */
  OUpdateStatement jjtn000 = new OUpdateStatement(JJTUPDATESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OUpdateOperations lastOperations;
 ORid lastRid;
    try {
      jj_consume_token(UPDATE);
      jjtn000.target = FromClause();
      label_11:
      while (true) {
        lastOperations = UpdateOperations();
                                                jjtn000.operations.add(lastOperations);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case INCREMENT:
          ;
          break;
        default:
          jj_la1[108] = jj_gen;
          break label_11;
        }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UPSERT:
        jj_consume_token(UPSERT);
                     jjtn000.upsert = true;
        break;
      default:
        jj_la1[109] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
        jj_consume_token(RETURN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BEFORE:
          jj_consume_token(BEFORE);
                         jjtn000.returnBefore = true;
          break;
        case AFTER:
          jj_consume_token(AFTER);
                                                                    jjtn000.returnAfter = true;
          break;
        case COUNT:
          jj_consume_token(COUNT);
                                                                                                              jjtn000.returnCount = true;
          break;
        default:
          jj_la1[110] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case NULL:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LBRACE:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
          jjtn000.returnProjection = Projection();
          break;
        default:
          jj_la1[111] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[112] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LET:
        jjtn000.let = LetClause();
        break;
      default:
        jj_la1[113] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
        jj_consume_token(WHERE);
        jjtn000.whereClause = WhereClause();
        break;
      default:
        jj_la1[114] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOCK:
        jj_consume_token(LOCK);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case RECORD:
          jj_consume_token(RECORD);
                          jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.EXCLUSIVE_LOCK;
          break;
        case NONE:
          jj_consume_token(NONE);
                        jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.NONE;
          break;
        case SHARED:
          jj_consume_token(SHARED);
                          jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.SHARED_LOCK;
          break;
        case DEFAULT_:
          jj_consume_token(DEFAULT_);
                            jjtn000.lockRecord = com.orientechnologies.orient.core.storage.OStorage.LOCKING_STRATEGY.DEFAULT;
          break;
        default:
          jj_la1[115] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[116] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LIMIT:
        jjtn000.limit = Limit();
        break;
      default:
        jj_la1[117] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TIMEOUT:
        jjtn000.timeout = Timeout();
        break;
      default:
        jj_la1[118] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateOperations UpdateOperations() throws ParseException {
 /*@bgen(jjtree) UpdateOperations */
    OUpdateOperations jjtn000 = new OUpdateOperations(JJTUPDATEOPERATIONS);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OUpdateItem lastItem;
    OUpdatePutItem lastPutItem;
    OUpdateIncrementItem lastIncrementItem;
    OUpdateRemoveItem lastRemoveItem;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SET:
        jj_consume_token(SET);
                    jjtn000.type = OUpdateOperations.TYPE_SET;
        lastItem = UpdateItem();
                                      jjtn000.updateItems.add(lastItem);
        label_12:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[119] = jj_gen;
            break label_12;
          }
          jj_consume_token(COMMA);
          lastItem = UpdateItem();
                                                  jjtn000.updateItems.add(lastItem);
        }
        break;
      case PUT:
        jj_consume_token(PUT);
                    jjtn000.type = OUpdateOperations.TYPE_PUT;
        lastPutItem = UpdatePutItem();
                                             jjtn000.updatePutItems.add(lastPutItem);
        label_13:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[120] = jj_gen;
            break label_13;
          }
          jj_consume_token(COMMA);
          lastPutItem = UpdatePutItem();
                                                         jjtn000.updatePutItems.add(lastPutItem);
        }
        break;
      case MERGE:
      case CONTENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case MERGE:
          jj_consume_token(MERGE);
                          jjtn000.type = OUpdateOperations.TYPE_MERGE;
          break;
        case CONTENT:
          jj_consume_token(CONTENT);
                            jjtn000.type = OUpdateOperations.TYPE_CONTENT;
          break;
        default:
          jj_la1[121] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        jjtn000.json = Json();
        break;
      case ADD:
      case INCREMENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INCREMENT:
          jj_consume_token(INCREMENT);
                              jjtn000.type = OUpdateOperations.TYPE_INCREMENT;
          break;
        case ADD:
          jj_consume_token(ADD);
                        jjtn000.type = OUpdateOperations.TYPE_ADD;
          break;
        default:
          jj_la1[122] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        lastIncrementItem = UpdateIncrementItem();
                                                        jjtn000.updateIncrementItems.add(lastIncrementItem);
        label_14:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[123] = jj_gen;
            break label_14;
          }
          jj_consume_token(COMMA);
          lastIncrementItem = UpdateIncrementItem();
                                                                    jjtn000.updateIncrementItems.add(lastIncrementItem);
        }
        break;
      case REMOVE:
        jj_consume_token(REMOVE);
                       jjtn000.type = OUpdateOperations.TYPE_REMOVE;
        lastRemoveItem = UpdateRemoveItem();
                                                   jjtn000.updateRemoveItems.add(lastRemoveItem);
        label_15:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[124] = jj_gen;
            break label_15;
          }
          jj_consume_token(COMMA);
          lastRemoveItem = UpdateRemoveItem();
                                                       jjtn000.updateRemoveItems.add(lastRemoveItem);
        }
        break;
      default:
        jj_la1[125] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateItem UpdateItem() throws ParseException {
 /*@bgen(jjtree) UpdateItem */
  OUpdateItem jjtn000 = new OUpdateItem(JJTUPDATEITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACKET:
      case DOT:
        jjtn000.leftModifier = Modifier();
        break;
      default:
        jj_la1[126] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQ:
        jj_consume_token(EQ);
                   jjtn000.operator = OUpdateItem.OPERATOR_EQ;
        break;
      case PLUSASSIGN:
        jj_consume_token(PLUSASSIGN);
                           jjtn000.operator = OUpdateItem.OPERATOR_PLUSASSIGN;
        break;
      case MINUSASSIGN:
        jj_consume_token(MINUSASSIGN);
                        jjtn000.operator = OUpdateItem.OPERATOR_MINUSASSIGN;
        break;
      case STARASSIGN:
        jj_consume_token(STARASSIGN);
                       jjtn000.operator = OUpdateItem.OPERATOR_STARASSIGN;
        break;
      case SLASHASSIGN:
        jj_consume_token(SLASHASSIGN);
                        jjtn000.operator = OUpdateItem.OPERATOR_SLASHASSIGN;
        break;
      default:
        jj_la1[127] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtn000.right = Expression();
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateIncrementItem UpdateIncrementItem() throws ParseException {
 /*@bgen(jjtree) UpdateIncrementItem */
  OUpdateIncrementItem jjtn000 = new OUpdateIncrementItem(JJTUPDATEINCREMENTITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACKET:
      case DOT:
        jjtn000.leftModifier = Modifier();
        break;
      default:
        jj_la1[128] = jj_gen;
        ;
      }
      jj_consume_token(EQ);
      jjtn000.right = Expression();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateRemoveItem UpdateRemoveItem() throws ParseException {
 /*@bgen(jjtree) UpdateRemoveItem */
  OUpdateRemoveItem jjtn000 = new OUpdateRemoveItem(JJTUPDATEREMOVEITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACKET:
      case DOT:
        jjtn000.leftModifier = Modifier();
        break;
      default:
        jj_la1[129] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQ:
        jj_consume_token(EQ);
        jjtn000.right = Expression();
        break;
      default:
        jj_la1[130] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdatePutItem UpdatePutItem() throws ParseException {
 /*@bgen(jjtree) UpdatePutItem */
  OUpdatePutItem jjtn000 = new OUpdatePutItem(JJTUPDATEPUTITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Identifier();
      jj_consume_token(EQ);
      jjtn000.key = Expression();
      jj_consume_token(COMMA);
      jjtn000.value = Expression();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUpdateAddItem UpdateAddItem() throws ParseException {
 /*@bgen(jjtree) UpdateAddItem */
  OUpdateAddItem jjtn000 = new OUpdateAddItem(JJTUPDATEADDITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Identifier();
      jj_consume_token(EQ);
      jjtn000.right = Expression();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OInsertStatement InsertStatement() throws ParseException {
 /*@bgen(jjtree) InsertStatement */
  OInsertStatement jjtn000 = new OInsertStatement(JJTINSERTSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(INSERT);
      jj_consume_token(INTO);
      if (jj_2_56(2147483647)) {
        jjtn000.targetIndex = IndexIdentifier();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.targetClass = Identifier();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case CLUSTER:
            jj_consume_token(CLUSTER);
            jjtn000.targetClusterName = Identifier();
            break;
          default:
            jj_la1[131] = jj_gen;
            ;
          }
          break;
        case CLUSTER_IDENTIFIER:
        case CLUSTER_NUMBER_IDENTIFIER:
          jjtn000.targetCluster = Cluster();
          break;
        default:
          jj_la1[132] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      if (jj_2_57(2147483647)) {
        jjtn000.insertBody = InsertBody();
      } else {
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
        jj_consume_token(RETURN);
        jjtn000.returnStatement = Projection();
        break;
      default:
        jj_la1[133] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SELECT:
      case FROM:
      case LPAREN:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case FROM:
          jj_consume_token(FROM);
                   jjtn000.selectWithFrom = true;
          break;
        default:
          jj_la1[134] = jj_gen;
          ;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SELECT:
          if (jj_2_58(2147483647)) {
            jjtn000.selectStatement = SelectStatement();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case SELECT:
              jjtn000.selectStatement = SelectWithoutTargetStatement();
              break;
            default:
              jj_la1[135] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[137] = jj_gen;
          if (jj_2_60(2)) {
            jj_consume_token(LPAREN);
            if (jj_2_59(2147483647)) {
              jjtn000.selectStatement = SelectStatement();
            } else {
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case SELECT:
                jjtn000.selectStatement = SelectWithoutTargetStatement();
                break;
              default:
                jj_la1[136] = jj_gen;
                jj_consume_token(-1);
                throw new ParseException();
              }
            }
                  jjtn000.selectInParentheses = true;
            jj_consume_token(RPAREN);
          } else {
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
        break;
      default:
        jj_la1[138] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                 jjtn000.unsafe = true;
        break;
      default:
        jj_la1[139] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OInsertBody InsertBody() throws ParseException {
 /*@bgen(jjtree) InsertBody */
    OInsertBody jjtn000 = new OInsertBody(JJTINSERTBODY);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
    OExpression lastExpression;
    List lastExpressionList;
    try {
      if (jj_2_61(3)) {
        jj_consume_token(LPAREN);
        lastIdentifier = Identifier();
                    jjtn000.identifierList = new ArrayList();
                    jjtn000.identifierList.add(lastIdentifier);
        label_16:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[140] = jj_gen;
            break label_16;
          }
          jj_consume_token(COMMA);
          lastIdentifier = Identifier();
                                                    jjtn000.identifierList.add(lastIdentifier);
        }
        jj_consume_token(RPAREN);
        jj_consume_token(VALUES);
        jj_consume_token(LPAREN);
                    jjtn000.valueExpressions = new ArrayList>();
                    lastExpressionList = new ArrayList();
                    jjtn000.valueExpressions.add(lastExpressionList);
        lastExpression = Expression();
                                                lastExpressionList.add(lastExpression);
        label_17:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[141] = jj_gen;
            break label_17;
          }
          jj_consume_token(COMMA);
          lastExpression = Expression();
                                                    lastExpressionList.add(lastExpression);
        }
        jj_consume_token(RPAREN);
        label_18:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[142] = jj_gen;
            break label_18;
          }
          jj_consume_token(COMMA);
          jj_consume_token(LPAREN);
                        lastExpressionList = new ArrayList();
                        jjtn000.valueExpressions.add(lastExpressionList);
          lastExpression = Expression();
                                                    lastExpressionList.add(lastExpression);
          label_19:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[143] = jj_gen;
              break label_19;
            }
            jj_consume_token(COMMA);
            lastExpression = Expression();
                                                        lastExpressionList.add(lastExpression);
          }
          jj_consume_token(RPAREN);
        }
      } else if (jj_2_62(3)) {
        jj_consume_token(SET);
                    jjtn000.setExpressions = new ArrayList();
                    OInsertSetExpression lastSetExpr = new OInsertSetExpression();
                    jjtn000.setExpressions.add(lastSetExpr);
        lastSetExpr.left = Identifier();
        jj_consume_token(EQ);
        lastSetExpr.right = Expression();
        label_20:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[144] = jj_gen;
            break label_20;
          }
          jj_consume_token(COMMA);
                         lastSetExpr = new OInsertSetExpression();
                         jjtn000.setExpressions.add(lastSetExpr);
          lastSetExpr.left = Identifier();
          jj_consume_token(EQ);
          lastSetExpr.right = Expression();
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CONTENT:
          jj_consume_token(CONTENT);
          jjtn000.content = Json();
          break;
        default:
          jj_la1[145] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateVertexStatementEmptyNoTarget CreateVertexStatementEmptyNoTarget() throws ParseException {
 /*@bgen(jjtree) CreateVertexStatementEmptyNoTarget */
  OCreateVertexStatementEmptyNoTarget jjtn000 = new OCreateVertexStatementEmptyNoTarget(JJTCREATEVERTEXSTATEMENTEMPTYNOTARGET);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CREATE);
      jj_consume_token(VERTEX);
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         {if (true) return jjtn000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateVertexStatementEmpty CreateVertexStatementEmpty() throws ParseException {
 /*@bgen(jjtree) CreateVertexStatementEmpty */
  OCreateVertexStatementEmpty jjtn000 = new OCreateVertexStatementEmpty(JJTCREATEVERTEXSTATEMENTEMPTY);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CREATE);
      jj_consume_token(VERTEX);
      jjtn000.targetClass = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTER:
        jj_consume_token(CLUSTER);
        jjtn000.targetClusterName = Identifier();
        break;
      default:
        jj_la1[146] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateVertexStatement CreateVertexStatement() throws ParseException {
 /*@bgen(jjtree) CreateVertexStatement */
  OCreateVertexStatement jjtn000 = new OCreateVertexStatement(JJTCREATEVERTEXSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CREATE);
      jj_consume_token(VERTEX);
      if (jj_2_63(2147483647)) {
        jjtn000.targetClass = Identifier();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CLUSTER:
          jj_consume_token(CLUSTER);
          jjtn000.targetClusterName = Identifier();
          break;
        default:
          jj_la1[147] = jj_gen;
          ;
        }
      } else if (jj_2_64(2147483647)) {
        jjtn000.targetCluster = Cluster();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
        jj_consume_token(RETURN);
        jjtn000.returnStatement = Projection();
        break;
      default:
        jj_la1[148] = jj_gen;
        ;
      }
      if (jj_2_65(2147483647)) {
        jjtn000.insertBody = InsertBody();
      } else {
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateVertexStatementNoTarget CreateVertexStatementNoTarget() throws ParseException {
 /*@bgen(jjtree) CreateVertexStatementNoTarget */
  OCreateVertexStatementNoTarget jjtn000 = new OCreateVertexStatementNoTarget(JJTCREATEVERTEXSTATEMENTNOTARGET);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CREATE);
      jj_consume_token(VERTEX);
      jjtn000.insertBody = InsertBody();
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateEdgeStatement CreateEdgeStatement() throws ParseException {
 /*@bgen(jjtree) CreateEdgeStatement */
    OCreateEdgeStatement jjtn000 = new OCreateEdgeStatement(JJTCREATEEDGESTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));ORid lastRid;
    try {
      jj_consume_token(CREATE);
      jj_consume_token(EDGE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.targetClass = Identifier();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CLUSTER:
          jj_consume_token(CLUSTER);
          jjtn000.targetClusterName = Identifier();
          break;
        default:
          jj_la1[149] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[150] = jj_gen;
        ;
      }
      jj_consume_token(FROM);
      jjtn000.leftExpression = Expression();
      jj_consume_token(TO);
      jjtn000.rightExpression = Expression();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SET:
      case CONTENT:
      case LPAREN:
        jjtn000.body = InsertBody();
        break;
      default:
        jj_la1[151] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETRY:
        jjtn000.retry = Retry();
        break;
      default:
        jj_la1[152] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WAIT:
        jjtn000.wait = Wait();
        break;
      default:
        jj_la1[153] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BATCH:
        jjtn000.batch = Batch();
        break;
      default:
        jj_la1[154] = jj_gen;
        ;
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OInputParameter InputParameter() throws ParseException {
 /*@bgen(jjtree) InputParameter */
  OInputParameter jjtn000 = new OInputParameter(JJTINPUTPARAMETER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OInputParameter result;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case HOOK:
        result = PositionalParameter();
        break;
      case COLON:
        result = NamedParameter();
        break;
      default:
        jj_la1[155] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return result;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OPositionalParameter PositionalParameter() throws ParseException {
 /*@bgen(jjtree) PositionalParameter */
  OPositionalParameter jjtn000 = new OPositionalParameter(JJTPOSITIONALPARAMETER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(HOOK);
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
            jjtn000.paramNumber = inputParamCount;
            inputParamCount++;
            {if (true) return jjtn000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public ONamedParameter NamedParameter() throws ParseException {
 /*@bgen(jjtree) NamedParameter */
ONamedParameter jjtn000 = new ONamedParameter(JJTNAMEDPARAMETER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtn000.jjtSetFirstToken(getToken(1));OIdentifier identifierParam;
Token token;
    try {
      jj_consume_token(COLON);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        identifierParam = Identifier();
                                                 jjtn000.paramName = identifierParam.toString();
        break;
      case SKIP2:
        token = jj_consume_token(SKIP2);
                                 jjtn000.paramName = token.image;
        break;
      case LIMIT:
        token = jj_consume_token(LIMIT);
                             jjtn000.paramName = token.image;
        break;
      case FROM:
        token = jj_consume_token(FROM);
                            jjtn000.paramName = token.image;
        break;
      default:
        jj_la1[156] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         jjtn000.paramNumber = inputParamCount;
     inputParamCount++;
         {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OProjection Projection() throws ParseException {
 /*@bgen(jjtree) Projection */
    OProjection jjtn000 = new OProjection(JJTPROJECTION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));java.util.List items = new java.util.ArrayList();
    OProjectionItem lastItem = null;
    try {
      lastItem = ProjectionItem();
                                             items.add(lastItem);
      label_21:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[157] = jj_gen;
          break label_21;
        }
        jj_consume_token(COMMA);
        lastItem = ProjectionItem();
                                                                                                      items.add(lastItem);
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
            jjtn000.items = items;
            {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OProjectionItem ProjectionItem() throws ParseException {
 /*@bgen(jjtree) ProjectionItem */
  OProjectionItem jjtn000 = new OProjectionItem(JJTPROJECTIONITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.expression = Expression();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AS:
        jj_consume_token(AS);
        jjtn000.alias = Alias();
        break;
      default:
        jj_la1[158] = jj_gen;
        ;
      }
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OArraySelector ArraySelector() throws ParseException {
 /*@bgen(jjtree) ArraySelector */
  OArraySelector jjtn000 = new OArraySelector(JJTARRAYSELECTOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_66(2147483647)) {
        jjtn000.rid = Rid();
      } else if (jj_2_67(2147483647)) {
        jjtn000.inputParam = InputParameter();
      } else if (jj_2_68(2147483647)) {
        jjtn000.expression = Expression();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OArrayNumberSelector ArrayNumberSelector() throws ParseException {
 /*@bgen(jjtree) ArrayNumberSelector */
  OArrayNumberSelector jjtn000 = new OArrayNumberSelector(JJTARRAYNUMBERSELECTOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token tokenVal;
    try {
      if (jj_2_69(2147483647)) {
        jjtn000.inputValue = InputParameter();
      } else if (jj_2_70(2147483647)) {
        tokenVal = jj_consume_token(INTEGER_LITERAL);
                                       jjtn000.integer = Integer.parseInt(tokenVal.image);
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OArraySingleValuesSelector ArraySingleValuesSelector() throws ParseException {
 /*@bgen(jjtree) ArraySingleValuesSelector */
  OArraySingleValuesSelector jjtn000 = new OArraySingleValuesSelector(JJTARRAYSINGLEVALUESSELECTOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OArraySelector lastSelector;
    try {
      lastSelector = ArraySelector();
                                         jjtn000.items.add(lastSelector);
      label_22:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[159] = jj_gen;
          break label_22;
        }
        jj_consume_token(COMMA);
        lastSelector = ArraySelector();
                                                   jjtn000.items.add(lastSelector);
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OArrayRangeSelector ArrayRangeSelector() throws ParseException {
 /*@bgen(jjtree) ArrayRangeSelector */
  OArrayRangeSelector jjtn000 = new OArrayRangeSelector(JJTARRAYRANGESELECTOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      jjtn000.fromSelector = ArrayNumberSelector();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
      case RANGE:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case MINUS:
          jj_consume_token(MINUS);
          break;
        case RANGE:
          jj_consume_token(RANGE);
                                                                                jjtn000.newRange = true;
          break;
        default:
          jj_la1[160] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[161] = jj_gen;
        ;
      }
      jjtn000.toSelector = ArrayNumberSelector();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OIdentifier Alias() throws ParseException {
 /*@bgen(jjtree) Alias */
  OAlias jjtn000 = new OAlias(JJTALIAS);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier identifier;
    try {
      identifier = Identifier();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         {if (true) return identifier;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public ORecordAttribute RecordAttribute() throws ParseException {
 /*@bgen(jjtree) RecordAttribute */
  ORecordAttribute jjtn000 = new ORecordAttribute(JJTRECORDATTRIBUTE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      token = jj_consume_token(RECORD_ATTRIBUTE);
                                         jjtn000.name = token.image;
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFunctionCall FunctionCall() throws ParseException {
 /*@bgen(jjtree) FunctionCall */
    OFunctionCall jjtn000 = new OFunctionCall(JJTFUNCTIONCALL);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OExpression lastExpression = null;
    try {
      jjtn000.name = Identifier();
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case NULL:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LBRACE:
      case LBRACKET:
      case HOOK:
      case COLON:
      case MINUS:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
        lastExpression = Expression();
                                           jjtn000.params.add(lastExpression);
        label_23:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[162] = jj_gen;
            break label_23;
          }
          jj_consume_token(COMMA);
          lastExpression = Expression();
                                                                                                                         jjtn000.params.add(lastExpression);
        }
        break;
      default:
        jj_la1[163] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMethodCall MethodCall() throws ParseException {
 /*@bgen(jjtree) MethodCall */
  OMethodCall jjtn000 = new OMethodCall(JJTMETHODCALL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OExpression lastExpression;
    try {
      jj_consume_token(DOT);
      jjtn000.methodName = Identifier();
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case NULL:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LBRACE:
      case LBRACKET:
      case HOOK:
      case COLON:
      case MINUS:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
        lastExpression = Expression();
                                            jjtn000.params.add(lastExpression);
        label_24:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[164] = jj_gen;
            break label_24;
          }
          jj_consume_token(COMMA);
          lastExpression = Expression();
                                                      jjtn000.params.add(lastExpression);
        }
        break;
      default:
        jj_la1[165] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLevelZeroIdentifier LevelZeroIdentifier() throws ParseException {
 /*@bgen(jjtree) LevelZeroIdentifier */
  OLevelZeroIdentifier jjtn000 = new OLevelZeroIdentifier(JJTLEVELZEROIDENTIFIER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_71(2147483647)) {
        jjtn000.functionCall = FunctionCall();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case THIS:
          jj_consume_token(THIS);
                 jjtn000.self = true;
          break;
        default:
          jj_la1[166] = jj_gen;
          if (jj_2_72(2147483647)) {
            jjtn000.collection = Collection();
          } else {
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OSuffixIdentifier SuffixIdentifier() throws ParseException {
 /*@bgen(jjtree) SuffixIdentifier */
  OSuffixIdentifier jjtn000 = new OSuffixIdentifier(JJTSUFFIXIDENTIFIER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_73(2147483647)) {
        jjtn000.identifier = Identifier();
      } else if (jj_2_74(2147483647)) {
        jjtn000.recordAttribute = RecordAttribute();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case STAR:
          jj_consume_token(STAR);
                   jjtn000.star = true;
          break;
        default:
          jj_la1[167] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBaseIdentifier BaseIdentifier() throws ParseException {
 /*@bgen(jjtree) BaseIdentifier */
  OBaseIdentifier jjtn000 = new OBaseIdentifier(JJTBASEIDENTIFIER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_75(2147483647)) {
        jjtn000.levelZero = LevelZeroIdentifier();
      } else if (jj_2_76(2147483647)) {
        jjtn000.suffix = SuffixIdentifier();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OModifier Modifier() throws ParseException {
 /*@bgen(jjtree) Modifier */
  OModifier jjtn000 = new OModifier(JJTMODIFIER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACKET:
        jj_consume_token(LBRACKET);
                             jjtn000.squareBrackets = true;
        if (jj_2_77(2147483647)) {
          jjtn000.arrayRange = ArrayRangeSelector();
        } else if (jj_2_78(2147483647)) {
          jjtn000.condition = OrBlock();
        } else if (jj_2_79(2147483647)) {
          jjtn000.arraySingleValues = ArraySingleValuesSelector();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        jj_consume_token(RBRACKET);
        break;
      default:
        jj_la1[168] = jj_gen;
        if (jj_2_80(2147483647)) {
          jjtn000.methodCall = MethodCall();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case DOT:
            jj_consume_token(DOT);
            jjtn000.suffix = SuffixIdentifier();
            break;
          default:
            jj_la1[169] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
      if (jj_2_81(2147483647)) {
        jjtn000.next = Modifier();
      } else {
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OExpression Expression() throws ParseException {
 /*@bgen(jjtree) Expression */
 OExpression jjtn000 = new OExpression(JJTEXPRESSION);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NULL:
        jj_consume_token(NULL);
                jjtn000.value = null;
        break;
      default:
        jj_la1[170] = jj_gen;
        if (jj_2_82(2147483647)) {
          jjtn000.value = Rid();
        } else if (jj_2_83(2147483647)) {
          jjtn000.value = MathExpression();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LBRACE:
            jjtn000.value = Json();
            break;
          case TRUE:
            jj_consume_token(TRUE);
                jjtn000.value = true;
            break;
          case FALSE:
            jj_consume_token(FALSE);
                 jjtn000.value = false;
            break;
          default:
            jj_la1[171] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMathExpression MathExpression() throws ParseException {
 /*@bgen(jjtree) MathExpression */
    OMathExpression jjtn000 = new OMathExpression(JJTMATHEXPRESSION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OMathExpression sub;
    jjtn000.setChildExpressions(new java.util.ArrayList());
    try {
      sub = MultExpression();
                                     jjtn000.getChildExpressions().add(sub);
      label_25:
      while (true) {
        if (jj_2_84(2)) {
          ;
        } else {
          break label_25;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PLUS:
          jj_consume_token(PLUS);
                                          jjtn000.operators.add( OMathExpression.Operator.PLUS);
          break;
        case MINUS:
          jj_consume_token(MINUS);
                                                                                                               jjtn000.operators.add(OMathExpression.Operator.MINUS);
          break;
        default:
          jj_la1[172] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        sub = MultExpression();
                                         jjtn000.getChildExpressions().add(sub);
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
            if(jjtn000.getChildExpressions().size() != 1){
                {if (true) return jjtn000;}
            }else{
                {if (true) return jjtn000.getChildExpressions().get(0);}
            }
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMathExpression MultExpression() throws ParseException {
 /*@bgen(jjtree) MultExpression */
    OMultExpression jjtn000 = new OMultExpression(JJTMULTEXPRESSION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OMathExpression sub;
    jjtn000.setChildExpressions(new java.util.ArrayList());
    try {
      sub = FirstLevelExpression();
                                        jjtn000.getChildExpressions().add(sub);
      label_26:
      while (true) {
        if (jj_2_85(2)) {
          ;
        } else {
          break label_26;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case STAR:
          jj_consume_token(STAR);
                         jjtn000.operators.add( OMathExpression.Operator.STAR);
          break;
        case SLASH:
          jj_consume_token(SLASH);
                          jjtn000.operators.add( OMathExpression.Operator.SLASH);
          break;
        case REM:
          jj_consume_token(REM);
                        jjtn000.operators.add( OMathExpression.Operator.REM);
          break;
        default:
          jj_la1[173] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        sub = FirstLevelExpression();
                                            jjtn000.getChildExpressions().add(sub);
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
            if(jjtn000.getChildExpressions().size() != 1){
                {if (true) return jjtn000;}
            }else{
                {if (true) return jjtn000.getChildExpressions().get(0);}
            }
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMathExpression FirstLevelExpression() throws ParseException {
 /*@bgen(jjtree) FirstLevelExpression */
  OFirstLevelExpression jjtn000 = new OFirstLevelExpression(JJTFIRSTLEVELEXPRESSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OMathExpression expr;
    try {
      if (jj_2_86(2147483647)) {
        expr = ParenthesisExpression();
      } else if (jj_2_87(2147483647)) {
        expr = BaseExpression();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return expr;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMathExpression ParenthesisExpression() throws ParseException {
 /*@bgen(jjtree) ParenthesisExpression */
  OParenthesisExpression jjtn000 = new OParenthesisExpression(JJTPARENTHESISEXPRESSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LPAREN);
      if (jj_2_88(2)) {
        jjtn000.statement = QueryStatement();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case NULL:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LBRACE:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
          jjtn000.expression = Expression();
          break;
        case INSERT:
          jjtn000.statement = InsertStatement();
          break;
        default:
          jj_la1[174] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jj_consume_token(RPAREN);
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBaseExpression BaseExpression() throws ParseException {
 /*@bgen(jjtree) BaseExpression */
  OBaseExpression jjtn000 = new OBaseExpression(JJTBASEEXPRESSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case MINUS:
        jjtn000.number = Number();
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case LBRACKET:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.identifier = BaseIdentifier();
        if (jj_2_89(2147483647)) {
          jjtn000.modifier = Modifier();
        } else {
          ;
        }
        break;
      case HOOK:
      case COLON:
        jjtn000.inputParam = InputParameter();
        if (jj_2_90(2147483647)) {
          jjtn000.modifier = Modifier();
        } else {
          ;
        }
        break;
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case STRING_LITERAL:
          token = jj_consume_token(STRING_LITERAL);
                                           jjtn000.string = token.image;
          break;
        case CHARACTER_LITERAL:
          token = jj_consume_token(CHARACTER_LITERAL);
                                              jjtn000.string = token.image;
          break;
        default:
          jj_la1[175] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        if (jj_2_91(2147483647)) {
          jjtn000.modifier = Modifier();
        } else {
          ;
        }
        break;
      default:
        jj_la1[176] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFromClause FromClause() throws ParseException {
 /*@bgen(jjtree) FromClause */
  OFromClause jjtn000 = new OFromClause(JJTFROMCLAUSE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.item = FromItem();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLetClause LetClause() throws ParseException {
 /*@bgen(jjtree) LetClause */
    OLetClause jjtn000 = new OLetClause(JJTLETCLAUSE);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OLetItem lastItem;
    try {
      jj_consume_token(LET);
      lastItem = LetItem();
                                     jjtn000.items.add(lastItem);
      label_27:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[177] = jj_gen;
          break label_27;
        }
        jj_consume_token(COMMA);
        lastItem = LetItem();
                                                                                                     jjtn000.items.add(lastItem);
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLetItem LetItem() throws ParseException {
 /*@bgen(jjtree) LetItem */
  OLetItem jjtn000 = new OLetItem(JJTLETITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.varName = Identifier();
      jj_consume_token(EQ);
      if (jj_2_92(2147483647)) {
        jjtn000.expression = Expression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LPAREN:
          jj_consume_token(LPAREN);
          jjtn000.query = QueryStatement();
          jj_consume_token(RPAREN);
          break;
        default:
          jj_la1[178] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
            if(jjtn000.varName.getStringValue().equalsIgnoreCase("$root")||
               jjtn000.varName.getStringValue().equalsIgnoreCase("root")||
               jjtn000.varName.getStringValue().equalsIgnoreCase("$parent")||
               jjtn000.varName.getStringValue().equalsIgnoreCase("parent")||
               jjtn000.varName.getStringValue().equalsIgnoreCase("$current")||
               jjtn000.varName.getStringValue().equalsIgnoreCase("current")){
               {if (true) throw new OCommandSQLParsingException("invalid LET statement: "+jjtn000.varName+" is a reserved keyword");}
            }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
        {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFromItem FromItem() throws ParseException {
 /*@bgen(jjtree) FromItem */
    OFromItem jjtn000 = new OFromItem(JJTFROMITEM);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));jjtn000.rids = new java.util.ArrayList();
    ORid lastRid;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        lastRid = Rid();
                          jjtn000.rids.add(lastRid);
        break;
      case CLUSTER_IDENTIFIER:
      case CLUSTER_NUMBER_IDENTIFIER:
        /*(
            	     lastRid = Rid() { jjtThis.rids.add(lastRid); }
            	    (
            	         lastRid = Rid() { jjtThis.rids.add(lastRid); }
            	    )* 
            	)
            	|*/
                jjtn000.cluster = Cluster();
        break;
      case CLUSTER:
        jjtn000.clusterList = ClusterList();
        break;
      default:
        jj_la1[179] = jj_gen;
        if (jj_2_94(2147483647)) {
          jjtn000.index = IndexIdentifier();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case METADATA_IDENTIFIER:
            jjtn000.metadata = MetadataIdentifier();
            break;
          case LPAREN:
            jj_consume_token(LPAREN);
            jjtn000.statement = QueryStatement();
            jj_consume_token(RPAREN);
            break;
          case HOOK:
          case COLON:
            jjtn000.inputParam = InputParameter();
            break;
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case THIS:
          case RECORD_ATTRIBUTE:
          case LBRACKET:
          case STAR:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            jjtn000.identifier = BaseIdentifier();
            if (jj_2_93(2147483647)) {
              jjtn000.modifier = Modifier();
            } else {
              ;
            }
            break;
          default:
            jj_la1[180] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCluster Cluster() throws ParseException {
 /*@bgen(jjtree) Cluster */
  OCluster jjtn000 = new OCluster(JJTCLUSTER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token cName;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTER_IDENTIFIER:
        cName = jj_consume_token(CLUSTER_IDENTIFIER);
                                          jjtn000.clusterName = cName.image.split(":")[1];
        break;
      case CLUSTER_NUMBER_IDENTIFIER:
        cName = jj_consume_token(CLUSTER_NUMBER_IDENTIFIER);
                                                 jjtn000.clusterNumber = Integer.parseInt(cName.image.split(":")[1]);
        break;
      default:
        jj_la1[181] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OClusterList ClusterList() throws ParseException {
 /*@bgen(jjtree) ClusterList */
  OClusterList jjtn000 = new OClusterList(JJTCLUSTERLIST);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
    try {
      jj_consume_token(CLUSTER);
      jj_consume_token(COLON);
      jj_consume_token(LBRACKET);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        lastIdentifier = Identifier();
                                                jjtn000.clusters.add(lastIdentifier);
        label_28:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[182] = jj_gen;
            break label_28;
          }
          jj_consume_token(COMMA);
          lastIdentifier = Identifier();
                                                          jjtn000.clusters.add(lastIdentifier);
        }
        break;
      default:
        jj_la1[183] = jj_gen;
        ;
      }
      jj_consume_token(RBRACKET);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMetadataIdentifier MetadataIdentifier() throws ParseException {
 /*@bgen(jjtree) MetadataIdentifier */
  OMetadataIdentifier jjtn000 = new OMetadataIdentifier(JJTMETADATAIDENTIFIER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token mdName;
    try {
      mdName = jj_consume_token(METADATA_IDENTIFIER);
                                            jjtn000.name = mdName.image.split(":")[1];
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OIndexName IndexName() throws ParseException {
 /*@bgen(jjtree) IndexName */
    OIndexName jjtn000 = new OIndexName(JJTINDEXNAME);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));StringBuilder builder = new StringBuilder();
    Token token;
    OIdentifier lastIdentifier;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 247:
        jj_consume_token(247);
                             builder.append("__@recordmap@___");
        break;
      default:
        jj_la1[184] = jj_gen;
        ;
      }
      lastIdentifier = Identifier();
                                      builder.append(lastIdentifier.getValue());
      label_29:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DOT:
        case MINUS:
          ;
          break;
        default:
          jj_la1[185] = jj_gen;
          break label_29;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DOT:
          jj_consume_token(DOT);
                    builder.append(".");
          break;
        case MINUS:
          jj_consume_token(MINUS);
                      builder.append("-");
          break;
        default:
          jj_la1[186] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        lastIdentifier = Identifier();
                                        builder.append(lastIdentifier.getValue());
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
        jjtn000.value = builder.toString();
        {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OIndexIdentifier IndexIdentifier() throws ParseException {
 /*@bgen(jjtree) IndexIdentifier */
    OIndexIdentifier jjtn000 = new OIndexIdentifier(JJTINDEXIDENTIFIER);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INDEX_COLON:
        jj_consume_token(INDEX_COLON);
        jjtn000.indexName = IndexName();
                                              jjtn000.type = OIndexIdentifier.Type.INDEX;
        break;
      case INDEXVALUES_IDENTIFIER:
      case INDEXVALUESASC_IDENTIFIER:
      case INDEXVALUESDESC_IDENTIFIER:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INDEXVALUES_IDENTIFIER:
          token = jj_consume_token(INDEXVALUES_IDENTIFIER);
                                                   jjtn000.type = OIndexIdentifier.Type.VALUES;
          break;
        case INDEXVALUESASC_IDENTIFIER:
          token = jj_consume_token(INDEXVALUESASC_IDENTIFIER);
                                                      jjtn000.type = OIndexIdentifier.Type.VALUESASC;
          break;
        case INDEXVALUESDESC_IDENTIFIER:
          token = jj_consume_token(INDEXVALUESDESC_IDENTIFIER);
                                                       jjtn000.type = OIndexIdentifier.Type.VALUESDESC;
          break;
        default:
          jj_la1[187] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                jjtn000.indexNameString = token.image.split(":")[1];
        break;
      default:
        jj_la1[188] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OWhereClause WhereClause() throws ParseException {
 /*@bgen(jjtree) WhereClause */
  OWhereClause jjtn000 = new OWhereClause(JJTWHERECLAUSE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.baseExpression = OrBlock();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OOrBlock OrBlock() throws ParseException {
 /*@bgen(jjtree) OrBlock */
  OOrBlock jjtn000 = new OOrBlock(JJTORBLOCK);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OAndBlock lastAnd = null;
    try {
      lastAnd = AndBlock();
                               jjtn000.getSubBlocks().add(lastAnd);
      label_30:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OR:
          ;
          break;
        default:
          jj_la1[189] = jj_gen;
          break label_30;
        }
        jj_consume_token(OR);
        lastAnd = AndBlock();
                                      jjtn000.getSubBlocks().add(lastAnd);
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OAndBlock AndBlock() throws ParseException {
 /*@bgen(jjtree) AndBlock */
 OAndBlock jjtn000 = new OAndBlock(JJTANDBLOCK);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));ONotBlock lastNot = null;
    try {
      lastNot = NotBlock();
                           jjtn000.getSubBlocks().add(lastNot);
      label_31:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case AND:
          ;
          break;
        default:
          jj_la1[190] = jj_gen;
          break label_31;
        }
        jj_consume_token(AND);
        lastNot = NotBlock();
                                   jjtn000.getSubBlocks().add(lastNot);
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ONotBlock NotBlock() throws ParseException {
 /*@bgen(jjtree) NotBlock */
  ONotBlock jjtn000 = new ONotBlock(JJTNOTBLOCK);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NOT:
        jj_consume_token(NOT);
               jjtn000.negate = true;
        if (jj_2_95(2147483647)) {
          jjtn000.sub = ConditionBlock();
        } else if (jj_2_96(2147483647)) {
          jjtn000.sub = ParenthesisBlock();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case NULL:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LBRACE:
      case LBRACKET:
      case HOOK:
      case COLON:
      case MINUS:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
        if (jj_2_97(2147483647)) {
          jjtn000.sub = ConditionBlock();
        } else if (jj_2_98(2147483647)) {
          jjtn000.sub = ParenthesisBlock();
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[191] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression ParenthesisBlock() throws ParseException {
 /*@bgen(jjtree) ParenthesisBlock */
  OParenthesisBlock jjtn000 = new OParenthesisBlock(JJTPARENTHESISBLOCK);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LPAREN);
      jjtn000.subElement = OrBlock();
      jj_consume_token(RPAREN);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression ConditionBlock() throws ParseException {
 /*@bgen(jjtree) ConditionBlock */
 OConditionBlock jjtn000 = new OConditionBlock(JJTCONDITIONBLOCK);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OBooleanExpression result = null;
    try {
      if (jj_2_99(2147483647)) {
        result = IsNotNullCondition();
      } else if (jj_2_100(2147483647)) {
        result = IsNullCondition();
      } else if (jj_2_101(2147483647)) {
        result = IsNotDefinedCondition();
      } else if (jj_2_102(2147483647)) {
        result = IsDefinedCondition();
      } else if (jj_2_103(2147483647)) {
        result = InCondition();
      } else if (jj_2_104(2147483647)) {
        result = NotInCondition();
      } else if (jj_2_105(2147483647)) {
        result = BinaryCondition();
      } else if (jj_2_106(2147483647)) {
        result = BetweenCondition();
      } else if (jj_2_107(2147483647)) {
        result = ContainsCondition();
      } else if (jj_2_108(2147483647)) {
        result = ContainsValueCondition();
      } else if (jj_2_109(2147483647)) {
        result = ContainsAllCondition();
      } else if (jj_2_110(2147483647)) {
        result = ContainsTextCondition();
      } else if (jj_2_111(2147483647)) {
        result = MatchesCondition();
      } else if (jj_2_112(2147483647)) {
        result = IndexMatchCondition();
      } else if (jj_2_113(2147483647)) {
        result = InstanceofCondition();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TRUE:
          jj_consume_token(TRUE);
             result = OBooleanExpression.TRUE;
          break;
        case FALSE:
          jj_consume_token(FALSE);
              result = OBooleanExpression.FALSE;
          break;
        default:
          jj_la1[192] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return result;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBinaryCompareOperator CompareOperator() throws ParseException {
 /*@bgen(jjtree) CompareOperator */
   OCompareOperator jjtn000 = new OCompareOperator(JJTCOMPAREOPERATOR);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtn000.jjtSetFirstToken(getToken(1));OBinaryCompareOperator result;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQ:
      case EQEQ:
        result = EqualsCompareOperator();
        break;
      case LT:
        result = LtOperator();
        break;
      case GT:
        result = GtOperator();
        break;
      case NE:
        result = NeOperator();
        break;
      case NEQ:
        result = NeqOperator();
        break;
      case GE:
        result = GeOperator();
        break;
      case LE:
        result = LeOperator();
        break;
      case LIKE:
        result = LikeOperator();
        break;
      case CONTAINSKEY:
        result = ContainsKeyOperator();
        break;
      case LUCENE:
        result = LuceneOperator();
        break;
      case NEAR:
        result = NearOperator();
        break;
      case WITHIN:
        result = WithinOperator();
        break;
      case SC_AND:
        result = ScAndOperator();
        break;
      default:
        jj_la1[193] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return result;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLtOperator LtOperator() throws ParseException {
 /*@bgen(jjtree) LtOperator */
  OLtOperator jjtn000 = new OLtOperator(JJTLTOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LT);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OGtOperator GtOperator() throws ParseException {
 /*@bgen(jjtree) GtOperator */
  OGtOperator jjtn000 = new OGtOperator(JJTGTOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(GT);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ONeOperator NeOperator() throws ParseException {
 /*@bgen(jjtree) NeOperator */
  ONeOperator jjtn000 = new ONeOperator(JJTNEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(NE);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ONeqOperator NeqOperator() throws ParseException {
 /*@bgen(jjtree) NeqOperator */
  ONeqOperator jjtn000 = new ONeqOperator(JJTNEQOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(NEQ);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OGeOperator GeOperator() throws ParseException {
 /*@bgen(jjtree) GeOperator */
  OGeOperator jjtn000 = new OGeOperator(JJTGEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(GE);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLeOperator LeOperator() throws ParseException {
 /*@bgen(jjtree) LeOperator */
  OLeOperator jjtn000 = new OLeOperator(JJTLEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LE);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLikeOperator LikeOperator() throws ParseException {
 /*@bgen(jjtree) LikeOperator */
  OLikeOperator jjtn000 = new OLikeOperator(JJTLIKEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LIKE);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLuceneOperator LuceneOperator() throws ParseException {
 /*@bgen(jjtree) LuceneOperator */
  OLuceneOperator jjtn000 = new OLuceneOperator(JJTLUCENEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LUCENE);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public ONearOperator NearOperator() throws ParseException {
 /*@bgen(jjtree) NearOperator */
  ONearOperator jjtn000 = new ONearOperator(JJTNEAROPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(NEAR);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OWithinOperator WithinOperator() throws ParseException {
 /*@bgen(jjtree) WithinOperator */
  OWithinOperator jjtn000 = new OWithinOperator(JJTWITHINOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(WITHIN);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OScAndOperator ScAndOperator() throws ParseException {
 /*@bgen(jjtree) ScAndOperator */
  OScAndOperator jjtn000 = new OScAndOperator(JJTSCANDOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(SC_AND);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OContainsKeyOperator ContainsKeyOperator() throws ParseException {
 /*@bgen(jjtree) ContainsKeyOperator */
  OContainsKeyOperator jjtn000 = new OContainsKeyOperator(JJTCONTAINSKEYOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CONTAINSKEY);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OContainsValueOperator ContainsValueOperator() throws ParseException {
 /*@bgen(jjtree) ContainsValueOperator */
  OContainsValueOperator jjtn000 = new OContainsValueOperator(JJTCONTAINSVALUEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CONTAINSVALUE);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OEqualsCompareOperator EqualsCompareOperator() throws ParseException {
 /*@bgen(jjtree) EqualsCompareOperator */
  OEqualsCompareOperator jjtn000 = new OEqualsCompareOperator(JJTEQUALSCOMPAREOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQ:
        jj_consume_token(EQ);
               jjtn000.doubleEquals = false;
        break;
      case EQEQ:
        jj_consume_token(EQEQ);
                 jjtn000.doubleEquals = true;
        break;
      default:
        jj_la1[194] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression BinaryCondition() throws ParseException {
 /*@bgen(jjtree) BinaryCondition */
  OBinaryCondition jjtn000 = new OBinaryCondition(JJTBINARYCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Expression();
      jjtn000.operator = CompareOperator();
      jjtn000.right = Expression();
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression ContainsValueCondition() throws ParseException {
 /*@bgen(jjtree) ContainsValueCondition */
  OContainsValueCondition jjtn000 = new OContainsValueCondition(JJTCONTAINSVALUECONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Expression();
      jjtn000.operator = ContainsValueOperator();
      if (jj_2_114(3)) {
        jj_consume_token(LPAREN);
        jjtn000.condition = OrBlock();
        jj_consume_token(RPAREN);
      } else if (jj_2_115(2147483647)) {
        jjtn000.expression = Expression();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
    {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression InstanceofCondition() throws ParseException {
 /*@bgen(jjtree) InstanceofCondition */
    OInstanceofCondition jjtn000 = new OInstanceofCondition(JJTINSTANCEOFCONDITION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      jjtn000.left = Expression();
      jj_consume_token(INSTANCEOF);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.right = Identifier();
        break;
      case STRING_LITERAL:
        token = jj_consume_token(STRING_LITERAL);
                                              jjtn000.rightString = token.image;
        break;
      case CHARACTER_LITERAL:
        token = jj_consume_token(CHARACTER_LITERAL);
                                                 jjtn000.rightString = token.image;
        break;
      default:
        jj_la1[195] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression IndexMatchCondition() throws ParseException {
 /*@bgen(jjtree) IndexMatchCondition */
    OIndexMatchCondition jjtn000 = new OIndexMatchCondition(JJTINDEXMATCHCONDITION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token token;
    jjtn000.leftExpressions = new ArrayList();
    OExpression lastExpression;
    try {
      jj_consume_token(KEY);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LUCENE:
      case NEAR:
      case WITHIN:
      case EQ:
      case EQEQ:
      case LT:
      case GT:
      case LE:
      case GE:
      case NE:
      case NEQ:
      case SC_AND:
      case LIKE:
      case CONTAINSKEY:
        jjtn000.operator = CompareOperator();
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case NULL:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LBRACE:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
          lastExpression = Expression();
                                                jjtn000.leftExpressions.add(lastExpression);
          label_32:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[196] = jj_gen;
              break label_32;
            }
            jj_consume_token(COMMA);
            lastExpression = Expression();
                                                    jjtn000.leftExpressions.add(lastExpression);
          }
          break;
        default:
          jj_la1[197] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      case BETWEEN:
        jj_consume_token(BETWEEN);
                       jjtn000.between = true;
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case NULL:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LBRACE:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
          lastExpression = Expression();
                                                jjtn000.leftExpressions.add(lastExpression);
          label_33:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[198] = jj_gen;
              break label_33;
            }
            jj_consume_token(COMMA);
            lastExpression = Expression();
                                                    jjtn000.leftExpressions.add(lastExpression);
          }
          break;
        default:
          jj_la1[199] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        jj_consume_token(AND);
        jj_consume_token(LBRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case NULL:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LBRACE:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
          lastExpression = Expression();
                                                jjtn000.rightExpressions.add(lastExpression);
          label_34:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[200] = jj_gen;
              break label_34;
            }
            jj_consume_token(COMMA);
            lastExpression = Expression();
                                                    jjtn000.rightExpressions.add(lastExpression);
          }
          break;
        default:
          jj_la1[201] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      default:
        jj_la1[202] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression BetweenCondition() throws ParseException {
 /*@bgen(jjtree) BetweenCondition */
  OBetweenCondition jjtn000 = new OBetweenCondition(JJTBETWEENCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.first = Expression();
      jj_consume_token(BETWEEN);
      jjtn000.second = Expression();
      jj_consume_token(AND);
      jjtn000.third = Expression();
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression IsNullCondition() throws ParseException {
 /*@bgen(jjtree) IsNullCondition */
  OIsNullCondition jjtn000 = new OIsNullCondition(JJTISNULLCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.expression = Expression();
      jj_consume_token(IS);
      jj_consume_token(NULL);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression IsNotNullCondition() throws ParseException {
 /*@bgen(jjtree) IsNotNullCondition */
  OIsNotNullCondition jjtn000 = new OIsNotNullCondition(JJTISNOTNULLCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.expression = Expression();
      jj_consume_token(IS);
      jj_consume_token(NOT);
      jj_consume_token(NULL);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression IsDefinedCondition() throws ParseException {
 /*@bgen(jjtree) IsDefinedCondition */
  OIsDefinedCondition jjtn000 = new OIsDefinedCondition(JJTISDEFINEDCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.expression = Expression();
      jj_consume_token(IS);
      jj_consume_token(DEFINED);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression IsNotDefinedCondition() throws ParseException {
 /*@bgen(jjtree) IsNotDefinedCondition */
  OIsNotDefinedCondition jjtn000 = new OIsNotDefinedCondition(JJTISNOTDEFINEDCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.expression = Expression();
      jj_consume_token(IS);
      jj_consume_token(NOT);
      jj_consume_token(DEFINED);
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression ContainsCondition() throws ParseException {
 /*@bgen(jjtree) ContainsCondition */
  OContainsCondition jjtn000 = new OContainsCondition(JJTCONTAINSCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Expression();
      jj_consume_token(CONTAINS);
      if (jj_2_116(3)) {
        jj_consume_token(LPAREN);
        jjtn000.condition = OrBlock();
        jj_consume_token(RPAREN);
      } else if (jj_2_117(2147483647)) {
        jjtn000.right = Expression();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OInOperator InOperator() throws ParseException {
 /*@bgen(jjtree) InOperator */
  OInOperator jjtn000 = new OInOperator(JJTINOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(IN);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression InCondition() throws ParseException {
 /*@bgen(jjtree) InCondition */
    OInCondition jjtn000 = new OInCondition(JJTINCONDITION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OExpression lastExpression;
    try {
      jjtn000.left = Expression();
      jjtn000.operator = InOperator();
      if (jj_2_118(2)) {
        jj_consume_token(LPAREN);
        jjtn000.rightStatement = SelectStatement();
        jj_consume_token(RPAREN);
      } else if (jj_2_119(2)) {
        jj_consume_token(LPAREN);
        jjtn000.rightParam = InputParameter();
        jj_consume_token(RPAREN);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case LPAREN:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.rightMathExpression = MathExpression();
          break;
        default:
          jj_la1[203] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
   jjtree.closeNodeScope(jjtn000, true);
   jjtc000 = false;
   jjtn000.jjtSetLastToken(getToken(0));
  {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression NotInCondition() throws ParseException {
 /*@bgen(jjtree) NotInCondition */
    ONotInCondition jjtn000 = new ONotInCondition(JJTNOTINCONDITION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OExpression lastExpression;
    try {
      jjtn000.left = Expression();
      jj_consume_token(NOT);
      InOperator();
      if (jj_2_120(2)) {
        jj_consume_token(LPAREN);
        jjtn000.rightStatement = SelectStatement();
        jj_consume_token(RPAREN);
      } else if (jj_2_121(2)) {
        jj_consume_token(LPAREN);
        jjtn000.rightParam = InputParameter();
        jj_consume_token(RPAREN);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case THIS:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case LPAREN:
        case LBRACKET:
        case HOOK:
        case COLON:
        case MINUS:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.rightMathExpression = MathExpression();
          break;
        default:
          jj_la1[204] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression ContainsAllCondition() throws ParseException {
 /*@bgen(jjtree) ContainsAllCondition */
  OContainsAllCondition jjtn000 = new OContainsAllCondition(JJTCONTAINSALLCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Expression();
      jj_consume_token(CONTAINSALL);
      if (jj_2_122(3)) {
        jj_consume_token(LPAREN);
        jjtn000.rightBlock = OrBlock();
        jj_consume_token(RPAREN);
      } else if (jj_2_123(2147483647)) {
        jjtn000.right = Expression();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression ContainsTextCondition() throws ParseException {
 /*@bgen(jjtree) ContainsTextCondition */
  OContainsTextCondition jjtn000 = new OContainsTextCondition(JJTCONTAINSTEXTCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.left = Expression();
      jj_consume_token(CONTAINSTEXT);
      jjtn000.right = Expression();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBooleanExpression MatchesCondition() throws ParseException {
 /*@bgen(jjtree) MatchesCondition */
 OMatchesCondition jjtn000 = new OMatchesCondition(JJTMATCHESCONDITION);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      jjtn000.expression = Expression();
      jj_consume_token(MATCHES);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STRING_LITERAL:
        token = jj_consume_token(STRING_LITERAL);
                                        jjtn000.right = token.image;
        break;
      case CHARACTER_LITERAL:
        token = jj_consume_token(CHARACTER_LITERAL);
                                           jjtn000.right = token.image;
        break;
      case HOOK:
      case COLON:
        jjtn000.rightParam = InputParameter();
        break;
      default:
        jj_la1[205] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OOrderBy OrderBy() throws ParseException {
 /*@bgen(jjtree) OrderBy */
    OOrderBy jjtn000 = new OOrderBy(JJTORDERBY);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));jjtn000.items = new java.util.ArrayList();
    OOrderByItem lastItem;
    OIdentifier lastIdentifier;
    OModifier lastModifier;
    ORid lastRid;
    Token lastToken;
    try {
      jj_consume_token(ORDER);
      jj_consume_token(BY);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case MINUS:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
                    lastItem = new OOrderByItem();
                    jjtn000.items.add(lastItem);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          lastIdentifier = Identifier();
                                                        lastItem.alias = lastIdentifier.toString();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LBRACKET:
          case DOT:
            lastModifier = Modifier();
                                                       lastItem.modifier = lastModifier;
            break;
          default:
            jj_la1[206] = jj_gen;
            ;
          }
          break;
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastItem.rid = Rid();
          break;
        case RECORD_ATTRIBUTE:
          lastToken = jj_consume_token(RECORD_ATTRIBUTE);
                                                     lastItem.recordAttr = lastToken.image;
          break;
        default:
          jj_la1[207] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case ASC:
        case DESC:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case DESC:
            jj_consume_token(DESC);
                       lastItem.type = OOrderByItem.DESC;
            break;
          case ASC:
            jj_consume_token(ASC);
                                                                      lastItem.type = OOrderByItem.ASC;
            break;
          default:
            jj_la1[208] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[209] = jj_gen;
          ;
        }
        break;
      case LPAREN:
        jj_consume_token(LPAREN);
                    lastItem = new OOrderByItem();
                    jjtn000.items.add(lastItem);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          lastIdentifier = Identifier();
                                                        lastItem.alias = lastIdentifier.toString();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LBRACKET:
          case DOT:
            lastModifier = Modifier();
                                                       lastItem.modifier = lastModifier;
            break;
          default:
            jj_la1[210] = jj_gen;
            ;
          }
          break;
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastItem.rid = Rid();
          break;
        case RECORD_ATTRIBUTE:
          lastToken = jj_consume_token(RECORD_ATTRIBUTE);
                                                     lastItem.recordAttr = lastToken.image;
          break;
        default:
          jj_la1[211] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case ASC:
        case DESC:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case DESC:
            jj_consume_token(DESC);
                       lastItem.type = OOrderByItem.DESC;
            break;
          case ASC:
            jj_consume_token(ASC);
                                                                      lastItem.type = OOrderByItem.ASC;
            break;
          default:
            jj_la1[212] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[213] = jj_gen;
          ;
        }
        jj_consume_token(RPAREN);
        break;
      default:
        jj_la1[214] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      label_35:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[215] = jj_gen;
          break label_35;
        }
        jj_consume_token(COMMA);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case RECORD_ATTRIBUTE:
        case INTEGER_LITERAL:
        case MINUS:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case 246:
                        lastItem = new OOrderByItem();
                        jjtn000.items.add(lastItem);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            lastIdentifier = Identifier();
                                                            lastItem.alias = lastIdentifier.toString();
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case LBRACKET:
            case DOT:
              lastModifier = Modifier();
                                                           lastItem.modifier = lastModifier;
              break;
            default:
              jj_la1[216] = jj_gen;
              ;
            }
            break;
          case INTEGER_LITERAL:
          case MINUS:
          case 246:
            lastItem.rid = Rid();
            break;
          case RECORD_ATTRIBUTE:
            lastToken = jj_consume_token(RECORD_ATTRIBUTE);
                                                         lastItem.recordAttr = lastToken.image;
            break;
          default:
            jj_la1[217] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case ASC:
          case DESC:
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case DESC:
              jj_consume_token(DESC);
                           lastItem.type = OOrderByItem.DESC;
              break;
            case ASC:
              jj_consume_token(ASC);
                                                                          lastItem.type = OOrderByItem.ASC;
              break;
            default:
              jj_la1[218] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
            break;
          default:
            jj_la1[219] = jj_gen;
            ;
          }
          break;
        case LPAREN:
          jj_consume_token(LPAREN);
                        lastItem = new OOrderByItem();
                        jjtn000.items.add(lastItem);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            lastIdentifier = Identifier();
                                                            lastItem.alias = lastIdentifier.toString();
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case LBRACKET:
            case DOT:
              lastModifier = Modifier();
                                                           lastItem.modifier = lastModifier;
              break;
            default:
              jj_la1[220] = jj_gen;
              ;
            }
            break;
          case INTEGER_LITERAL:
          case MINUS:
          case 246:
            lastItem.rid = Rid();
            break;
          case RECORD_ATTRIBUTE:
            lastToken = jj_consume_token(RECORD_ATTRIBUTE);
                                                         lastItem.recordAttr = lastToken.image;
            break;
          default:
            jj_la1[221] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case ASC:
          case DESC:
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case DESC:
              jj_consume_token(DESC);
                           lastItem.type = OOrderByItem.DESC;
              break;
            case ASC:
              jj_consume_token(ASC);
                                                                          lastItem.type = OOrderByItem.ASC;
              break;
            default:
              jj_la1[222] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
            break;
          default:
            jj_la1[223] = jj_gen;
            ;
          }
          jj_consume_token(RPAREN);
          break;
        default:
          jj_la1[224] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OGroupBy GroupBy() throws ParseException {
 /*@bgen(jjtree) GroupBy */
  OGroupBy jjtn000 = new OGroupBy(JJTGROUPBY);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OExpression lastExpression;
    try {
      jj_consume_token(GROUP);
      jj_consume_token(BY);
      lastExpression = Expression();
                                                     jjtn000.items.add(lastExpression);
      label_36:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[225] = jj_gen;
          break label_36;
        }
        jj_consume_token(COMMA);
        lastExpression = Expression();
                                            jjtn000.items.add(lastExpression);
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OUnwind Unwind() throws ParseException {
 /*@bgen(jjtree) Unwind */
  OUnwind jjtn000 = new OUnwind(JJTUNWIND);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
    try {
      jj_consume_token(UNWIND);
      lastIdentifier = Identifier();
                                                 jjtn000.items.add(lastIdentifier);
      label_37:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[226] = jj_gen;
          break label_37;
        }
        jj_consume_token(COMMA);
        lastIdentifier = Identifier();
                                            jjtn000.items.add(lastIdentifier);
      }
    jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    jjtn000.jjtSetLastToken(getToken(0));
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
  if (jjtc000) {
    jjtree.clearNodeScope(jjtn000);
    jjtc000 = false;
  } else {
    jjtree.popNode();
  }
  if (jjte000 instanceof RuntimeException) {
    {if (true) throw (RuntimeException)jjte000;}
  }
  if (jjte000 instanceof ParseException) {
    {if (true) throw (ParseException)jjte000;}
  }
  {if (true) throw (Error)jjte000;}
    } finally {
  if (jjtc000) {
    jjtree.closeNodeScope(jjtn000, true);
    jjtn000.jjtSetLastToken(getToken(0));
  }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLimit Limit() throws ParseException {
 /*@bgen(jjtree) Limit */
  OLimit jjtn000 = new OLimit(JJTLIMIT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LIMIT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
        jjtn000.num = Integer();
        break;
      case HOOK:
      case COLON:
        jjtn000.inputParam = InputParameter();
        break;
      default:
        jj_la1[227] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OSkip Skip() throws ParseException {
 /*@bgen(jjtree) Skip */
  OSkip jjtn000 = new OSkip(JJTSKIP);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SKIP2:
        jj_consume_token(SKIP2);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
          jjtn000.num = Integer();
          break;
        case HOOK:
        case COLON:
          jjtn000.inputParam = InputParameter();
          break;
        default:
          jj_la1[228] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case OFFSET:
        jj_consume_token(OFFSET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
          jjtn000.num = Integer();
          break;
        case HOOK:
        case COLON:
          jjtn000.inputParam = InputParameter();
          break;
        default:
          jj_la1[229] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[230] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
        jjtree.closeNodeScope(jjtn000, true);
        jjtc000 = false;
        jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBatch Batch() throws ParseException {
 /*@bgen(jjtree) Batch */
  OBatch jjtn000 = new OBatch(JJTBATCH);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(BATCH);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
        jjtn000.num = Integer();
        break;
      case HOOK:
      case COLON:
        jjtn000.inputParam = InputParameter();
        break;
      default:
        jj_la1[231] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OTimeout Timeout() throws ParseException {
 /*@bgen(jjtree) Timeout */
  OTimeout jjtn000 = new OTimeout(JJTTIMEOUT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OInteger val;
    try {
      jj_consume_token(TIMEOUT);
      val = Integer();
                              jjtn000.val = val.getValue();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETURN:
      case EXCEPTION:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case RETURN:
          jj_consume_token(RETURN);
                             jjtn000.failureStrategy = OTimeout.RETURN;
          break;
        case EXCEPTION:
          jj_consume_token(EXCEPTION);
                                jjtn000.failureStrategy = OTimeout.EXCEPTION;
          break;
        default:
          jj_la1[232] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[233] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public java.lang.Number Wait() throws ParseException {
 /*@bgen(jjtree) Wait */
  OWait jjtn000 = new OWait(JJTWAIT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OInteger val;
    try {
      jj_consume_token(WAIT);
      val = Integer();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return val.getValue();}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public java.lang.Number Retry() throws ParseException {
 /*@bgen(jjtree) Retry */
  ORetry jjtn000 = new ORetry(JJTRETRY);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OInteger val;
    try {
      jj_consume_token(RETRY);
      val = Integer();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return val.getValue();}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCollection Collection() throws ParseException {
 /*@bgen(jjtree) Collection */
    OCollection jjtn000 = new OCollection(JJTCOLLECTION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OExpression lastExpression;
    try {
      jj_consume_token(LBRACKET);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case NULL:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LBRACE:
      case LBRACKET:
      case HOOK:
      case COLON:
      case MINUS:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
        lastExpression = Expression();
                                            jjtn000.expressions.add(lastExpression);
        label_38:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[234] = jj_gen;
            break label_38;
          }
          jj_consume_token(COMMA);
          lastExpression = Expression();
                                                jjtn000.expressions.add(lastExpression);
        }
        break;
      default:
        jj_la1[235] = jj_gen;
        ;
      }
      jj_consume_token(RBRACKET);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFetchPlan FetchPlan() throws ParseException {
 /*@bgen(jjtree) FetchPlan */
  OFetchPlan jjtn000 = new OFetchPlan(JJTFETCHPLAN);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OFetchPlanItem lastItem;
    try {
      jj_consume_token(FETCHPLAN);
      lastItem = FetchPlanItem();
                                                 jjtn000.items.add(lastItem);
      label_39:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case LBRACKET:
        case STAR:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          ;
          break;
        default:
          jj_la1[236] = jj_gen;
          break label_39;
        }
        lastItem = FetchPlanItem();
                                       jjtn000.items.add(lastItem);
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFetchPlanItem FetchPlanItem() throws ParseException {
 /*@bgen(jjtree) FetchPlanItem */
  OFetchPlanItem jjtn000 = new OFetchPlanItem(JJTFETCHPLANITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
  boolean lastStarred = false;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
        jj_consume_token(STAR);
                     jjtn000.star = true;
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case LBRACKET:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LBRACKET:
          jj_consume_token(LBRACKET);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case INTEGER_LITERAL:
          case MINUS:
            jjtn000.leftDepth = Integer();
            break;
          case STAR:
            jj_consume_token(STAR);
                             jjtn000.leftStar = true;
            break;
          default:
            jj_la1[237] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          jj_consume_token(RBRACKET);
          break;
        default:
          jj_la1[238] = jj_gen;
          ;
        }
        lastIdentifier = Identifier();
                                            lastStarred = false;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case STAR:
          jj_consume_token(STAR);
                                                                             lastStarred = true;
          break;
        default:
          jj_la1[239] = jj_gen;
          ;
        }
                String field = lastIdentifier.getValue();
                if(lastStarred){
                    field += "*";
                }
                jjtn000.fieldChain.add(field);
        label_40:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case DOT:
            ;
            break;
          default:
            jj_la1[240] = jj_gen;
            break label_40;
          }
          jj_consume_token(DOT);
          lastIdentifier = Identifier();
                                                       lastStarred = false;
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case STAR:
            jj_consume_token(STAR);
                                                                                        lastStarred = true;
            break;
          default:
            jj_la1[241] = jj_gen;
            ;
          }
                     field = lastIdentifier.getValue();
                     if(lastStarred){
                         field += "*";
                     }
                     jjtn000.fieldChain.add(field);
        }
        break;
      default:
        jj_la1[242] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(COLON);
      jjtn000.rightDepth = Integer();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OTraverseProjectionItem TraverseProjectionItem() throws ParseException {
 /*@bgen(jjtree) TraverseProjectionItem */
  OTraverseProjectionItem jjtn000 = new OTraverseProjectionItem(JJTTRAVERSEPROJECTIONITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.base = BaseIdentifier();
      if (jj_2_124(2147483647)) {
        jjtn000.modifier = Modifier();
      } else {
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OJson Json() throws ParseException {
 /*@bgen(jjtree) Json */
    OJson jjtn000 = new OJson(JJTJSON);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OJsonItem lastItem;
    Token token;
    try {
      jj_consume_token(LBRACE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case RECORD_ATTRIBUTE:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
              lastItem = new OJsonItem();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          lastItem.leftIdentifier = Identifier();
          break;
        case RECORD_ATTRIBUTE:
          token = jj_consume_token(RECORD_ATTRIBUTE);
                                            lastItem.leftString = token.image;
          break;
        case STRING_LITERAL:
          token = jj_consume_token(STRING_LITERAL);
                                           lastItem.leftString = token.image.substring(1, token.image.length() - 1);
          break;
        case CHARACTER_LITERAL:
          token = jj_consume_token(CHARACTER_LITERAL);
                                              lastItem.leftString = token.image.substring(1, token.image.length() - 1);
          break;
        default:
          jj_la1[243] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        jj_consume_token(COLON);
        lastItem.right = Expression();
                                            jjtn000.items.add(lastItem);
        label_41:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[244] = jj_gen;
            break label_41;
          }
          jj_consume_token(COMMA);
                  lastItem = new OJsonItem();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            lastItem.leftIdentifier = Identifier();
            break;
          case RECORD_ATTRIBUTE:
            token = jj_consume_token(RECORD_ATTRIBUTE);
                                                lastItem.leftString = token.image;
            break;
          case STRING_LITERAL:
            token = jj_consume_token(STRING_LITERAL);
                                               lastItem.leftString = token.image.substring(1, token.image.length() - 1);
            break;
          case CHARACTER_LITERAL:
            token = jj_consume_token(CHARACTER_LITERAL);
                                                  lastItem.leftString = token.image.substring(1, token.image.length() - 1);
            break;
          default:
            jj_la1[245] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          jj_consume_token(COLON);
          lastItem.right = Expression();
                                                jjtn000.items.add(lastItem);
        }
        break;
      default:
        jj_la1[246] = jj_gen;
        ;
      }
      jj_consume_token(RBRACE);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchExpression MatchExpression() throws ParseException {
 /*@bgen(jjtree) MatchExpression */
  OMatchExpression jjtn000 = new OMatchExpression(JJTMATCHEXPRESSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OMatchPathItem nextItem = null;
    try {
      jjtn000.origin = MatchFilter();
      label_42:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DOT:
        case LT:
        case DECR:
        case MINUS:
          ;
          break;
        default:
          jj_la1[247] = jj_gen;
          break label_42;
        }
        if (jj_2_125(3)) {
          nextItem = MatchPathItem();
        } else if (jj_2_126(3)) {
          nextItem = MultiMatchPathItemArrows();
        } else if (jj_2_127(3)) {
          nextItem = MultiMatchPathItem();
        } else if (jj_2_128(2147483647)) {
          nextItem = OutPathItem();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LT:
            nextItem = InPathItem();
            break;
          default:
            jj_la1[248] = jj_gen;
            if (jj_2_129(2147483647)) {
              nextItem = BothPathItem();
            } else {
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
        }
              jjtn000.items.add(nextItem);
      }
        jjtree.closeNodeScope(jjtn000, true);
        jjtc000 = false;
        jjtn000.jjtSetLastToken(getToken(0));
        {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem MatchPathItem() throws ParseException {
 /*@bgen(jjtree) MatchPathItem */
  OMatchPathItem jjtn000 = new OMatchPathItem(JJTMATCHPATHITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.method = MethodCall();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[249] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem MatchPathItemFirst() throws ParseException {
 /*@bgen(jjtree) MatchPathItemFirst */
  OMatchPathItemFirst jjtn000 = new OMatchPathItemFirst(JJTMATCHPATHITEMFIRST);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.function = FunctionCall();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[250] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem MultiMatchPathItem() throws ParseException {
 /*@bgen(jjtree) MultiMatchPathItem */
  OMultiMatchPathItem jjtn000 = new OMultiMatchPathItem(JJTMULTIMATCHPATHITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OMatchPathItem nextItem = null;
    try {
      jj_consume_token(DOT);
      jj_consume_token(LPAREN);
      nextItem = MatchPathItemFirst();
                                              jjtn000.items.add(nextItem);
      label_43:
      while (true) {
        if (jj_2_130(2147483647)) {
          ;
        } else {
          break label_43;
        }
        nextItem = MatchPathItem();
                                         jjtn000.items.add(nextItem);
      }
      jj_consume_token(RPAREN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[251] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem MultiMatchPathItemArrows() throws ParseException {
 /*@bgen(jjtree) MultiMatchPathItemArrows */
    OMultiMatchPathItemArrows jjtn000 = new OMultiMatchPathItemArrows(JJTMULTIMATCHPATHITEMARROWS);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OMatchPathItem prevItem = null;
    OMatchPathItem nextItem = null;
    try {
      jj_consume_token(DOT);
      jj_consume_token(LPAREN);
      label_44:
      while (true) {
        if (jj_2_131(2147483647)) {
          nextItem = OutPathItemOpt();
                                               jjtn000.items.add(nextItem);
        } else if (jj_2_132(2147483647)) {
          nextItem = InPathItemOpt();
                                              jjtn000.items.add(nextItem);
        } else if (jj_2_133(2147483647)) {
          nextItem = BothPathItemOpt();
                                                jjtn000.items.add(nextItem);
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
                if(prevItem !=null && prevItem.filter == null){
                    {if (true) throw new OQueryParsingException("MATCH sub-pattern with no square brackets");}
                }
                prevItem = nextItem;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LT:
        case DECR:
        case MINUS:
          ;
          break;
        default:
          jj_la1[252] = jj_gen;
          break label_44;
        }
      }
      jj_consume_token(RPAREN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[253] = jj_gen;
        ;
      }
       jjtree.closeNodeScope(jjtn000, true);
       jjtc000 = false;
       jjtn000.jjtSetLastToken(getToken(0));
       {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchFilter MatchFilter() throws ParseException {
 /*@bgen(jjtree) MatchFilter */
  OMatchFilter jjtn000 = new OMatchFilter(JJTMATCHFILTER);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OMatchFilterItem lastItem = null;
    try {
      jj_consume_token(LBRACE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WHERE:
      case WHILE:
      case AS:
      case MAXDEPTH:
      case CLASS:
      case CLASSES:
      case OPTIONAL:
      case RID:
        lastItem = MatchFilterItem();
                                               jjtn000.items.add(lastItem);
        label_45:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[254] = jj_gen;
            break label_45;
          }
          jj_consume_token(COMMA);
          lastItem = MatchFilterItem();
                                                   jjtn000.items.add(lastItem);
        }
        break;
      default:
        jj_la1[255] = jj_gen;
        ;
      }
      jj_consume_token(RBRACE);
        jjtree.closeNodeScope(jjtn000, true);
        jjtc000 = false;
        jjtn000.jjtSetLastToken(getToken(0));
        {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchFilterItem MatchFilterItem() throws ParseException {
 /*@bgen(jjtree) MatchFilterItem */
  OMatchFilterItem jjtn000 = new OMatchFilterItem(JJTMATCHFILTERITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLASS:
        jj_consume_token(CLASS);
        jj_consume_token(COLON);
        jjtn000.className = Expression();
        break;
      case RID:
        jj_consume_token(RID);
        jj_consume_token(COLON);
        jjtn000.rid = Rid();
        break;
      case CLASSES:
        jj_consume_token(CLASSES);
        jj_consume_token(COLON);
        jjtn000.classNames = Expression();
        break;
      case AS:
        jj_consume_token(AS);
        jj_consume_token(COLON);
        jjtn000.alias = Identifier();
        break;
      case WHERE:
        jj_consume_token(WHERE);
        jj_consume_token(COLON);
        jj_consume_token(LPAREN);
        jjtn000.filter = WhereClause();
        jj_consume_token(RPAREN);
        break;
      case WHILE:
        jj_consume_token(WHILE);
        jj_consume_token(COLON);
        jj_consume_token(LPAREN);
        jjtn000.whileCondition = WhereClause();
        jj_consume_token(RPAREN);
        break;
      case MAXDEPTH:
        jj_consume_token(MAXDEPTH);
        jj_consume_token(COLON);
        jjtn000.maxDepth = Integer();
        break;
      case OPTIONAL:
        jj_consume_token(OPTIONAL);
        jj_consume_token(COLON);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TRUE:
          jj_consume_token(TRUE);
                         jjtn000.optional = true;
          break;
        case FALSE:
          jj_consume_token(FALSE);
                          jjtn000.optional = false;
          break;
        default:
          jj_la1[256] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[257] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem OutPathItem() throws ParseException {
 /*@bgen(jjtree) OutPathItem */
  OOutPathItem jjtn000 = new OOutPathItem(JJTOUTPATHITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier edgeName = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          edgeName = Identifier();
          break;
        default:
          jj_la1[258] = jj_gen;
          ;
        }
        jj_consume_token(MINUS);
        break;
      case DECR:
        jj_consume_token(DECR);
        break;
      default:
        jj_la1[259] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(GT);
      jjtn000.filter = MatchFilter();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     if(edgeName==null){
        edgeName = new OIdentifier(-1);
        edgeName.value = "E";
     }
     jjtn000.method = new OMethodCall(-1);
     jjtn000.method.methodName = new OIdentifier(-1);
     jjtn000.method.methodName.value = "out";
     OExpression exp = new OExpression(-1);
     exp.value = edgeName.value;
     jjtn000.method.params.add(exp);
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem InPathItem() throws ParseException {
 /*@bgen(jjtree) InPathItem */
  OInPathItem jjtn000 = new OInPathItem(JJTINPATHITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier edgeName = null;
    try {
      jj_consume_token(LT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          edgeName = Identifier();
          break;
        default:
          jj_la1[260] = jj_gen;
          ;
        }
        jj_consume_token(MINUS);
        break;
      case DECR:
        jj_consume_token(DECR);
        break;
      default:
        jj_la1[261] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtn000.filter = MatchFilter();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     if(edgeName==null){
        edgeName = new OIdentifier(-1);
        edgeName.value = "E";
     }
     jjtn000.method = new OMethodCall(-1);
     jjtn000.method.methodName = new OIdentifier(-1);
     jjtn000.method.methodName.value = "in";
     OExpression exp = new OExpression(-1);
     exp.value = edgeName.value;
     jjtn000.method.params.add(exp);
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem BothPathItem() throws ParseException {
 /*@bgen(jjtree) BothPathItem */
  OBothPathItem jjtn000 = new OBothPathItem(JJTBOTHPATHITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier edgeName = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          edgeName = Identifier();
          break;
        default:
          jj_la1[262] = jj_gen;
          ;
        }
        jj_consume_token(MINUS);
        break;
      case DECR:
        jj_consume_token(DECR);
        break;
      default:
        jj_la1[263] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtn000.filter = MatchFilter();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     if(edgeName==null){
        edgeName = new OIdentifier(-1);
        edgeName.value = "E";
     }
     jjtn000.method = new OMethodCall(-1);
     jjtn000.method.methodName = new OIdentifier(-1);
     jjtn000.method.methodName.value = "both";
     OExpression exp = new OExpression(-1);
     exp.value = edgeName.value;
     jjtn000.method.params.add(exp);
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem OutPathItemOpt() throws ParseException {
 /*@bgen(jjtree) OutPathItemOpt */
  OOutPathItemOpt jjtn000 = new OOutPathItemOpt(JJTOUTPATHITEMOPT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier edgeName = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          edgeName = Identifier();
          break;
        default:
          jj_la1[264] = jj_gen;
          ;
        }
        jj_consume_token(MINUS);
        break;
      case DECR:
        jj_consume_token(DECR);
        break;
      default:
        jj_la1[265] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(GT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[266] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     if(edgeName==null){
        edgeName = new OIdentifier(-1);
        edgeName.value = "E";
     }
     jjtn000.method = new OMethodCall(-1);
     jjtn000.method.methodName = new OIdentifier(-1);
     jjtn000.method.methodName.value = "out";
     OExpression exp = new OExpression(-1);
     exp.value = edgeName.value;
     jjtn000.method.params.add(exp);
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem InPathItemOpt() throws ParseException {
 /*@bgen(jjtree) InPathItemOpt */
  OInPathItemOpt jjtn000 = new OInPathItemOpt(JJTINPATHITEMOPT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier edgeName = null;
    try {
      jj_consume_token(LT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          edgeName = Identifier();
          break;
        default:
          jj_la1[267] = jj_gen;
          ;
        }
        jj_consume_token(MINUS);
        break;
      case DECR:
        jj_consume_token(DECR);
        break;
      default:
        jj_la1[268] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[269] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     if(edgeName==null){
        edgeName = new OIdentifier(-1);
        edgeName.value = "E";
     }
     jjtn000.method = new OMethodCall(-1);
     jjtn000.method.methodName = new OIdentifier(-1);
     jjtn000.method.methodName.value = "in";
     OExpression exp = new OExpression(-1);
     exp.value = edgeName.value;
     jjtn000.method.params.add(exp);
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OMatchPathItem BothPathItemOpt() throws ParseException {
 /*@bgen(jjtree) BothPathItemOpt */
  OBothPathItemOpt jjtn000 = new OBothPathItemOpt(JJTBOTHPATHITEMOPT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OIdentifier edgeName = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case MINUS:
        jj_consume_token(MINUS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          edgeName = Identifier();
          break;
        default:
          jj_la1[270] = jj_gen;
          ;
        }
        jj_consume_token(MINUS);
        break;
      case DECR:
        jj_consume_token(DECR);
        break;
      default:
        jj_la1[271] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACE:
        jjtn000.filter = MatchFilter();
        break;
      default:
        jj_la1[272] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     if(edgeName==null){
        edgeName = new OIdentifier(-1);
        edgeName.value = "E";
     }
     jjtn000.method = new OMethodCall(-1);
     jjtn000.method.methodName = new OIdentifier(-1);
     jjtn000.method.methodName.value = "both";
     OExpression exp = new OExpression(-1);
     exp.value = edgeName.value;
     jjtn000.method.params.add(exp);
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OProfileStorageStatement ProfileStorageStatement() throws ParseException {
 /*@bgen(jjtree) ProfileStorageStatement */
  OProfileStorageStatement jjtn000 = new OProfileStorageStatement(JJTPROFILESTORAGESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(PROFILE);
      jj_consume_token(STORAGE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ON:
        jj_consume_token(ON);
                      jjtn000.on = true;
        break;
      case OFF:
        jj_consume_token(OFF);
                       jjtn000.on = false;
        break;
      default:
        jj_la1[273] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
         {if (true) return jjtn000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OTruncateClassStatement TruncateClassStatement() throws ParseException {
 /*@bgen(jjtree) TruncateClassStatement */
  OTruncateClassStatement jjtn000 = new OTruncateClassStatement(JJTTRUNCATECLASSSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(TRUNCATE);
      jj_consume_token(CLASS);
      jjtn000.className = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case POLYMORPHIC:
        jj_consume_token(POLYMORPHIC);
                         jjtn000.polymorphic = true;
        break;
      default:
        jj_la1[274] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                    jjtn000.unsafe = true;
        break;
      default:
        jj_la1[275] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OTruncateClusterStatement TruncateClusterStatement() throws ParseException {
 /*@bgen(jjtree) TruncateClusterStatement */
  OTruncateClusterStatement jjtn000 = new OTruncateClusterStatement(JJTTRUNCATECLUSTERSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(TRUNCATE);
      jj_consume_token(CLUSTER);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.clusterName = Identifier();
        break;
      case INTEGER_LITERAL:
      case MINUS:
        jjtn000.clusterNumber = Integer();
        break;
      default:
        jj_la1[276] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                    jjtn000.unsafe = true;
        break;
      default:
        jj_la1[277] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OTruncateRecordStatement TruncateRecordStatement() throws ParseException {
 /*@bgen(jjtree) TruncateRecordStatement */
  OTruncateRecordStatement jjtn000 = new OTruncateRecordStatement(JJTTRUNCATERECORDSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));ORid lastRecord;
    try {
      jj_consume_token(TRUNCATE);
      jj_consume_token(RECORD);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        jjtn000.record = Rid();
        break;
      case LBRACKET:
        jj_consume_token(LBRACKET);
                                     jjtn000.records = new ArrayList();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_LITERAL:
        case MINUS:
        case 246:
          lastRecord = Rid();
                                                     jjtn000.records.add(lastRecord);
          label_46:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[278] = jj_gen;
              break label_46;
            }
            jj_consume_token(COMMA);
            lastRecord = Rid();
                                                             jjtn000.records.add(lastRecord);
          }
          break;
        default:
          jj_la1[279] = jj_gen;
          ;
        }
        jj_consume_token(RBRACKET);
        break;
      default:
        jj_la1[280] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OFindReferencesStatement FindReferencesStatement() throws ParseException {
 /*@bgen(jjtree) FindReferencesStatement */
  OFindReferencesStatement jjtn000 = new OFindReferencesStatement(JJTFINDREFERENCESSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));SimpleNode lastTarget;
    try {
      jj_consume_token(FIND);
      jj_consume_token(REFERENCES);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_LITERAL:
      case MINUS:
      case 246:
        jjtn000.rid = Rid();
        break;
      case LPAREN:
        jj_consume_token(LPAREN);
        jjtn000.subQuery = StatementInternal();
        jj_consume_token(RPAREN);
        break;
      default:
        jj_la1[281] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LBRACKET:
        jj_consume_token(LBRACKET);
                     jjtn000.targets = new ArrayList();
        if (jj_2_134(2147483647)) {
          lastTarget = IndexIdentifier();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            lastTarget = Identifier();
            break;
          default:
            jj_la1[282] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
           jjtn000.targets.add(lastTarget);
        label_47:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[283] = jj_gen;
            break label_47;
          }
          jj_consume_token(COMMA);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            lastTarget = Identifier();
            break;
          case CLUSTER_IDENTIFIER:
          case CLUSTER_NUMBER_IDENTIFIER:
            lastTarget = Cluster();
            break;
          default:
            jj_la1[284] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
                           jjtn000.targets.add(lastTarget);
        }
        jj_consume_token(RBRACKET);
        break;
      default:
        jj_la1[285] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateClassStatement CreateClassStatement() throws ParseException {
 /*@bgen(jjtree) CreateClassStatement */
        OCreateClassStatement jjtn000 = new OCreateClassStatement(JJTCREATECLASSSTATEMENT);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
        OInteger lastInteger;
    try {
      jj_consume_token(CREATE);
      jj_consume_token(CLASS);
      jjtn000.name = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IF:
        jj_consume_token(IF);
        jj_consume_token(NOT);
        jj_consume_token(EXISTS);
                                       jjtn000.ifNotExists = true;
        break;
      default:
        jj_la1[286] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTENDS:
        jj_consume_token(EXTENDS);
        lastIdentifier = Identifier();
                                                                  jjtn000.superclasses = new ArrayList(); jjtn000.superclasses.add(lastIdentifier);
        label_48:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[287] = jj_gen;
            break label_48;
          }
          jj_consume_token(COMMA);
          lastIdentifier = Identifier();
                                                                jjtn000.superclasses.add(lastIdentifier);
        }
        break;
      default:
        jj_la1[288] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTER:
        jj_consume_token(CLUSTER);
        lastInteger = Integer();
                                                            jjtn000.clusters = new ArrayList(); jjtn000.clusters.add(lastInteger);
        label_49:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[289] = jj_gen;
            break label_49;
          }
          jj_consume_token(COMMA);
          lastInteger = Integer();
                                                          jjtn000.clusters.add(lastInteger);
        }
        break;
      default:
        jj_la1[290] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTERS:
        jj_consume_token(CLUSTERS);
        jjtn000.totalClusterNo = Integer();
        break;
      default:
        jj_la1[291] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ABSTRACT:
        jj_consume_token(ABSTRACT);
                               jjtn000.abstractClass = true;
        break;
      default:
        jj_la1[292] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OAlterClassStatement AlterClassStatement() throws ParseException {
 /*@bgen(jjtree) AlterClassStatement */
        OAlterClassStatement jjtn000 = new OAlterClassStatement(JJTALTERCLASSSTATEMENT);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
        OInteger lastInteger;
        Token lastToken;
    try {
      jj_consume_token(ALTER);
      jj_consume_token(CLASS);
      jjtn000.name = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NAME:
        jj_consume_token(NAME);
                                 jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.NAME;
        jjtn000.identifierValue = Identifier();
        break;
      case SHORTNAME:
        jj_consume_token(SHORTNAME);
                                      jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.SHORTNAME;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.identifierValue = Identifier();
          break;
        case NULL:
          jj_consume_token(NULL);
          break;
        default:
          jj_la1[293] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case SUPERCLASS:
        jj_consume_token(SUPERCLASS);
                                       jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.SUPERCLASS;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PLUS:
        case MINUS:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case PLUS:
            jj_consume_token(PLUS);
                                                jjtn000.add = true;
            break;
          case MINUS:
            jj_consume_token(MINUS);
                                                 jjtn000.remove = true;
            break;
          default:
            jj_la1[294] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[295] = jj_gen;
          ;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.identifierValue = Identifier();
          break;
        case NULL:
          jj_consume_token(NULL);
                                         jjtn000.identifierValue = null;
          break;
        default:
          jj_la1[296] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case SUPERCLASSES:
        jj_consume_token(SUPERCLASSES);
                                jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.SUPERCLASSES;
                                jjtn000.identifierListValue = new ArrayList();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          lastIdentifier = Identifier();
                                                                        jjtn000.identifierListValue.add(lastIdentifier);
          label_50:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case COMMA:
              ;
              break;
            default:
              jj_la1[297] = jj_gen;
              break label_50;
            }
            jj_consume_token(COMMA);
            lastIdentifier = Identifier();
                                                                                jjtn000.identifierListValue.add(lastIdentifier);
          }
          break;
        case NULL:
          jj_consume_token(NULL);
                                         jjtn000.identifierListValue = null;
          break;
        default:
          jj_la1[298] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case OVERSIZE:
        jj_consume_token(OVERSIZE);
                                     jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.OVERSIZE;
        jjtn000.numberValue = Number();
        break;
      case STRICTMODE:
        jj_consume_token(STRICTMODE);
                                       jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.STRICTMODE;
        jjtn000.expression = Expression();
        break;
      case ADDCLUSTER:
        jj_consume_token(ADDCLUSTER);
                                       jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.ADDCLUSTER;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.identifierValue = Identifier();
          break;
        case INTEGER_LITERAL:
        case MINUS:
          jjtn000.numberValue = Integer();
          break;
        default:
          jj_la1[299] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case REMOVECLUSTER:
        jj_consume_token(REMOVECLUSTER);
                                          jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.REMOVECLUSTER;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.identifierValue = Identifier();
          break;
        case INTEGER_LITERAL:
        case MINUS:
          jjtn000.numberValue = Integer();
          break;
        default:
          jj_la1[300] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case CUSTOM:
        jj_consume_token(CUSTOM);
                                   jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.CUSTOM;
        jjtn000.customKey = Identifier();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EQ:
          jj_consume_token(EQ);
          jjtn000.customValue = Expression();
          break;
        default:
          jj_la1[301] = jj_gen;
          ;
        }
        break;
      case ABSTRACT:
        jj_consume_token(ABSTRACT);
                                     jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.ABSTRACT;
        jjtn000.expression = Expression();
        break;
      case CLUSTERSELECTION:
        jj_consume_token(CLUSTERSELECTION);
                                             jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.CLUSTERSELECTION;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.identifierValue = Identifier();
          break;
        case 248:
          jj_consume_token(248);
                                                jjtn000.customString = "round-robin";
          break;
        case STRING_LITERAL:
          lastToken = jj_consume_token(STRING_LITERAL);
                                                                jjtn000.customString = token.image.substring(1, token.image.length() - 1);
          break;
        default:
          jj_la1[302] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      case DESCRIPTION:
        jj_consume_token(DESCRIPTION);
                                        jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.DESCRIPTION;
        jjtn000.expression = Expression();
        break;
      case ENCRYPTION:
        jj_consume_token(ENCRYPTION);
                                       jjtn000.property = com.orientechnologies.orient.core.metadata.schema.OClass.ATTRIBUTES.ENCRYPTION;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.identifierValue = Identifier();
          break;
        case NULL:
          jj_consume_token(NULL);
          break;
        default:
          jj_la1[303] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[304] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                     jjtn000.unsafe = true;
        break;
      default:
        jj_la1[305] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODropClassStatement DropClassStatement() throws ParseException {
 /*@bgen(jjtree) DropClassStatement */
  ODropClassStatement jjtn000 = new ODropClassStatement(JJTDROPCLASSSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DROP);
      jj_consume_token(CLASS);
      jjtn000.name = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IF:
        jj_consume_token(IF);
        jj_consume_token(EXISTS);
                          jjtn000.ifExists = true;
        break;
      default:
        jj_la1[306] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                     jjtn000.unsafe = true;
        break;
      default:
        jj_la1[307] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public void IfNotExists() throws ParseException {
                    /*@bgen(jjtree) IfNotExists */
  OIfNotExists jjtn000 = new OIfNotExists(JJTIFNOTEXISTS);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(IF);
      jj_consume_token(NOT);
      jj_consume_token(EXISTS);
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
  }

  final public OCreatePropertyStatement CreatePropertyStatement() throws ParseException {
 /*@bgen(jjtree) CreatePropertyStatement */
        OCreatePropertyStatement jjtn000 = new OCreatePropertyStatement(JJTCREATEPROPERTYSTATEMENT);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        jjtn000.jjtSetFirstToken(getToken(1));OCreatePropertyAttributeStatement lastAttribute;
    try {
      jj_consume_token(CREATE);
      jj_consume_token(PROPERTY);
      jjtn000.className = Identifier();
      jj_consume_token(DOT);
      jjtn000.propertyName = Identifier();
      if (jj_2_135(3)) {
        IfNotExists();
                                                   jjtn000.ifNotExists = true;
      } else {
        ;
      }
      jjtn000.propertyType = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.linkedType = Identifier();
        break;
      default:
        jj_la1[308] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LPAREN:
        jj_consume_token(LPAREN);
        lastAttribute = CreatePropertyAttributeStatement();
                                                                         jjtn000.attributes.add(lastAttribute);
        label_51:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[309] = jj_gen;
            break label_51;
          }
          jj_consume_token(COMMA);
          lastAttribute = CreatePropertyAttributeStatement();
                                                                                  jjtn000.attributes.add(lastAttribute);
        }
        jj_consume_token(RPAREN);
        break;
      default:
        jj_la1[310] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case UNSAFE:
        jj_consume_token(UNSAFE);
                             jjtn000.unsafe = true;
        break;
      default:
        jj_la1[311] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreatePropertyAttributeStatement CreatePropertyAttributeStatement() throws ParseException {
 /*@bgen(jjtree) CreatePropertyAttributeStatement */
  OCreatePropertyAttributeStatement jjtn000 = new OCreatePropertyAttributeStatement(JJTCREATEPROPERTYATTRIBUTESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jjtn000.settingName = Identifier();
      if (getToken(1).kind != COMMA && getToken(1).kind != RPAREN) {
        jjtn000.settingValue = Expression();
      } else {
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OAlterPropertyStatement AlterPropertyStatement() throws ParseException {
 /*@bgen(jjtree) AlterPropertyStatement */
  OAlterPropertyStatement jjtn000 = new OAlterPropertyStatement(JJTALTERPROPERTYSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(ALTER);
      jj_consume_token(PROPERTY);
      jjtn000.className = Identifier();
      jj_consume_token(DOT);
      jjtn000.propertyName = Identifier();
      if (jj_2_136(3)) {
        jj_consume_token(CUSTOM);
        jjtn000.customPropertyName = Identifier();
        jj_consume_token(EQ);
        jjtn000.customPropertyValue = Expression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.settingName = Identifier();
          jjtn000.settingValue = Expression();
                   if(jjtn000.settingName.getStringValue().equalsIgnoreCase("custom") && jjtn000.settingValue.toString().equalsIgnoreCase("clear")){
                        jjtn000.settingName = null;
                        jjtn000.settingValue = null;
                        jjtn000.clearCustom = true;
                   }
          break;
        default:
          jj_la1[312] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODropPropertyStatement DropPropertyStatement() throws ParseException {
 /*@bgen(jjtree) DropPropertyStatement */
  ODropPropertyStatement jjtn000 = new ODropPropertyStatement(JJTDROPPROPERTYSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DROP);
      jj_consume_token(PROPERTY);
      jjtn000.className = Identifier();
      jj_consume_token(DOT);
      jjtn000.propertyName = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IF:
        jj_consume_token(IF);
        jj_consume_token(EXISTS);
                          jjtn000.ifExists = true;
        break;
      default:
        jj_la1[313] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FORCE:
        jj_consume_token(FORCE);
                    jjtn000.force = true;
        break;
      default:
        jj_la1[314] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateIndexStatement CreateIndexStatement() throws ParseException {
 /*@bgen(jjtree) CreateIndexStatement */
    OCreateIndexStatement jjtn000 = new OCreateIndexStatement(JJTCREATEINDEXSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OCreateIndexStatement.Property lastProperty;
    OIdentifier lastIdentifier;
    ORecordAttribute lastRecordAttr;
    try {
      jj_consume_token(CREATE);
      jj_consume_token(INDEX);
      jjtn000.name = IndexName();
      if (jj_2_137(3)) {
        jj_consume_token(ON);
        jjtn000.className = Identifier();
        jj_consume_token(LPAREN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          lastIdentifier = Identifier();
                    lastProperty = new OCreateIndexStatement.Property();
                    lastProperty.name = lastIdentifier;
                    jjtn000.propertyList.add(lastProperty);
          break;
        case RECORD_ATTRIBUTE:
          lastRecordAttr = RecordAttribute();
                    lastProperty = new OCreateIndexStatement.Property();
                    lastProperty.recordAttribute = lastRecordAttr;
                    jjtn000.propertyList.add(lastProperty);
          break;
        default:
          jj_la1[315] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case BY:
          jj_consume_token(BY);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case KEY:
            jj_consume_token(KEY);
                            lastProperty.byKey = true;
            break;
          case VALUE:
            jj_consume_token(VALUE);
                              lastProperty.byValue = true;
            break;
          default:
            jj_la1[316] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
        default:
          jj_la1[317] = jj_gen;
          ;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COLLATE:
          jj_consume_token(COLLATE);
          lastProperty.collate = Identifier();
          break;
        default:
          jj_la1[318] = jj_gen;
          ;
        }
        label_52:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[319] = jj_gen;
            break label_52;
          }
          jj_consume_token(COMMA);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TO:
          case VALUE:
          case VALUES:
          case SET:
          case ADD:
          case PUT:
          case MERGE:
          case CONTENT:
          case REMOVE:
          case ORDER:
          case GROUP:
          case OFFSET:
          case RECORD:
          case CACHE:
          case LUCENE:
          case NEAR:
          case WITHIN:
          case MINDEPTH:
          case CLASS:
          case SUPERCLASS:
          case CLASSES:
          case SUPERCLASSES:
          case EXCEPTION:
          case PROFILE:
          case STORAGE:
          case ON:
          case OFF:
          case TRUNCATE:
          case FIND:
          case REFERENCES:
          case EXTENDS:
          case CLUSTERS:
          case ABSTRACT:
          case ALTER:
          case NAME:
          case SHORTNAME:
          case OVERSIZE:
          case STRICTMODE:
          case ADDCLUSTER:
          case REMOVECLUSTER:
          case CUSTOM:
          case CLUSTERSELECTION:
          case DESCRIPTION:
          case ENCRYPTION:
          case DROP:
          case PROPERTY:
          case FORCE:
          case METADATA:
          case INDEX:
          case COLLATE:
          case ENGINE:
          case REBUILD:
          case ID:
          case DATABASE:
          case OPTIMIZE:
          case LINK:
          case TYPE:
          case INVERSE:
          case EXPLAIN:
          case GRANT:
          case REVOKE:
          case READ:
          case EXECUTE:
          case ALL:
          case NONE:
          case FUNCTION:
          case PARAMETERS:
          case IDEMPOTENT:
          case LANGUAGE:
          case BEGIN:
          case COMMIT:
          case ROLLBACK:
          case IF:
          case ISOLATION:
          case SLEEP:
          case CONSOLE:
          case BLOB:
          case SHARED:
          case DEFAULT_:
          case SEQUENCE:
          case START:
          case OPTIONAL:
          case COUNT:
          case HA:
          case STATUS:
          case SERVER:
          case SYNC:
          case EXISTS:
          case RID:
          case RIDS:
          case MOVE:
          case IN:
          case KEY:
          case IDENTIFIER:
          case QUOTED_IDENTIFIER:
            lastIdentifier = Identifier();
                        lastProperty = new OCreateIndexStatement.Property();
                        lastProperty.name = lastIdentifier;
                        jjtn000.propertyList.add(lastProperty);
            break;
          case RECORD_ATTRIBUTE:
            lastRecordAttr = RecordAttribute();
                        lastProperty = new OCreateIndexStatement.Property();
                        lastProperty.recordAttribute = lastRecordAttr;
                        jjtn000.propertyList.add(lastProperty);
            break;
          default:
            jj_la1[320] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case BY:
            jj_consume_token(BY);
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case KEY:
              jj_consume_token(KEY);
                                lastProperty.byKey = true;
              break;
            case VALUE:
              jj_consume_token(VALUE);
                                  lastProperty.byValue = true;
              break;
            default:
              jj_la1[321] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
            break;
          default:
            jj_la1[322] = jj_gen;
            ;
          }
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COLLATE:
            jj_consume_token(COLLATE);
            lastProperty.collate = Identifier();
            break;
          default:
            jj_la1[323] = jj_gen;
            ;
          }
        }
        jj_consume_token(RPAREN);
        jjtn000.type = Identifier();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.type = Identifier();
          break;
        default:
          jj_la1[324] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      if (jj_2_140(2)) {
        jj_consume_token(ENGINE);
        jjtn000.engine = Identifier();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          if (jj_2_138(2)) {
            jj_consume_token(METADATA);
            jjtn000.metadata = Json();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case TO:
            case VALUE:
            case VALUES:
            case SET:
            case ADD:
            case PUT:
            case MERGE:
            case CONTENT:
            case REMOVE:
            case ORDER:
            case GROUP:
            case OFFSET:
            case RECORD:
            case CACHE:
            case LUCENE:
            case NEAR:
            case WITHIN:
            case MINDEPTH:
            case CLASS:
            case SUPERCLASS:
            case CLASSES:
            case SUPERCLASSES:
            case EXCEPTION:
            case PROFILE:
            case STORAGE:
            case ON:
            case OFF:
            case TRUNCATE:
            case FIND:
            case REFERENCES:
            case EXTENDS:
            case CLUSTERS:
            case ABSTRACT:
            case ALTER:
            case NAME:
            case SHORTNAME:
            case OVERSIZE:
            case STRICTMODE:
            case ADDCLUSTER:
            case REMOVECLUSTER:
            case CUSTOM:
            case CLUSTERSELECTION:
            case DESCRIPTION:
            case ENCRYPTION:
            case DROP:
            case PROPERTY:
            case FORCE:
            case METADATA:
            case INDEX:
            case COLLATE:
            case ENGINE:
            case REBUILD:
            case ID:
            case DATABASE:
            case OPTIMIZE:
            case LINK:
            case TYPE:
            case INVERSE:
            case EXPLAIN:
            case GRANT:
            case REVOKE:
            case READ:
            case EXECUTE:
            case ALL:
            case NONE:
            case FUNCTION:
            case PARAMETERS:
            case IDEMPOTENT:
            case LANGUAGE:
            case BEGIN:
            case COMMIT:
            case ROLLBACK:
            case IF:
            case ISOLATION:
            case SLEEP:
            case CONSOLE:
            case BLOB:
            case SHARED:
            case DEFAULT_:
            case SEQUENCE:
            case START:
            case OPTIONAL:
            case COUNT:
            case HA:
            case STATUS:
            case SERVER:
            case SYNC:
            case EXISTS:
            case RID:
            case RIDS:
            case MOVE:
            case IN:
            case KEY:
            case IDENTIFIER:
            case QUOTED_IDENTIFIER:
              lastIdentifier = Identifier();
                                                   jjtn000.keyTypes.add(lastIdentifier);
              label_53:
              while (true) {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case COMMA:
                  ;
                  break;
                default:
                  jj_la1[325] = jj_gen;
                  break label_53;
                }
                jj_consume_token(COMMA);
                lastIdentifier = Identifier();
                                                               jjtn000.keyTypes.add(lastIdentifier);
              }
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case METADATA:
                jj_consume_token(METADATA);
                jjtn000.metadata = Json();
                break;
              default:
                jj_la1[326] = jj_gen;
                ;
              }
              break;
            default:
              jj_la1[327] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[328] = jj_gen;
          ;
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          if (jj_2_139(2)) {
            jj_consume_token(METADATA);
            jjtn000.metadata = Json();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case TO:
            case VALUE:
            case VALUES:
            case SET:
            case ADD:
            case PUT:
            case MERGE:
            case CONTENT:
            case REMOVE:
            case ORDER:
            case GROUP:
            case OFFSET:
            case RECORD:
            case CACHE:
            case LUCENE:
            case NEAR:
            case WITHIN:
            case MINDEPTH:
            case CLASS:
            case SUPERCLASS:
            case CLASSES:
            case SUPERCLASSES:
            case EXCEPTION:
            case PROFILE:
            case STORAGE:
            case ON:
            case OFF:
            case TRUNCATE:
            case FIND:
            case REFERENCES:
            case EXTENDS:
            case CLUSTERS:
            case ABSTRACT:
            case ALTER:
            case NAME:
            case SHORTNAME:
            case OVERSIZE:
            case STRICTMODE:
            case ADDCLUSTER:
            case REMOVECLUSTER:
            case CUSTOM:
            case CLUSTERSELECTION:
            case DESCRIPTION:
            case ENCRYPTION:
            case DROP:
            case PROPERTY:
            case FORCE:
            case METADATA:
            case INDEX:
            case COLLATE:
            case ENGINE:
            case REBUILD:
            case ID:
            case DATABASE:
            case OPTIMIZE:
            case LINK:
            case TYPE:
            case INVERSE:
            case EXPLAIN:
            case GRANT:
            case REVOKE:
            case READ:
            case EXECUTE:
            case ALL:
            case NONE:
            case FUNCTION:
            case PARAMETERS:
            case IDEMPOTENT:
            case LANGUAGE:
            case BEGIN:
            case COMMIT:
            case ROLLBACK:
            case IF:
            case ISOLATION:
            case SLEEP:
            case CONSOLE:
            case BLOB:
            case SHARED:
            case DEFAULT_:
            case SEQUENCE:
            case START:
            case OPTIONAL:
            case COUNT:
            case HA:
            case STATUS:
            case SERVER:
            case SYNC:
            case EXISTS:
            case RID:
            case RIDS:
            case MOVE:
            case IN:
            case KEY:
            case IDENTIFIER:
            case QUOTED_IDENTIFIER:
              lastIdentifier = Identifier();
                                                   jjtn000.keyTypes.add(lastIdentifier);
              label_54:
              while (true) {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case COMMA:
                  ;
                  break;
                default:
                  jj_la1[329] = jj_gen;
                  break label_54;
                }
                jj_consume_token(COMMA);
                lastIdentifier = Identifier();
                                                               jjtn000.keyTypes.add(lastIdentifier);
              }
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case METADATA:
                jj_consume_token(METADATA);
                jjtn000.metadata = Json();
                break;
              default:
                jj_la1[330] = jj_gen;
                ;
              }
              break;
            default:
              jj_la1[331] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[332] = jj_gen;
          ;
        }
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public ORebuildIndexStatement RebuildIndexStatement() throws ParseException {
 /*@bgen(jjtree) RebuildIndexStatement */
  ORebuildIndexStatement jjtn000 = new ORebuildIndexStatement(JJTREBUILDINDEXSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(REBUILD);
      jj_consume_token(INDEX);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 247:
        jjtn000.name = IndexName();
        break;
      case STAR:
        jj_consume_token(STAR);
                     jjtn000.all = true;
        break;
      default:
        jj_la1[333] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODropIndexStatement DropIndexStatement() throws ParseException {
 /*@bgen(jjtree) DropIndexStatement */
  ODropIndexStatement jjtn000 = new ODropIndexStatement(JJTDROPINDEXSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DROP);
      jj_consume_token(INDEX);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 247:
        jjtn000.name = IndexName();
        break;
      case STAR:
        jj_consume_token(STAR);
                     jjtn000.all = true;
        break;
      default:
        jj_la1[334] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateClusterStatement CreateClusterStatement() throws ParseException {
 /*@bgen(jjtree) CreateClusterStatement */
  OCreateClusterStatement jjtn000 = new OCreateClusterStatement(JJTCREATECLUSTERSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CREATE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTER:
        jj_consume_token(CLUSTER);
        break;
      case BLOB:
        jj_consume_token(BLOB);
        jj_consume_token(CLUSTER);
                                 jjtn000.blob = true;
        break;
      default:
        jj_la1[335] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtn000.name = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ID:
        jj_consume_token(ID);
        jjtn000.id = Integer();
        break;
      default:
        jj_la1[336] = jj_gen;
        ;
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OAlterClusterStatement AlterClusterStatement() throws ParseException {
 /*@bgen(jjtree) AlterClusterStatement */
  OAlterClusterStatement jjtn000 = new OAlterClusterStatement(JJTALTERCLUSTERSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(ALTER);
      jj_consume_token(CLUSTER);
      jjtn000.name = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
        jj_consume_token(STAR);
                   jjtn000.starred = true;
        break;
      default:
        jj_la1[337] = jj_gen;
        ;
      }
      jjtn000.attributeName = Identifier();
      jjtn000.attributeValue = Expression();
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODropClusterStatement DropClusterStatement() throws ParseException {
 /*@bgen(jjtree) DropClusterStatement */
  ODropClusterStatement jjtn000 = new ODropClusterStatement(JJTDROPCLUSTERSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DROP);
      jj_consume_token(CLUSTER);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.name = Identifier();
        break;
      case INTEGER_LITERAL:
      case MINUS:
        jjtn000.id = Integer();
        break;
      default:
        jj_la1[338] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OAlterDatabaseStatement AlterDatabaseStatement() throws ParseException {
 /*@bgen(jjtree) AlterDatabaseStatement */
  OAlterDatabaseStatement jjtn000 = new OAlterDatabaseStatement(JJTALTERDATABASESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(ALTER);
      jj_consume_token(DATABASE);
      if (jj_2_141(3)) {
        jj_consume_token(CUSTOM);
        jjtn000.customPropertyName = Identifier();
        jj_consume_token(EQ);
        jjtn000.customPropertyValue = Expression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TO:
        case VALUE:
        case VALUES:
        case SET:
        case ADD:
        case PUT:
        case MERGE:
        case CONTENT:
        case REMOVE:
        case ORDER:
        case GROUP:
        case OFFSET:
        case RECORD:
        case CACHE:
        case LUCENE:
        case NEAR:
        case WITHIN:
        case MINDEPTH:
        case CLASS:
        case SUPERCLASS:
        case CLASSES:
        case SUPERCLASSES:
        case EXCEPTION:
        case PROFILE:
        case STORAGE:
        case ON:
        case OFF:
        case TRUNCATE:
        case FIND:
        case REFERENCES:
        case EXTENDS:
        case CLUSTERS:
        case ABSTRACT:
        case ALTER:
        case NAME:
        case SHORTNAME:
        case OVERSIZE:
        case STRICTMODE:
        case ADDCLUSTER:
        case REMOVECLUSTER:
        case CUSTOM:
        case CLUSTERSELECTION:
        case DESCRIPTION:
        case ENCRYPTION:
        case DROP:
        case PROPERTY:
        case FORCE:
        case METADATA:
        case INDEX:
        case COLLATE:
        case ENGINE:
        case REBUILD:
        case ID:
        case DATABASE:
        case OPTIMIZE:
        case LINK:
        case TYPE:
        case INVERSE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case READ:
        case EXECUTE:
        case ALL:
        case NONE:
        case FUNCTION:
        case PARAMETERS:
        case IDEMPOTENT:
        case LANGUAGE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case ISOLATION:
        case SLEEP:
        case CONSOLE:
        case BLOB:
        case SHARED:
        case DEFAULT_:
        case SEQUENCE:
        case START:
        case OPTIONAL:
        case COUNT:
        case HA:
        case STATUS:
        case SERVER:
        case SYNC:
        case EXISTS:
        case RID:
        case RIDS:
        case MOVE:
        case IN:
        case KEY:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
          jjtn000.settingName = Identifier();
          jjtn000.settingValue = Expression();
          break;
        default:
          jj_la1[339] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
          jjtree.closeNodeScope(jjtn000, true);
          jjtc000 = false;
          jjtn000.jjtSetLastToken(getToken(0));
          {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
          if (jjtc000) {
            jjtree.clearNodeScope(jjtn000);
            jjtc000 = false;
          } else {
            jjtree.popNode();
          }
          if (jjte000 instanceof RuntimeException) {
            {if (true) throw (RuntimeException)jjte000;}
          }
          if (jjte000 instanceof ParseException) {
            {if (true) throw (ParseException)jjte000;}
          }
          {if (true) throw (Error)jjte000;}
    } finally {
          if (jjtc000) {
            jjtree.closeNodeScope(jjtn000, true);
            jjtn000.jjtSetLastToken(getToken(0));
          }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCommandLineOption CommandLineOption() throws ParseException {
 /*@bgen(jjtree) CommandLineOption */
  OCommandLineOption jjtn000 = new OCommandLineOption(JJTCOMMANDLINEOPTION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(MINUS);
      jjtn000.name = Identifier();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OOptimizeDatabaseStatement OptimizeDatabaseStatement() throws ParseException {
 /*@bgen(jjtree) OptimizeDatabaseStatement */
  OOptimizeDatabaseStatement jjtn000 = new OOptimizeDatabaseStatement(JJTOPTIMIZEDATABASESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OCommandLineOption lastOption;
    try {
      jj_consume_token(OPTIMIZE);
      jj_consume_token(DATABASE);
      label_55:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case MINUS:
          ;
          break;
        default:
          jj_la1[340] = jj_gen;
          break label_55;
        }
        lastOption = CommandLineOption();
                                               jjtn000.options.add(lastOption);
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateLinkStatement CreateLinkStatement() throws ParseException {
 /*@bgen(jjtree) CreateLinkStatement */
  OCreateLinkStatement jjtn000 = new OCreateLinkStatement(JJTCREATELINKSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CREATE);
      jj_consume_token(LINK);
      jjtn000.name = Identifier();
      jj_consume_token(TYPE);
      jjtn000.type = Identifier();
      jj_consume_token(FROM);
      jjtn000.sourceClass = Identifier();
      jj_consume_token(DOT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.sourceField = Identifier();
        break;
      case RECORD_ATTRIBUTE:
        jjtn000.sourceRecordAttr = RecordAttribute();
        break;
      default:
        jj_la1[341] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(TO);
      jjtn000.destClass = Identifier();
      jj_consume_token(DOT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.destField = Identifier();
        break;
      case RECORD_ATTRIBUTE:
        jjtn000.destRecordAttr = RecordAttribute();
        break;
      default:
        jj_la1[342] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INVERSE:
        jj_consume_token(INVERSE);
                      jjtn000.inverse = true;
        break;
      default:
        jj_la1[343] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OExplainStatement ExplainStatement() throws ParseException {
 /*@bgen(jjtree) ExplainStatement */
  OExplainStatement jjtn000 = new OExplainStatement(JJTEXPLAINSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(EXPLAIN);
      jjtn000.statement = StatementInternal();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OPermission Permission() throws ParseException {
 /*@bgen(jjtree) Permission */
  OPermission jjtn000 = new OPermission(JJTPERMISSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CREATE:
        jj_consume_token(CREATE);
                   jjtn000.permission = "CREATE";
        break;
      case READ:
        jj_consume_token(READ);
                 jjtn000.permission = "READ";
        break;
      case UPDATE:
        jj_consume_token(UPDATE);
                   jjtn000.permission = "UPDATE";
        break;
      case DELETE:
        jj_consume_token(DELETE);
                   jjtn000.permission = "DELETE";
        break;
      case EXECUTE:
        jj_consume_token(EXECUTE);
                    jjtn000.permission = "EXECUTE";
        break;
      case ALL:
        jj_consume_token(ALL);
                jjtn000.permission = "ALL";
        break;
      case NONE:
        jj_consume_token(NONE);
                 jjtn000.permission = "NONE";
        break;
      default:
        jj_la1[344] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OResourcePathItem ResourcePathItem() throws ParseException {
 /*@bgen(jjtree) ResourcePathItem */
  OResourcePathItem jjtn000 = new OResourcePathItem(JJTRESOURCEPATHITEM);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CLUSTER:
        jj_consume_token(CLUSTER);
                    jjtn000.name = "cluster";
        break;
      case STAR:
        jj_consume_token(STAR);
                 jjtn000.star = true;
        break;
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
        jjtn000.identifier = Identifier();
        break;
      default:
        jj_la1[345] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OGrantStatement GrantStatement() throws ParseException {
 /*@bgen(jjtree) GrantStatement */
    OGrantStatement jjtn000 = new OGrantStatement(JJTGRANTSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OResourcePathItem lastItem;
    try {
      jj_consume_token(GRANT);
      jjtn000.permission = Permission();
      jj_consume_token(ON);
      lastItem = ResourcePathItem();
                                        jjtn000.resourceChain.add(lastItem);
      label_56:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DOT:
          ;
          break;
        default:
          jj_la1[346] = jj_gen;
          break label_56;
        }
        jj_consume_token(DOT);
        lastItem = ResourcePathItem();
                                            jjtn000.resourceChain.add(lastItem);
      }
      jj_consume_token(TO);
      jjtn000.actor = Identifier();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ORevokeStatement RevokeStatement() throws ParseException {
 /*@bgen(jjtree) RevokeStatement */
    ORevokeStatement jjtn000 = new ORevokeStatement(JJTREVOKESTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));OResourcePathItem lastItem;
    try {
      jj_consume_token(REVOKE);
      jjtn000.permission = Permission();
      jj_consume_token(ON);
      lastItem = ResourcePathItem();
                                        jjtn000.resourceChain.add(lastItem);
      label_57:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DOT:
          ;
          break;
        default:
          jj_la1[347] = jj_gen;
          break label_57;
        }
        jj_consume_token(DOT);
        lastItem = ResourcePathItem();
                                            jjtn000.resourceChain.add(lastItem);
      }
      jj_consume_token(FROM);
      jjtn000.actor = Identifier();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateFunctionStatement CreateFunctionStatement() throws ParseException {
 /*@bgen(jjtree) CreateFunctionStatement */
    OCreateFunctionStatement jjtn000 = new OCreateFunctionStatement(JJTCREATEFUNCTIONSTATEMENT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token token;
    OIdentifier lastIdentifier;
    try {
      jj_consume_token(CREATE);
      jj_consume_token(FUNCTION);
      jjtn000.name = Identifier();
      token = jj_consume_token(STRING_LITERAL);
            jjtn000.codeQuoted = token.image;
            jjtn000.code = token.image.substring(1, token.image.length() -1);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PARAMETERS:
        jj_consume_token(PARAMETERS);
        jj_consume_token(LBRACKET);
        lastIdentifier = Identifier();
                jjtn000.parameters = new ArrayList();
                jjtn000.parameters.add(lastIdentifier);
        label_58:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[348] = jj_gen;
            break label_58;
          }
          jj_consume_token(COMMA);
          lastIdentifier = Identifier();
                                                jjtn000.parameters.add(lastIdentifier);
        }
        jj_consume_token(RBRACKET);
        break;
      default:
        jj_la1[349] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IDEMPOTENT:
        jj_consume_token(IDEMPOTENT);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TRUE:
          jj_consume_token(TRUE);
                         jjtn000.idempotent = true;
          break;
        case FALSE:
          jj_consume_token(FALSE);
                          jjtn000.idempotent = false;
          break;
        default:
          jj_la1[350] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[351] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LANGUAGE:
        jj_consume_token(LANGUAGE);
        jjtn000.language = Identifier();
        break;
      default:
        jj_la1[352] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OLetStatement LetStatement() throws ParseException {
 /*@bgen(jjtree) LetStatement */
  OLetStatement jjtn000 = new OLetStatement(JJTLETSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LET);
      jjtn000.name = Identifier();
      jj_consume_token(EQ);
      if (jj_2_142(2147483647)) {
        jjtn000.statement = StatementInternal();
      } else if (jj_2_143(2147483647)) {
        jjtn000.expression = Expression();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OBeginStatement BeginStatement() throws ParseException {
 /*@bgen(jjtree) BeginStatement */
  OBeginStatement jjtn000 = new OBeginStatement(JJTBEGINSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(BEGIN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ISOLATION:
        jj_consume_token(ISOLATION);
        jjtn000.isolation = Identifier();
        break;
      default:
        jj_la1[353] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCommitStatement CommitStatement() throws ParseException {
 /*@bgen(jjtree) CommitStatement */
  OCommitStatement jjtn000 = new OCommitStatement(JJTCOMMITSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(COMMIT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RETRY:
        jj_consume_token(RETRY);
        jjtn000.retry = Integer();
        break;
      default:
        jj_la1[354] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ORollbackStatement RollbackStatement() throws ParseException {
 /*@bgen(jjtree) RollbackStatement */
  ORollbackStatement jjtn000 = new ORollbackStatement(JJTROLLBACKSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(ROLLBACK);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OReturnStatement ReturnStatement() throws ParseException {
 /*@bgen(jjtree) ReturnStatement */
  OReturnStatement jjtn000 = new OReturnStatement(JJTRETURNSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(RETURN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TO:
      case VALUE:
      case VALUES:
      case SET:
      case ADD:
      case PUT:
      case MERGE:
      case CONTENT:
      case REMOVE:
      case NULL:
      case ORDER:
      case GROUP:
      case OFFSET:
      case RECORD:
      case CACHE:
      case LUCENE:
      case NEAR:
      case WITHIN:
      case MINDEPTH:
      case CLASS:
      case SUPERCLASS:
      case CLASSES:
      case SUPERCLASSES:
      case EXCEPTION:
      case PROFILE:
      case STORAGE:
      case ON:
      case OFF:
      case TRUNCATE:
      case FIND:
      case REFERENCES:
      case EXTENDS:
      case CLUSTERS:
      case ABSTRACT:
      case ALTER:
      case NAME:
      case SHORTNAME:
      case OVERSIZE:
      case STRICTMODE:
      case ADDCLUSTER:
      case REMOVECLUSTER:
      case CUSTOM:
      case CLUSTERSELECTION:
      case DESCRIPTION:
      case ENCRYPTION:
      case DROP:
      case PROPERTY:
      case FORCE:
      case METADATA:
      case INDEX:
      case COLLATE:
      case ENGINE:
      case REBUILD:
      case ID:
      case DATABASE:
      case OPTIMIZE:
      case LINK:
      case TYPE:
      case INVERSE:
      case EXPLAIN:
      case GRANT:
      case REVOKE:
      case READ:
      case EXECUTE:
      case ALL:
      case NONE:
      case FUNCTION:
      case PARAMETERS:
      case IDEMPOTENT:
      case LANGUAGE:
      case BEGIN:
      case COMMIT:
      case ROLLBACK:
      case IF:
      case ISOLATION:
      case SLEEP:
      case CONSOLE:
      case BLOB:
      case SHARED:
      case DEFAULT_:
      case SEQUENCE:
      case START:
      case OPTIONAL:
      case COUNT:
      case HA:
      case STATUS:
      case SERVER:
      case SYNC:
      case EXISTS:
      case RID:
      case RIDS:
      case MOVE:
      case THIS:
      case RECORD_ATTRIBUTE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LBRACE:
      case LBRACKET:
      case HOOK:
      case COLON:
      case MINUS:
      case STAR:
      case IN:
      case KEY:
      case IDENTIFIER:
      case QUOTED_IDENTIFIER:
      case 246:
        jjtn000.expression = Expression();
        break;
      default:
        jj_la1[355] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
     {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OIfStatement IfStatement() throws ParseException {
 /*@bgen(jjtree) IfStatement */
  OIfStatement jjtn000 = new OIfStatement(JJTIFSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));OStatement last;
    try {
      jj_consume_token(IF);
      jj_consume_token(LPAREN);
      jjtn000.expression = OrBlock();
      jj_consume_token(RPAREN);
      jj_consume_token(LBRACE);
      label_59:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SELECT:
        case TRAVERSE:
        case MATCH:
        case INSERT:
        case CREATE:
        case DELETE:
        case UPDATE:
        case RETURN:
        case LET:
        case PROFILE:
        case TRUNCATE:
        case FIND:
        case ALTER:
        case DROP:
        case REBUILD:
        case OPTIMIZE:
        case EXPLAIN:
        case GRANT:
        case REVOKE:
        case BEGIN:
        case COMMIT:
        case ROLLBACK:
        case IF:
        case SLEEP:
        case CONSOLE:
        case HA:
        case MOVE:
        case SEMICOLON:
          ;
          break;
        default:
          jj_la1[356] = jj_gen;
          break label_59;
        }
        if (jj_2_144(2147483647)) {
          last = StatementSemicolon();
                                          jjtn000.statements.add(last);
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case IF:
            last = IfStatement();
                                   jjtn000.statements.add(last);
            break;
          case SEMICOLON:
            jj_consume_token(SEMICOLON);
            break;
          default:
            jj_la1[357] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
      jj_consume_token(RBRACE);
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OSleepStatement SleepStatement() throws ParseException {
 /*@bgen(jjtree) SleepStatement */
  OSleepStatement jjtn000 = new OSleepStatement(JJTSLEEPSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(SLEEP);
      jjtn000.millis = Integer();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OConsoleStatement ConsoleStatement() throws ParseException {
 /*@bgen(jjtree) ConsoleStatement */
  OConsoleStatement jjtn000 = new OConsoleStatement(JJTCONSOLESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CONSOLE);
      jj_consume_token(DOT);
      jjtn000.logLevel = Identifier();
      jjtn000.message = Expression();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OCreateSequenceStatement CreateSequenceStatement() throws ParseException {
 /*@bgen(jjtree) CreateSequenceStatement */
 OCreateSequenceStatement jjtn000 = new OCreateSequenceStatement(JJTCREATESEQUENCESTATEMENT);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
    try {
      jj_consume_token(CREATE);
      jj_consume_token(SEQUENCE);
      jjtn000.name = Identifier();
      jj_consume_token(TYPE);
      lastIdentifier = Identifier();
            if(lastIdentifier.getStringValue().equalsIgnoreCase("cached")){
                jjtn000.type = OCreateSequenceStatement.TYPE_CACHED;
            }else if(lastIdentifier.getStringValue().equalsIgnoreCase("ordered")){
                jjtn000.type = OCreateSequenceStatement.TYPE_ORDERED;
            }else{
                {if (true) throw new ParseException();}
            }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case START:
        jj_consume_token(START);
        jjtn000.start = Expression();
        break;
      default:
        jj_la1[358] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INCREMENT:
        jj_consume_token(INCREMENT);
        jjtn000.increment = Expression();
        break;
      default:
        jj_la1[359] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CACHE:
        jj_consume_token(CACHE);
        jjtn000.cache = Expression();
        break;
      default:
        jj_la1[360] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OAlterSequenceStatement AlterSequenceStatement() throws ParseException {
 /*@bgen(jjtree) AlterSequenceStatement */
 OAlterSequenceStatement jjtn000 = new OAlterSequenceStatement(JJTALTERSEQUENCESTATEMENT);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
    try {
      jj_consume_token(ALTER);
      jj_consume_token(SEQUENCE);
      jjtn000.name = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case START:
        jj_consume_token(START);
        jjtn000.start = Expression();
        break;
      default:
        jj_la1[361] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INCREMENT:
        jj_consume_token(INCREMENT);
        jjtn000.increment = Expression();
        break;
      default:
        jj_la1[362] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CACHE:
        jj_consume_token(CACHE);
        jjtn000.cache = Expression();
        break;
      default:
        jj_la1[363] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public ODropSequenceStatement DropSequenceStatement() throws ParseException {
 /*@bgen(jjtree) DropSequenceStatement */
 ODropSequenceStatement jjtn000 = new ODropSequenceStatement(JJTDROPSEQUENCESTATEMENT);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));OIdentifier lastIdentifier;
    try {
      jj_consume_token(DROP);
      jj_consume_token(SEQUENCE);
      jjtn000.name = Identifier();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OHaStatusStatement HaStatusStatement() throws ParseException {
 /*@bgen(jjtree) HaStatusStatement */
 OHaStatusStatement jjtn000 = new OHaStatusStatement(JJTHASTATUSSTATEMENT);
 boolean jjtc000 = true;
 jjtree.openNodeScope(jjtn000);
 jjtn000.jjtSetFirstToken(getToken(1));Token token;
    try {
      jj_consume_token(HA);
      jj_consume_token(STATUS);
      label_60:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 249:
        case 250:
        case 251:
        case 252:
        case 253:
        case 254:
          ;
          break;
        default:
          jj_la1[364] = jj_gen;
          break label_60;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 249:
          token = jj_consume_token(249);
                                 jjtn000.servers = true;
          break;
        case 250:
          token = jj_consume_token(250);
                            jjtn000.db = true;
          break;
        case 251:
          token = jj_consume_token(251);
                                 jjtn000.latency = true;
          break;
        case 252:
          token = jj_consume_token(252);
                                  jjtn000.messages = true;
          break;
        case 253:
          token = jj_consume_token(253);
                jjtn000.servers = true;
                jjtn000.db = true;
                jjtn000.latency = true;
                jjtn000.messages = true;
          break;
        case 254:
          token = jj_consume_token(254);
                                     jjtn000.outputText = true;
          break;
        default:
          jj_la1[365] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OHaRemoveServerStatement HaRemoveServerStatement() throws ParseException {
 /*@bgen(jjtree) HaRemoveServerStatement */
  OHaRemoveServerStatement jjtn000 = new OHaRemoveServerStatement(JJTHAREMOVESERVERSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(HA);
      jj_consume_token(REMOVE);
      jj_consume_token(SERVER);
      jjtn000.serverName = Identifier();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OHaSyncDatabaseStatement HaSyncDatabaseStatement() throws ParseException {
 /*@bgen(jjtree) HaSyncDatabaseStatement */
  OHaSyncDatabaseStatement jjtn000 = new OHaSyncDatabaseStatement(JJTHASYNCDATABASESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(HA);
      jj_consume_token(SYNC);
      jj_consume_token(DATABASE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 255:
        jj_consume_token(255);
                     jjtn000.force = true;
        break;
      default:
        jj_la1[366] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 256:
        jj_consume_token(256);
                    jjtn000.full = true;
        break;
      default:
        jj_la1[367] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  final public OHaSyncClusterStatement HaSyncClusterStatement() throws ParseException {
 /*@bgen(jjtree) HaSyncClusterStatement */
  OHaSyncClusterStatement jjtn000 = new OHaSyncClusterStatement(JJTHASYNCCLUSTERSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(HA);
      jj_consume_token(SYNC);
      jj_consume_token(CLUSTER);
      jjtn000.clusterName = Identifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 257:
      case 258:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 257:
          jj_consume_token(257);
                                 jjtn000.modeFull = true;
          break;
        case 258:
          jj_consume_token(258);
                          jjtn000.modeMerge = true;
          break;
        default:
          jj_la1[368] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[369] = jj_gen;
        ;
      }
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      jjtn000.jjtSetLastToken(getToken(0));
      {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
    throw new Error("Missing return statement in function");
  }

  private boolean jj_2_1(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_1(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(0, xla); }
  }

  private boolean jj_2_2(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_2(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(1, xla); }
  }

  private boolean jj_2_3(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_3(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(2, xla); }
  }

  private boolean jj_2_4(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_4(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(3, xla); }
  }

  private boolean jj_2_5(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_5(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(4, xla); }
  }

  private boolean jj_2_6(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_6(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(5, xla); }
  }

  private boolean jj_2_7(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_7(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(6, xla); }
  }

  private boolean jj_2_8(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_8(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(7, xla); }
  }

  private boolean jj_2_9(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_9(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(8, xla); }
  }

  private boolean jj_2_10(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_10(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(9, xla); }
  }

  private boolean jj_2_11(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_11(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(10, xla); }
  }

  private boolean jj_2_12(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_12(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(11, xla); }
  }

  private boolean jj_2_13(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_13(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(12, xla); }
  }

  private boolean jj_2_14(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_14(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(13, xla); }
  }

  private boolean jj_2_15(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_15(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(14, xla); }
  }

  private boolean jj_2_16(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_16(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(15, xla); }
  }

  private boolean jj_2_17(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_17(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(16, xla); }
  }

  private boolean jj_2_18(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_18(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(17, xla); }
  }

  private boolean jj_2_19(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_19(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(18, xla); }
  }

  private boolean jj_2_20(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_20(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(19, xla); }
  }

  private boolean jj_2_21(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_21(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(20, xla); }
  }

  private boolean jj_2_22(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_22(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(21, xla); }
  }

  private boolean jj_2_23(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_23(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(22, xla); }
  }

  private boolean jj_2_24(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_24(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(23, xla); }
  }

  private boolean jj_2_25(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_25(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(24, xla); }
  }

  private boolean jj_2_26(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_26(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(25, xla); }
  }

  private boolean jj_2_27(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_27(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(26, xla); }
  }

  private boolean jj_2_28(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_28(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(27, xla); }
  }

  private boolean jj_2_29(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_29(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(28, xla); }
  }

  private boolean jj_2_30(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_30(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(29, xla); }
  }

  private boolean jj_2_31(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_31(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(30, xla); }
  }

  private boolean jj_2_32(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_32(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(31, xla); }
  }

  private boolean jj_2_33(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_33(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(32, xla); }
  }

  private boolean jj_2_34(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_34(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(33, xla); }
  }

  private boolean jj_2_35(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_35(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(34, xla); }
  }

  private boolean jj_2_36(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_36(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(35, xla); }
  }

  private boolean jj_2_37(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_37(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(36, xla); }
  }

  private boolean jj_2_38(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_38(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(37, xla); }
  }

  private boolean jj_2_39(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_39(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(38, xla); }
  }

  private boolean jj_2_40(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_40(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(39, xla); }
  }

  private boolean jj_2_41(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_41(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(40, xla); }
  }

  private boolean jj_2_42(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_42(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(41, xla); }
  }

  private boolean jj_2_43(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_43(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(42, xla); }
  }

  private boolean jj_2_44(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_44(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(43, xla); }
  }

  private boolean jj_2_45(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_45(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(44, xla); }
  }

  private boolean jj_2_46(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_46(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(45, xla); }
  }

  private boolean jj_2_47(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_47(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(46, xla); }
  }

  private boolean jj_2_48(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_48(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(47, xla); }
  }

  private boolean jj_2_49(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_49(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(48, xla); }
  }

  private boolean jj_2_50(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_50(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(49, xla); }
  }

  private boolean jj_2_51(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_51(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(50, xla); }
  }

  private boolean jj_2_52(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_52(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(51, xla); }
  }

  private boolean jj_2_53(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_53(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(52, xla); }
  }

  private boolean jj_2_54(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_54(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(53, xla); }
  }

  private boolean jj_2_55(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_55(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(54, xla); }
  }

  private boolean jj_2_56(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_56(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(55, xla); }
  }

  private boolean jj_2_57(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_57(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(56, xla); }
  }

  private boolean jj_2_58(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_58(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(57, xla); }
  }

  private boolean jj_2_59(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_59(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(58, xla); }
  }

  private boolean jj_2_60(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_60(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(59, xla); }
  }

  private boolean jj_2_61(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_61(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(60, xla); }
  }

  private boolean jj_2_62(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_62(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(61, xla); }
  }

  private boolean jj_2_63(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_63(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(62, xla); }
  }

  private boolean jj_2_64(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_64(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(63, xla); }
  }

  private boolean jj_2_65(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_65(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(64, xla); }
  }

  private boolean jj_2_66(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_66(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(65, xla); }
  }

  private boolean jj_2_67(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_67(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(66, xla); }
  }

  private boolean jj_2_68(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_68(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(67, xla); }
  }

  private boolean jj_2_69(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_69(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(68, xla); }
  }

  private boolean jj_2_70(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_70(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(69, xla); }
  }

  private boolean jj_2_71(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_71(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(70, xla); }
  }

  private boolean jj_2_72(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_72(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(71, xla); }
  }

  private boolean jj_2_73(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_73(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(72, xla); }
  }

  private boolean jj_2_74(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_74(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(73, xla); }
  }

  private boolean jj_2_75(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_75(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(74, xla); }
  }

  private boolean jj_2_76(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_76(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(75, xla); }
  }

  private boolean jj_2_77(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_77(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(76, xla); }
  }

  private boolean jj_2_78(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_78(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(77, xla); }
  }

  private boolean jj_2_79(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_79(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(78, xla); }
  }

  private boolean jj_2_80(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_80(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(79, xla); }
  }

  private boolean jj_2_81(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_81(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(80, xla); }
  }

  private boolean jj_2_82(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_82(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(81, xla); }
  }

  private boolean jj_2_83(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_83(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(82, xla); }
  }

  private boolean jj_2_84(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_84(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(83, xla); }
  }

  private boolean jj_2_85(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_85(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(84, xla); }
  }

  private boolean jj_2_86(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_86(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(85, xla); }
  }

  private boolean jj_2_87(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_87(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(86, xla); }
  }

  private boolean jj_2_88(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_88(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(87, xla); }
  }

  private boolean jj_2_89(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_89(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(88, xla); }
  }

  private boolean jj_2_90(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_90(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(89, xla); }
  }

  private boolean jj_2_91(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_91(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(90, xla); }
  }

  private boolean jj_2_92(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_92(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(91, xla); }
  }

  private boolean jj_2_93(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_93(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(92, xla); }
  }

  private boolean jj_2_94(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_94(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(93, xla); }
  }

  private boolean jj_2_95(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_95(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(94, xla); }
  }

  private boolean jj_2_96(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_96(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(95, xla); }
  }

  private boolean jj_2_97(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_97(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(96, xla); }
  }

  private boolean jj_2_98(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_98(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(97, xla); }
  }

  private boolean jj_2_99(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_99(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(98, xla); }
  }

  private boolean jj_2_100(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_100(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(99, xla); }
  }

  private boolean jj_2_101(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_101(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(100, xla); }
  }

  private boolean jj_2_102(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_102(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(101, xla); }
  }

  private boolean jj_2_103(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_103(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(102, xla); }
  }

  private boolean jj_2_104(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_104(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(103, xla); }
  }

  private boolean jj_2_105(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_105(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(104, xla); }
  }

  private boolean jj_2_106(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_106(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(105, xla); }
  }

  private boolean jj_2_107(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_107(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(106, xla); }
  }

  private boolean jj_2_108(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_108(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(107, xla); }
  }

  private boolean jj_2_109(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_109(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(108, xla); }
  }

  private boolean jj_2_110(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_110(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(109, xla); }
  }

  private boolean jj_2_111(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_111(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(110, xla); }
  }

  private boolean jj_2_112(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_112(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(111, xla); }
  }

  private boolean jj_2_113(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_113(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(112, xla); }
  }

  private boolean jj_2_114(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_114(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(113, xla); }
  }

  private boolean jj_2_115(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_115(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(114, xla); }
  }

  private boolean jj_2_116(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_116(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(115, xla); }
  }

  private boolean jj_2_117(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_117(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(116, xla); }
  }

  private boolean jj_2_118(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_118(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(117, xla); }
  }

  private boolean jj_2_119(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_119(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(118, xla); }
  }

  private boolean jj_2_120(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_120(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(119, xla); }
  }

  private boolean jj_2_121(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_121(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(120, xla); }
  }

  private boolean jj_2_122(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_122(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(121, xla); }
  }

  private boolean jj_2_123(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_123(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(122, xla); }
  }

  private boolean jj_2_124(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_124(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(123, xla); }
  }

  private boolean jj_2_125(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_125(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(124, xla); }
  }

  private boolean jj_2_126(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_126(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(125, xla); }
  }

  private boolean jj_2_127(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_127(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(126, xla); }
  }

  private boolean jj_2_128(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_128(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(127, xla); }
  }

  private boolean jj_2_129(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_129(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(128, xla); }
  }

  private boolean jj_2_130(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_130(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(129, xla); }
  }

  private boolean jj_2_131(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_131(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(130, xla); }
  }

  private boolean jj_2_132(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_132(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(131, xla); }
  }

  private boolean jj_2_133(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_133(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(132, xla); }
  }

  private boolean jj_2_134(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_134(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(133, xla); }
  }

  private boolean jj_2_135(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_135(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(134, xla); }
  }

  private boolean jj_2_136(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_136(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(135, xla); }
  }

  private boolean jj_2_137(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_137(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(136, xla); }
  }

  private boolean jj_2_138(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_138(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(137, xla); }
  }

  private boolean jj_2_139(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_139(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(138, xla); }
  }

  private boolean jj_2_140(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_140(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(139, xla); }
  }

  private boolean jj_2_141(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_141(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(140, xla); }
  }

  private boolean jj_2_142(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_142(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(141, xla); }
  }

  private boolean jj_2_143(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_143(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(142, xla); }
  }

  private boolean jj_2_144(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return !jj_3_144(); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(143, xla); }
  }

  private boolean jj_3R_263() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_456()) {
    jj_scanpos = xsp;
    if (jj_3R_457()) return true;
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_580() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_671()) {
    jj_scanpos = xsp;
    if (jj_3R_672()) {
    jj_scanpos = xsp;
    if (jj_3R_673()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_674()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_455() {
    if (jj_3R_114()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_596()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_650() {
    if (jj_scan_token(CONSOLE)) return true;
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_111()) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_144() {
    if (jj_3R_62()) return true;
    return false;
  }

  private boolean jj_3R_434() {
    if (jj_scan_token(ORDER)) return true;
    if (jj_scan_token(BY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_580()) {
    jj_scanpos = xsp;
    if (jj_3R_581()) return true;
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_582()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_262() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_455()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_261() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_649() {
    if (jj_scan_token(SLEEP)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_362() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_845() {
    if (jj_3R_651()) return true;
    return false;
  }

  private boolean jj_3R_361() {
    if (jj_scan_token(CHARACTER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_844() {
    if (jj_3R_62()) return true;
    return false;
  }

  private boolean jj_3R_763() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_844()) {
    jj_scanpos = xsp;
    if (jj_3R_845()) {
    jj_scanpos = xsp;
    if (jj_scan_token(177)) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_360() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3_53() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_103() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(EDGE)) return true;
    if (jj_scan_token(TO)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_261()) {
    jj_scanpos = xsp;
    if (jj_3R_262()) {
    jj_scanpos = xsp;
    if (jj_3R_263()) {
    jj_scanpos = xsp;
    if (jj_3R_264()) {
    jj_scanpos = xsp;
    if (jj_3R_265()) return true;
    }
    }
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_266()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_267()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_268()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_52() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3_123() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_152() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(MATCHES)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_360()) {
    jj_scanpos = xsp;
    if (jj_3R_361()) {
    jj_scanpos = xsp;
    if (jj_3R_362()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_276() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_651() {
    if (jj_scan_token(IF)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_123()) return true;
    if (jj_scan_token(RPAREN)) return true;
    if (jj_scan_token(LBRACE)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_763()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RBRACE)) return true;
    return false;
  }

  private boolean jj_3R_275() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_762() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_274() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_460() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_273() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_459() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_272() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_359() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_151() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(CONTAINSTEXT)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_122() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_123()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_597() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_648() {
    if (jj_scan_token(RETURN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_762()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_271() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_459()) {
    jj_scanpos = xsp;
    if (jj_3R_460()) return true;
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_458() {
    if (jj_3R_114()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_597()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_647() {
    if (jj_scan_token(ROLLBACK)) return true;
    return false;
  }

  private boolean jj_3R_761() {
    if (jj_scan_token(RETRY)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_150() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(CONTAINSALL)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_122()) {
    jj_scanpos = xsp;
    if (jj_3R_359()) return true;
    }
    return false;
  }

  private boolean jj_3R_354() {
    if (jj_3R_127()) return true;
    return false;
  }

  private boolean jj_3_121() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_115()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_270() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_458()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_269() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3_120() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_99()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_646() {
    if (jj_scan_token(COMMIT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_761()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_760() {
    if (jj_scan_token(ISOLATION)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_143() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_142() {
    if (jj_3R_165()) return true;
    return false;
  }

  private boolean jj_3R_145() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(NOT)) return true;
    if (jj_3R_352()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_120()) {
    jj_scanpos = xsp;
    if (jj_3_121()) {
    jj_scanpos = xsp;
    if (jj_3R_354()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_645() {
    if (jj_scan_token(BEGIN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_760()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_51() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_653() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_50() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3_119() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_115()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_104() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(EDGE)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(TO)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_269()) {
    jj_scanpos = xsp;
    if (jj_3R_270()) {
    jj_scanpos = xsp;
    if (jj_3R_271()) {
    jj_scanpos = xsp;
    if (jj_3R_272()) {
    jj_scanpos = xsp;
    if (jj_3R_273()) return true;
    }
    }
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_274()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_275()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_276()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_353() {
    if (jj_3R_127()) return true;
    return false;
  }

  private boolean jj_3R_652() {
    if (jj_3R_167()) return true;
    return false;
  }

  private boolean jj_3_118() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_99()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_595() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_454() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_594() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_453() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_260() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_259() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_258() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_685() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_557() {
    if (jj_scan_token(LET)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_652()) {
    jj_scanpos = xsp;
    if (jj_3R_653()) return true;
    }
    return false;
  }

  private boolean jj_3_117() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_832() {
    if (jj_scan_token(FALSE)) return true;
    return false;
  }

  private boolean jj_3R_739() {
    if (jj_scan_token(LANGUAGE)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_144() {
    if (jj_3R_116()) return true;
    if (jj_3R_352()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_118()) {
    jj_scanpos = xsp;
    if (jj_3_119()) {
    jj_scanpos = xsp;
    if (jj_3R_353()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_831() {
    if (jj_scan_token(TRUE)) return true;
    return false;
  }

  private boolean jj_3R_452() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_594()) {
    jj_scanpos = xsp;
    if (jj_3R_595()) return true;
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_593() {
    if (jj_3R_114()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_685()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_352() {
    if (jj_scan_token(IN)) return true;
    return false;
  }

  private boolean jj_3R_738() {
    if (jj_scan_token(IDEMPOTENT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_831()) {
    jj_scanpos = xsp;
    if (jj_3R_832()) return true;
    }
    return false;
  }

  private boolean jj_3R_356() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_830() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_116() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_123()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_451() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_593()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_450() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3_49() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3_48() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_737() {
    if (jj_scan_token(PARAMETERS)) return true;
    if (jj_scan_token(LBRACKET)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_830()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_148() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(CONTAINS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_116()) {
    jj_scanpos = xsp;
    if (jj_3R_356()) return true;
    }
    return false;
  }

  private boolean jj_3R_257() {
    if (jj_scan_token(TO)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_450()) {
    jj_scanpos = xsp;
    if (jj_3R_451()) {
    jj_scanpos = xsp;
    if (jj_3R_452()) {
    jj_scanpos = xsp;
    if (jj_3R_453()) {
    jj_scanpos = xsp;
    if (jj_3R_454()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_449() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_256() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_448() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_255() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_142() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(IS)) return true;
    if (jj_scan_token(NOT)) return true;
    if (jj_scan_token(DEFINED)) return true;
    return false;
  }

  private boolean jj_3R_592() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_72() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(FUNCTION)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(STRING_LITERAL)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_737()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_738()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_739()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_254() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_448()) {
    jj_scanpos = xsp;
    if (jj_3R_449()) return true;
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_143() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(IS)) return true;
    if (jj_scan_token(DEFINED)) return true;
    return false;
  }

  private boolean jj_3R_759() {
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_757()) return true;
    return false;
  }

  private boolean jj_3R_447() {
    if (jj_3R_114()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_592()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_140() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(IS)) return true;
    if (jj_scan_token(NOT)) return true;
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3R_141() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(IS)) return true;
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3R_253() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_447()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_644() {
    if (jj_scan_token(REVOKE)) return true;
    if (jj_3R_756()) return true;
    if (jj_scan_token(ON)) return true;
    if (jj_3R_757()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_759()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_252() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_637() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_758() {
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_757()) return true;
    return false;
  }

  private boolean jj_3R_251() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_516() {
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_637()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_636() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_147() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(BETWEEN)) return true;
    if (jj_3R_116()) return true;
    if (jj_scan_token(AND)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_515() {
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_636()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_643() {
    if (jj_scan_token(GRANT)) return true;
    if (jj_3R_756()) return true;
    if (jj_scan_token(ON)) return true;
    if (jj_3R_757()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_758()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(TO)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_591() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_102() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(EDGE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_251()) jj_scanpos = xsp;
    if (jj_scan_token(FROM)) return true;
    xsp = jj_scanpos;
    if (jj_3R_252()) {
    jj_scanpos = xsp;
    if (jj_3R_253()) {
    jj_scanpos = xsp;
    if (jj_3R_254()) {
    jj_scanpos = xsp;
    if (jj_3R_255()) {
    jj_scanpos = xsp;
    if (jj_3R_256()) return true;
    }
    }
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_257()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_258()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_259()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_260()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_635() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_364() {
    if (jj_scan_token(BETWEEN)) return true;
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_515()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    if (jj_scan_token(AND)) return true;
    if (jj_scan_token(LBRACKET)) return true;
    xsp = jj_scanpos;
    if (jj_3R_516()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_250() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_843() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_514() {
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_635()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_842() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_841() {
    if (jj_scan_token(CLUSTER)) return true;
    return false;
  }

  private boolean jj_3R_446() {
    if (jj_3R_114()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_591()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_363() {
    if (jj_3R_355()) return true;
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_514()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_757() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_841()) {
    jj_scanpos = xsp;
    if (jj_3R_842()) {
    jj_scanpos = xsp;
    if (jj_3R_843()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_249() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_446()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_840() {
    if (jj_scan_token(NONE)) return true;
    return false;
  }

  private boolean jj_3R_248() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_839() {
    if (jj_scan_token(ALL)) return true;
    return false;
  }

  private boolean jj_3R_367() {
    if (jj_scan_token(CHARACTER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_838() {
    if (jj_scan_token(EXECUTE)) return true;
    return false;
  }

  private boolean jj_3R_153() {
    if (jj_scan_token(KEY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_363()) {
    jj_scanpos = xsp;
    if (jj_3R_364()) return true;
    }
    return false;
  }

  private boolean jj_3R_366() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_837() {
    if (jj_scan_token(DELETE)) return true;
    return false;
  }

  private boolean jj_3R_365() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_836() {
    if (jj_scan_token(UPDATE)) return true;
    return false;
  }

  private boolean jj_3R_835() {
    if (jj_scan_token(READ)) return true;
    return false;
  }

  private boolean jj_3_47() {
    if (jj_3R_105()) return true;
    return false;
  }

  private boolean jj_3R_834() {
    if (jj_scan_token(CREATE)) return true;
    return false;
  }

  private boolean jj_3_46() {
    if (jj_3R_104()) return true;
    return false;
  }

  private boolean jj_3R_756() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_834()) {
    jj_scanpos = xsp;
    if (jj_3R_835()) {
    jj_scanpos = xsp;
    if (jj_3R_836()) {
    jj_scanpos = xsp;
    if (jj_3R_837()) {
    jj_scanpos = xsp;
    if (jj_3R_838()) {
    jj_scanpos = xsp;
    if (jj_3R_839()) {
    jj_scanpos = xsp;
    if (jj_3R_840()) return true;
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_101() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(EDGE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_248()) {
    jj_scanpos = xsp;
    if (jj_3R_249()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_250()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_45() {
    if (jj_3R_103()) return true;
    return false;
  }

  private boolean jj_3_115() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_44() {
    if (jj_3R_102()) return true;
    return false;
  }

  private boolean jj_3R_173() {
    if (jj_3R_105()) return true;
    return false;
  }

  private boolean jj_3_43() {
    if (jj_3R_101()) return true;
    return false;
  }

  private boolean jj_3R_154() {
    if (jj_3R_116()) return true;
    if (jj_scan_token(INSTANCEOF)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_365()) {
    jj_scanpos = xsp;
    if (jj_3R_366()) {
    jj_scanpos = xsp;
    if (jj_3R_367()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_172() {
    if (jj_3R_104()) return true;
    return false;
  }

  private boolean jj_3R_556() {
    if (jj_scan_token(EXPLAIN)) return true;
    if (jj_3R_167()) return true;
    return false;
  }

  private boolean jj_3R_171() {
    if (jj_3R_103()) return true;
    return false;
  }

  private boolean jj_3R_736() {
    if (jj_scan_token(INVERSE)) return true;
    return false;
  }

  private boolean jj_3R_735() {
    if (jj_3R_119()) return true;
    return false;
  }

  private boolean jj_3R_170() {
    if (jj_3R_102()) return true;
    return false;
  }

  private boolean jj_3R_358() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_734() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_169() {
    if (jj_3R_101()) return true;
    return false;
  }

  private boolean jj_3_114() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_123()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_733() {
    if (jj_3R_119()) return true;
    return false;
  }

  private boolean jj_3R_66() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_169()) {
    jj_scanpos = xsp;
    if (jj_3R_170()) {
    jj_scanpos = xsp;
    if (jj_3R_171()) {
    jj_scanpos = xsp;
    if (jj_3R_172()) {
    jj_scanpos = xsp;
    if (jj_3R_173()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_732() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_184() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_183() {
    if (jj_3R_392()) return true;
    return false;
  }

  private boolean jj_3R_149() {
    if (jj_3R_116()) return true;
    if (jj_3R_357()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_114()) {
    jj_scanpos = xsp;
    if (jj_3R_358()) return true;
    }
    return false;
  }

  private boolean jj_3R_182() {
    if (jj_scan_token(CLASS)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_181() {
    if (jj_3R_113()) return true;
    return false;
  }

  private boolean jj_3R_703() {
    if (jj_scan_token(EQEQ)) return true;
    return false;
  }

  private boolean jj_3R_146() {
    if (jj_3R_116()) return true;
    if (jj_3R_355()) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_702() {
    if (jj_scan_token(EQ)) return true;
    return false;
  }

  private boolean jj_3R_71() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(LINK)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(TYPE)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(DOT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_732()) {
    jj_scanpos = xsp;
    if (jj_3R_733()) return true;
    }
    if (jj_scan_token(TO)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(DOT)) return true;
    xsp = jj_scanpos;
    if (jj_3R_734()) {
    jj_scanpos = xsp;
    if (jj_3R_735()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_736()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_755() {
    if (jj_3R_833()) return true;
    return false;
  }

  private boolean jj_3R_78() {
    if (jj_scan_token(MOVE)) return true;
    if (jj_scan_token(VERTEX)) return true;
    if (jj_3R_180()) return true;
    if (jj_scan_token(TO)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_181()) {
    jj_scanpos = xsp;
    if (jj_3R_182()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_183()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_184()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_718() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_720() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_719() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_622() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_702()) {
    jj_scanpos = xsp;
    if (jj_3R_703()) return true;
    }
    return false;
  }

  private boolean jj_3R_818() {
    if (jj_scan_token(COUNT)) return true;
    return false;
  }

  private boolean jj_3R_817() {
    if (jj_scan_token(BEFORE)) return true;
    return false;
  }

  private boolean jj_3R_642() {
    if (jj_scan_token(OPTIMIZE)) return true;
    if (jj_scan_token(DATABASE)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_755()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_717() {
    if (jj_scan_token(RETURN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_817()) {
    jj_scanpos = xsp;
    if (jj_3R_818()) return true;
    }
    return false;
  }

  private boolean jj_3R_716() {
    if (jj_scan_token(FROM)) return true;
    return false;
  }

  private boolean jj_3R_357() {
    if (jj_scan_token(CONTAINSVALUE)) return true;
    return false;
  }

  private boolean jj_3R_833() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_715() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3R_630() {
    if (jj_scan_token(CONTAINSKEY)) return true;
    return false;
  }

  private boolean jj_3R_816() {
    if (jj_scan_token(COUNT)) return true;
    return false;
  }

  private boolean jj_3R_714() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_713() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_815() {
    if (jj_scan_token(BEFORE)) return true;
    return false;
  }

  private boolean jj_3R_754() {
    if (jj_3R_111()) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_65() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(VERTEX)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_716()) jj_scanpos = xsp;
    if (jj_3R_190()) return true;
    xsp = jj_scanpos;
    if (jj_3R_717()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_718()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_719()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_720()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_634() {
    if (jj_scan_token(SC_AND)) return true;
    return false;
  }

  private boolean jj_3R_712() {
    if (jj_scan_token(RETURN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_815()) {
    jj_scanpos = xsp;
    if (jj_3R_816()) return true;
    }
    return false;
  }

  private boolean jj_3_141() {
    if (jj_scan_token(CUSTOM)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_753() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_94() {
    if (jj_scan_token(ALTER)) return true;
    if (jj_scan_token(DATABASE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_141()) {
    jj_scanpos = xsp;
    if (jj_3R_754()) return true;
    }
    return false;
  }

  private boolean jj_3R_752() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_633() {
    if (jj_scan_token(WITHIN)) return true;
    return false;
  }

  private boolean jj_3R_810() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_867() {
    if (jj_scan_token(AS)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_64() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_190()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_712()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_713()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_714()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_715()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_632() {
    if (jj_scan_token(NEAR)) return true;
    return false;
  }

  private boolean jj_3R_93() {
    if (jj_scan_token(DROP)) return true;
    if (jj_scan_token(CLUSTER)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_752()) {
    jj_scanpos = xsp;
    if (jj_3R_753()) return true;
    }
    return false;
  }

  private boolean jj_3R_809() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_867()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_232() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_808() {
    if (jj_scan_token(AS)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_631() {
    if (jj_scan_token(LUCENE)) return true;
    return false;
  }

  private boolean jj_3R_807() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_621()) return true;
    return false;
  }

  private boolean jj_3R_92() {
    if (jj_scan_token(ALTER)) return true;
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_232()) jj_scanpos = xsp;
    if (jj_3R_111()) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_629() {
    if (jj_scan_token(LIKE)) return true;
    return false;
  }

  private boolean jj_3R_731() {
    if (jj_scan_token(ID)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_174() {
    if (jj_scan_token(BLOB)) return true;
    if (jj_scan_token(CLUSTER)) return true;
    return false;
  }

  private boolean jj_3R_500() {
    if (jj_scan_token(MATCH)) return true;
    if (jj_3R_621()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_807()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RETURN)) return true;
    if (jj_3R_116()) return true;
    xsp = jj_scanpos;
    if (jj_3R_808()) jj_scanpos = xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_809()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_810()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_628() {
    if (jj_scan_token(LE)) return true;
    return false;
  }

  private boolean jj_3R_865() {
    if (jj_scan_token(BREADTH_FIRST)) return true;
    return false;
  }

  private boolean jj_3R_864() {
    if (jj_scan_token(DEPTH_FIRST)) return true;
    return false;
  }

  private boolean jj_3R_627() {
    if (jj_scan_token(GE)) return true;
    return false;
  }

  private boolean jj_3R_70() {
    if (jj_scan_token(CREATE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(234)) {
    jj_scanpos = xsp;
    if (jj_3R_174()) return true;
    }
    if (jj_3R_111()) return true;
    xsp = jj_scanpos;
    if (jj_3R_731()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_751() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_806() {
    if (jj_scan_token(STRATEGY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_864()) {
    jj_scanpos = xsp;
    if (jj_3R_865()) return true;
    }
    return false;
  }

  private boolean jj_3R_805() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_750() {
    if (jj_3R_469()) return true;
    return false;
  }

  private boolean jj_3R_804() {
    if (jj_scan_token(WHILE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_863() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_701()) return true;
    return false;
  }

  private boolean jj_3R_803() {
    if (jj_scan_token(MAXDEPTH)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_626() {
    if (jj_scan_token(NEQ)) return true;
    return false;
  }

  private boolean jj_3R_620() {
    if (jj_3R_701()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_863()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_586() {
    if (jj_3R_584()) return true;
    return false;
  }

  private boolean jj_3R_585() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_91() {
    if (jj_scan_token(DROP)) return true;
    if (jj_scan_token(INDEX)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_750()) {
    jj_scanpos = xsp;
    if (jj_3R_751()) return true;
    }
    return false;
  }

  private boolean jj_3R_749() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_625() {
    if (jj_scan_token(NE)) return true;
    return false;
  }

  private boolean jj_3R_748() {
    if (jj_3R_469()) return true;
    return false;
  }

  private boolean jj_3R_499() {
    if (jj_scan_token(TRAVERSE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_620()) jj_scanpos = xsp;
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_190()) return true;
    xsp = jj_scanpos;
    if (jj_3R_803()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_804()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_805()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_806()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_886() {
    if (jj_scan_token(METADATA)) return true;
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3R_885() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_442() {
    if (jj_scan_token(DEFAULT_)) return true;
    return false;
  }

  private boolean jj_3R_624() {
    if (jj_scan_token(GT)) return true;
    return false;
  }

  private boolean jj_3R_441() {
    if (jj_scan_token(SHARED)) return true;
    return false;
  }

  private boolean jj_3R_244() {
    if (jj_scan_token(NOCACHE)) return true;
    return false;
  }

  private boolean jj_3R_243() {
    if (jj_scan_token(PARALLEL)) return true;
    return false;
  }

  private boolean jj_3R_440() {
    if (jj_scan_token(NONE)) return true;
    return false;
  }

  private boolean jj_3R_641() {
    if (jj_scan_token(REBUILD)) return true;
    if (jj_scan_token(INDEX)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_748()) {
    jj_scanpos = xsp;
    if (jj_3R_749()) return true;
    }
    return false;
  }

  private boolean jj_3R_439() {
    if (jj_scan_token(RECORD)) return true;
    return false;
  }

  private boolean jj_3R_623() {
    if (jj_scan_token(LT)) return true;
    return false;
  }

  private boolean jj_3R_513() {
    if (jj_3R_634()) return true;
    return false;
  }

  private boolean jj_3R_876() {
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_885()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_886()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_512() {
    if (jj_3R_633()) return true;
    return false;
  }

  private boolean jj_3R_511() {
    if (jj_3R_632()) return true;
    return false;
  }

  private boolean jj_3R_600() {
    if (jj_3R_584()) return true;
    return false;
  }

  private boolean jj_3R_510() {
    if (jj_3R_631()) return true;
    return false;
  }

  private boolean jj_3R_437() {
    if (jj_3R_405()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_586()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_509() {
    if (jj_3R_630()) return true;
    return false;
  }

  private boolean jj_3R_501() {
    if (jj_3R_622()) return true;
    return false;
  }

  private boolean jj_3R_242() {
    if (jj_scan_token(LOCK)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_439()) {
    jj_scanpos = xsp;
    if (jj_3R_440()) {
    jj_scanpos = xsp;
    if (jj_3R_441()) {
    jj_scanpos = xsp;
    if (jj_3R_442()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_508() {
    if (jj_3R_629()) return true;
    return false;
  }

  private boolean jj_3R_436() {
    if (jj_3R_584()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_585()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_239() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_436()) {
    jj_scanpos = xsp;
    if (jj_3R_437()) return true;
    }
    return false;
  }

  private boolean jj_3R_241() {
    if (jj_3R_406()) return true;
    return false;
  }

  private boolean jj_3R_829() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_139()) {
    jj_scanpos = xsp;
    if (jj_3R_876()) return true;
    }
    return false;
  }

  private boolean jj_3R_507() {
    if (jj_3R_628()) return true;
    return false;
  }

  private boolean jj_3R_240() {
    if (jj_3R_438()) return true;
    return false;
  }

  private boolean jj_3_139() {
    if (jj_scan_token(METADATA)) return true;
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3R_884() {
    if (jj_scan_token(METADATA)) return true;
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3R_883() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_599() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_506() {
    if (jj_3R_627()) return true;
    return false;
  }

  private boolean jj_3R_505() {
    if (jj_3R_626()) return true;
    return false;
  }

  private boolean jj_3R_504() {
    if (jj_3R_625()) return true;
    return false;
  }

  private boolean jj_3R_503() {
    if (jj_3R_624()) return true;
    return false;
  }

  private boolean jj_3R_502() {
    if (jj_3R_623()) return true;
    return false;
  }

  private boolean jj_3R_238() {
    if (jj_3R_435()) return true;
    return false;
  }

  private boolean jj_3R_237() {
    if (jj_3R_434()) return true;
    return false;
  }

  private boolean jj_3R_730() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_829()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_236() {
    if (jj_3R_433()) return true;
    return false;
  }

  private boolean jj_3R_235() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3_112() {
    if (jj_3R_153()) return true;
    return false;
  }

  private boolean jj_3R_875() {
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_883()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_884()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_234() {
    if (jj_3R_411()) return true;
    return false;
  }

  private boolean jj_3_113() {
    if (jj_3R_154()) return true;
    return false;
  }

  private boolean jj_3_111() {
    if (jj_3R_152()) return true;
    return false;
  }

  private boolean jj_3R_233() {
    if (jj_3R_281()) return true;
    return false;
  }

  private boolean jj_3R_355() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_501()) {
    jj_scanpos = xsp;
    if (jj_3R_502()) {
    jj_scanpos = xsp;
    if (jj_3R_503()) {
    jj_scanpos = xsp;
    if (jj_3R_504()) {
    jj_scanpos = xsp;
    if (jj_3R_505()) {
    jj_scanpos = xsp;
    if (jj_3R_506()) {
    jj_scanpos = xsp;
    if (jj_3R_507()) {
    jj_scanpos = xsp;
    if (jj_3R_508()) {
    jj_scanpos = xsp;
    if (jj_3R_509()) {
    jj_scanpos = xsp;
    if (jj_3R_510()) {
    jj_scanpos = xsp;
    if (jj_3R_511()) {
    jj_scanpos = xsp;
    if (jj_3R_512()) {
    jj_scanpos = xsp;
    if (jj_3R_513()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_828() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_138()) {
    jj_scanpos = xsp;
    if (jj_3R_875()) return true;
    }
    return false;
  }

  private boolean jj_3_138() {
    if (jj_scan_token(METADATA)) return true;
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3R_351() {
    if (jj_scan_token(FALSE)) return true;
    return false;
  }

  private boolean jj_3_109() {
    if (jj_3R_150()) return true;
    return false;
  }

  private boolean jj_3R_350() {
    if (jj_scan_token(TRUE)) return true;
    return false;
  }

  private boolean jj_3_110() {
    if (jj_3R_151()) return true;
    return false;
  }

  private boolean jj_3R_348() {
    if (jj_3R_153()) return true;
    return false;
  }

  private boolean jj_3R_464() {
    if (jj_3R_405()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_600()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_99() {
    if (jj_scan_token(SELECT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_233()) jj_scanpos = xsp;
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_190()) return true;
    xsp = jj_scanpos;
    if (jj_3R_234()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_235()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_236()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_237()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_238()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_239()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_240()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_241()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_242()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_243()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_244()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_108() {
    if (jj_3R_149()) return true;
    return false;
  }

  private boolean jj_3R_349() {
    if (jj_3R_154()) return true;
    return false;
  }

  private boolean jj_3R_463() {
    if (jj_3R_584()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_599()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_284() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_463()) {
    jj_scanpos = xsp;
    if (jj_3R_464()) return true;
    }
    return false;
  }

  private boolean jj_3R_347() {
    if (jj_3R_152()) return true;
    return false;
  }

  private boolean jj_3R_468() {
    if (jj_scan_token(DEFAULT_)) return true;
    return false;
  }

  private boolean jj_3_107() {
    if (jj_3R_148()) return true;
    return false;
  }

  private boolean jj_3R_467() {
    if (jj_scan_token(SHARED)) return true;
    return false;
  }

  private boolean jj_3R_289() {
    if (jj_scan_token(NOCACHE)) return true;
    return false;
  }

  private boolean jj_3R_288() {
    if (jj_scan_token(PARALLEL)) return true;
    return false;
  }

  private boolean jj_3_106() {
    if (jj_3R_147()) return true;
    return false;
  }

  private boolean jj_3_140() {
    if (jj_scan_token(ENGINE)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_828()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_466() {
    if (jj_scan_token(NONE)) return true;
    return false;
  }

  private boolean jj_3R_882() {
    if (jj_scan_token(VALUE)) return true;
    return false;
  }

  private boolean jj_3R_874() {
    if (jj_scan_token(COLLATE)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_345() {
    if (jj_3R_150()) return true;
    return false;
  }

  private boolean jj_3R_465() {
    if (jj_scan_token(RECORD)) return true;
    return false;
  }

  private boolean jj_3_105() {
    if (jj_3R_146()) return true;
    return false;
  }

  private boolean jj_3R_346() {
    if (jj_3R_151()) return true;
    return false;
  }

  private boolean jj_3R_881() {
    if (jj_scan_token(KEY)) return true;
    return false;
  }

  private boolean jj_3R_729() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_344() {
    if (jj_3R_149()) return true;
    return false;
  }

  private boolean jj_3R_343() {
    if (jj_3R_148()) return true;
    return false;
  }

  private boolean jj_3_103() {
    if (jj_3R_144()) return true;
    return false;
  }

  private boolean jj_3R_873() {
    if (jj_scan_token(BY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_881()) {
    jj_scanpos = xsp;
    if (jj_3R_882()) return true;
    }
    return false;
  }

  private boolean jj_3_104() {
    if (jj_3R_145()) return true;
    return false;
  }

  private boolean jj_3R_287() {
    if (jj_scan_token(LOCK)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_465()) {
    jj_scanpos = xsp;
    if (jj_3R_466()) {
    jj_scanpos = xsp;
    if (jj_3R_467()) {
    jj_scanpos = xsp;
    if (jj_3R_468()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_342() {
    if (jj_3R_147()) return true;
    return false;
  }

  private boolean jj_3R_286() {
    if (jj_3R_406()) return true;
    return false;
  }

  private boolean jj_3_102() {
    if (jj_3R_143()) return true;
    return false;
  }

  private boolean jj_3R_285() {
    if (jj_3R_438()) return true;
    return false;
  }

  private boolean jj_3R_341() {
    if (jj_3R_146()) return true;
    return false;
  }

  private boolean jj_3_101() {
    if (jj_3R_142()) return true;
    return false;
  }

  private boolean jj_3R_872() {
    if (jj_3R_119()) return true;
    return false;
  }

  private boolean jj_3_100() {
    if (jj_3R_141()) return true;
    return false;
  }

  private boolean jj_3R_339() {
    if (jj_3R_144()) return true;
    return false;
  }

  private boolean jj_3R_283() {
    if (jj_3R_435()) return true;
    return false;
  }

  private boolean jj_3_99() {
    if (jj_3R_140()) return true;
    return false;
  }

  private boolean jj_3R_340() {
    if (jj_3R_145()) return true;
    return false;
  }

  private boolean jj_3R_282() {
    if (jj_3R_411()) return true;
    return false;
  }

  private boolean jj_3R_871() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_338() {
    if (jj_3R_143()) return true;
    return false;
  }

  private boolean jj_3_42() {
    if (jj_3R_100()) return true;
    return false;
  }

  private boolean jj_3R_337() {
    if (jj_3R_142()) return true;
    return false;
  }

  private boolean jj_3R_827() {
    if (jj_scan_token(COMMA)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_871()) {
    jj_scanpos = xsp;
    if (jj_3R_872()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_873()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_874()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_336() {
    if (jj_3R_141()) return true;
    return false;
  }

  private boolean jj_3R_106() {
    if (jj_scan_token(SELECT)) return true;
    if (jj_3R_281()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_282()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_283()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_284()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_285()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_286()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_287()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_288()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_289()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_335() {
    if (jj_3R_140()) return true;
    return false;
  }

  private boolean jj_3R_870() {
    if (jj_scan_token(VALUE)) return true;
    return false;
  }

  private boolean jj_3R_826() {
    if (jj_scan_token(COLLATE)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_41() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_869() {
    if (jj_scan_token(KEY)) return true;
    return false;
  }

  private boolean jj_3R_334() {
    if (jj_3R_100()) return true;
    return false;
  }

  private boolean jj_3R_333() {
    if (jj_3R_500()) return true;
    return false;
  }

  private boolean jj_3R_332() {
    if (jj_3R_499()) return true;
    return false;
  }

  private boolean jj_3_98() {
    if (jj_3R_139()) return true;
    return false;
  }

  private boolean jj_3R_825() {
    if (jj_scan_token(BY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_869()) {
    jj_scanpos = xsp;
    if (jj_3R_870()) return true;
    }
    return false;
  }

  private boolean jj_3R_331() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_138() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_335()) {
    jj_scanpos = xsp;
    if (jj_3R_336()) {
    jj_scanpos = xsp;
    if (jj_3R_337()) {
    jj_scanpos = xsp;
    if (jj_3R_338()) {
    jj_scanpos = xsp;
    if (jj_3R_339()) {
    jj_scanpos = xsp;
    if (jj_3R_340()) {
    jj_scanpos = xsp;
    if (jj_3R_341()) {
    jj_scanpos = xsp;
    if (jj_3R_342()) {
    jj_scanpos = xsp;
    if (jj_3R_343()) {
    jj_scanpos = xsp;
    if (jj_3R_344()) {
    jj_scanpos = xsp;
    if (jj_3R_345()) {
    jj_scanpos = xsp;
    if (jj_3R_346()) {
    jj_scanpos = xsp;
    if (jj_3R_347()) {
    jj_scanpos = xsp;
    if (jj_3R_348()) {
    jj_scanpos = xsp;
    if (jj_3R_349()) {
    jj_scanpos = xsp;
    if (jj_3R_350()) {
    jj_scanpos = xsp;
    if (jj_3R_351()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_97() {
    if (jj_3R_138()) return true;
    return false;
  }

  private boolean jj_3R_330() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3_96() {
    if (jj_3R_139()) return true;
    return false;
  }

  private boolean jj_3R_139() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_123()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_824() {
    if (jj_3R_119()) return true;
    return false;
  }

  private boolean jj_3_95() {
    if (jj_3R_138()) return true;
    return false;
  }

  private boolean jj_3R_137() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_330()) {
    jj_scanpos = xsp;
    if (jj_3R_331()) {
    jj_scanpos = xsp;
    if (jj_3R_332()) {
    jj_scanpos = xsp;
    if (jj_3R_333()) {
    jj_scanpos = xsp;
    if (jj_3R_334()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_697() {
    if (jj_3R_139()) return true;
    return false;
  }

  private boolean jj_3R_823() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_696() {
    if (jj_3R_138()) return true;
    return false;
  }

  private boolean jj_3R_695() {
    if (jj_3R_139()) return true;
    return false;
  }

  private boolean jj_3_40() {
    if (jj_3R_98()) return true;
    return false;
  }

  private boolean jj_3R_382() {
    if (jj_3R_557()) return true;
    return false;
  }

  private boolean jj_3R_694() {
    if (jj_3R_138()) return true;
    return false;
  }

  private boolean jj_3R_610() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_696()) {
    jj_scanpos = xsp;
    if (jj_3R_697()) return true;
    }
    return false;
  }

  private boolean jj_3_39() {
    if (jj_3R_97()) return true;
    return false;
  }

  private boolean jj_3R_381() {
    if (jj_3R_556()) return true;
    return false;
  }

  private boolean jj_3_38() {
    if (jj_3R_96()) return true;
    return false;
  }

  private boolean jj_3_37() {
    if (jj_3R_95()) return true;
    return false;
  }

  private boolean jj_3R_555() {
    if (jj_3R_651()) return true;
    return false;
  }

  private boolean jj_3_137() {
    if (jj_scan_token(ON)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_823()) {
    jj_scanpos = xsp;
    if (jj_3R_824()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_825()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_826()) jj_scanpos = xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_827()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_609() {
    if (jj_scan_token(NOT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_694()) {
    jj_scanpos = xsp;
    if (jj_3R_695()) return true;
    }
    return false;
  }

  private boolean jj_3R_554() {
    if (jj_3R_650()) return true;
    return false;
  }

  private boolean jj_3R_553() {
    if (jj_3R_649()) return true;
    return false;
  }

  private boolean jj_3R_69() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(INDEX)) return true;
    if (jj_3R_469()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_137()) {
    jj_scanpos = xsp;
    if (jj_3R_729()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3_140()) {
    jj_scanpos = xsp;
    if (jj_3R_730()) return true;
    }
    return false;
  }

  private boolean jj_3R_552() {
    if (jj_3R_648()) return true;
    return false;
  }

  private boolean jj_3R_483() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_609()) {
    jj_scanpos = xsp;
    if (jj_3R_610()) return true;
    }
    return false;
  }

  private boolean jj_3R_551() {
    if (jj_3R_647()) return true;
    return false;
  }

  private boolean jj_3R_484() {
    if (jj_scan_token(AND)) return true;
    if (jj_3R_483()) return true;
    return false;
  }

  private boolean jj_3R_550() {
    if (jj_3R_646()) return true;
    return false;
  }

  private boolean jj_3R_549() {
    if (jj_3R_645()) return true;
    return false;
  }

  private boolean jj_3R_231() {
    if (jj_scan_token(FORCE)) return true;
    return false;
  }

  private boolean jj_3R_548() {
    if (jj_3R_644()) return true;
    return false;
  }

  private boolean jj_3R_314() {
    if (jj_scan_token(OR)) return true;
    if (jj_3R_313()) return true;
    return false;
  }

  private boolean jj_3R_230() {
    if (jj_scan_token(IF)) return true;
    if (jj_scan_token(EXISTS)) return true;
    return false;
  }

  private boolean jj_3R_547() {
    if (jj_3R_643()) return true;
    return false;
  }

  private boolean jj_3R_313() {
    if (jj_3R_483()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_484()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_34() {
    if (jj_3R_92()) return true;
    return false;
  }

  private boolean jj_3R_546() {
    if (jj_3R_642()) return true;
    return false;
  }

  private boolean jj_3R_90() {
    if (jj_scan_token(DROP)) return true;
    if (jj_scan_token(PROPERTY)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_230()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_231()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_36() {
    if (jj_3R_94()) return true;
    return false;
  }

  private boolean jj_3R_123() {
    if (jj_3R_313()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_314()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_35() {
    if (jj_3R_93()) return true;
    return false;
  }

  private boolean jj_3R_400() {
    if (jj_3R_123()) return true;
    return false;
  }

  private boolean jj_3_32() {
    if (jj_3R_90()) return true;
    return false;
  }

  private boolean jj_3R_545() {
    if (jj_3R_92()) return true;
    return false;
  }

  private boolean jj_3R_229() {
    if (jj_3R_111()) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_31() {
    if (jj_3R_89()) return true;
    return false;
  }

  private boolean jj_3R_472() {
    if (jj_scan_token(INDEXVALUESDESC_IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3_33() {
    if (jj_3R_91()) return true;
    return false;
  }

  private boolean jj_3_30() {
    if (jj_3R_88()) return true;
    return false;
  }

  private boolean jj_3R_544() {
    if (jj_3R_641()) return true;
    return false;
  }

  private boolean jj_3R_471() {
    if (jj_scan_token(INDEXVALUESASC_IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3R_470() {
    if (jj_scan_token(INDEXVALUES_IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3R_543() {
    if (jj_3R_90()) return true;
    return false;
  }

  private boolean jj_3_136() {
    if (jj_scan_token(CUSTOM)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_28() {
    if (jj_3R_86()) return true;
    return false;
  }

  private boolean jj_3R_542() {
    if (jj_3R_89()) return true;
    return false;
  }

  private boolean jj_3R_541() {
    if (jj_3R_88()) return true;
    return false;
  }

  private boolean jj_3_26() {
    if (jj_3R_84()) return true;
    return false;
  }

  private boolean jj_3_29() {
    if (jj_3R_87()) return true;
    return false;
  }

  private boolean jj_3R_291() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_470()) {
    jj_scanpos = xsp;
    if (jj_3R_471()) {
    jj_scanpos = xsp;
    if (jj_3R_472()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_25() {
    if (jj_3R_83()) return true;
    return false;
  }

  private boolean jj_3R_540() {
    if (jj_3R_86()) return true;
    return false;
  }

  private boolean jj_3_24() {
    if (jj_3R_82()) return true;
    return false;
  }

  private boolean jj_3R_290() {
    if (jj_scan_token(INDEX_COLON)) return true;
    if (jj_3R_469()) return true;
    return false;
  }

  private boolean jj_3_27() {
    if (jj_3R_85()) return true;
    return false;
  }

  private boolean jj_3R_539() {
    if (jj_3R_84()) return true;
    return false;
  }

  private boolean jj_3R_89() {
    if (jj_scan_token(ALTER)) return true;
    if (jj_scan_token(PROPERTY)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_136()) {
    jj_scanpos = xsp;
    if (jj_3R_229()) return true;
    }
    return false;
  }

  private boolean jj_3_23() {
    if (jj_3R_81()) return true;
    return false;
  }

  private boolean jj_3R_107() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_290()) {
    jj_scanpos = xsp;
    if (jj_3R_291()) return true;
    }
    return false;
  }

  private boolean jj_3R_538() {
    if (jj_3R_83()) return true;
    return false;
  }

  private boolean jj_3_22() {
    if (jj_3R_80()) return true;
    return false;
  }

  private boolean jj_3R_537() {
    if (jj_3R_82()) return true;
    return false;
  }

  private boolean jj_3R_868() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_21() {
    if (jj_3R_79()) return true;
    return false;
  }

  private boolean jj_3R_536() {
    if (jj_3R_640()) return true;
    return false;
  }

  private boolean jj_3R_688() {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3_20() {
    if (jj_3R_78()) return true;
    return false;
  }

  private boolean jj_3R_535() {
    if (jj_3R_81()) return true;
    return false;
  }

  private boolean jj_3R_687() {
    if (jj_scan_token(DOT)) return true;
    return false;
  }

  private boolean jj_3_19() {
    if (jj_3R_77()) return true;
    return false;
  }

  private boolean jj_3R_822() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_821()) return true;
    return false;
  }

  private boolean jj_3R_728() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3R_534() {
    if (jj_3R_80()) return true;
    return false;
  }

  private boolean jj_3R_726() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_18() {
    if (jj_3R_76()) return true;
    return false;
  }

  private boolean jj_3R_727() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_821()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_822()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_602() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_687()) {
    jj_scanpos = xsp;
    if (jj_3R_688()) return true;
    }
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_533() {
    if (jj_3R_79()) return true;
    return false;
  }

  private boolean jj_3R_821() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_868()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_17() {
    if (jj_3R_75()) return true;
    return false;
  }

  private boolean jj_3R_532() {
    if (jj_3R_78()) return true;
    return false;
  }

  private boolean jj_3R_601() {
    if (jj_scan_token(247)) return true;
    return false;
  }

  private boolean jj_3_16() {
    if (jj_3R_74()) return true;
    return false;
  }

  private boolean jj_3_135() {
    if (jj_3R_163()) return true;
    return false;
  }

  private boolean jj_3R_531() {
    if (jj_3R_77()) return true;
    return false;
  }

  private boolean jj_3R_530() {
    if (jj_3R_76()) return true;
    return false;
  }

  private boolean jj_3R_469() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_601()) jj_scanpos = xsp;
    if (jj_3R_111()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_602()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_529() {
    if (jj_3R_75()) return true;
    return false;
  }

  private boolean jj_3R_528() {
    if (jj_3R_74()) return true;
    return false;
  }

  private boolean jj_3R_768() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_15() {
    if (jj_3R_73()) return true;
    return false;
  }

  private boolean jj_3R_654() {
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_768()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_14() {
    if (jj_3R_72()) return true;
    return false;
  }

  private boolean jj_3R_559() {
    if (jj_scan_token(METADATA_IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3_13() {
    if (jj_3R_71()) return true;
    return false;
  }

  private boolean jj_3R_68() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(PROPERTY)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_135()) jj_scanpos = xsp;
    if (jj_3R_111()) return true;
    xsp = jj_scanpos;
    if (jj_3R_726()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_727()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_728()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_12() {
    if (jj_3R_70()) return true;
    return false;
  }

  private boolean jj_3_11() {
    if (jj_3R_69()) return true;
    return false;
  }

  private boolean jj_3R_432() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_10() {
    if (jj_3R_68()) return true;
    return false;
  }

  private boolean jj_3R_558() {
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_654()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3_9() {
    if (jj_3R_67()) return true;
    return false;
  }

  private boolean jj_3_93() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_163() {
    if (jj_scan_token(IF)) return true;
    if (jj_scan_token(NOT)) return true;
    if (jj_scan_token(EXISTS)) return true;
    return false;
  }

  private boolean jj_3R_228() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3R_294() {
    if (jj_scan_token(CLUSTER_NUMBER_IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3R_227() {
    if (jj_scan_token(IF)) return true;
    if (jj_scan_token(EXISTS)) return true;
    return false;
  }

  private boolean jj_3R_527() {
    if (jj_3R_492()) return true;
    return false;
  }

  private boolean jj_3R_293() {
    if (jj_scan_token(CLUSTER_IDENTIFIER)) return true;
    return false;
  }

  private boolean jj_3_8() {
    if (jj_3R_66()) return true;
    return false;
  }

  private boolean jj_3R_88() {
    if (jj_scan_token(DROP)) return true;
    if (jj_scan_token(CLASS)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_227()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_228()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_7() {
    if (jj_3R_65()) return true;
    return false;
  }

  private boolean jj_3R_431() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_560() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_430() {
    if (jj_scan_token(248)) return true;
    return false;
  }

  private boolean jj_3_6() {
    if (jj_3R_64()) return true;
    return false;
  }

  private boolean jj_3R_226() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3R_113() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_293()) {
    jj_scanpos = xsp;
    if (jj_3R_294()) return true;
    }
    return false;
  }

  private boolean jj_3R_526() {
    if (jj_3R_137()) return true;
    return false;
  }

  private boolean jj_3R_429() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_225() {
    if (jj_scan_token(ENCRYPTION)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_432()) {
    jj_scanpos = xsp;
    if (jj_scan_token(37)) return true;
    }
    return false;
  }

  private boolean jj_3_94() {
    if (jj_3R_107()) return true;
    return false;
  }

  private boolean jj_3R_224() {
    if (jj_scan_token(DESCRIPTION)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_391() {
    if (jj_3R_493()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_560()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_380() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_526()) {
    jj_scanpos = xsp;
    if (jj_3_6()) {
    jj_scanpos = xsp;
    if (jj_3_7()) {
    jj_scanpos = xsp;
    if (jj_3_8()) {
    jj_scanpos = xsp;
    if (jj_3R_527()) {
    jj_scanpos = xsp;
    if (jj_3_9()) {
    jj_scanpos = xsp;
    if (jj_3_10()) {
    jj_scanpos = xsp;
    if (jj_3_11()) {
    jj_scanpos = xsp;
    if (jj_3_12()) {
    jj_scanpos = xsp;
    if (jj_3_13()) {
    jj_scanpos = xsp;
    if (jj_3_14()) {
    jj_scanpos = xsp;
    if (jj_3_15()) {
    jj_scanpos = xsp;
    if (jj_3R_528()) {
    jj_scanpos = xsp;
    if (jj_3R_529()) {
    jj_scanpos = xsp;
    if (jj_3R_530()) {
    jj_scanpos = xsp;
    if (jj_3R_531()) {
    jj_scanpos = xsp;
    if (jj_3R_532()) {
    jj_scanpos = xsp;
    if (jj_3R_533()) {
    jj_scanpos = xsp;
    if (jj_3R_534()) {
    jj_scanpos = xsp;
    if (jj_3R_535()) {
    jj_scanpos = xsp;
    if (jj_3R_536()) {
    jj_scanpos = xsp;
    if (jj_3R_537()) {
    jj_scanpos = xsp;
    if (jj_3R_538()) {
    jj_scanpos = xsp;
    if (jj_3R_539()) {
    jj_scanpos = xsp;
    if (jj_3_27()) {
    jj_scanpos = xsp;
    if (jj_3R_540()) {
    jj_scanpos = xsp;
    if (jj_3_29()) {
    jj_scanpos = xsp;
    if (jj_3R_541()) {
    jj_scanpos = xsp;
    if (jj_3R_542()) {
    jj_scanpos = xsp;
    if (jj_3R_543()) {
    jj_scanpos = xsp;
    if (jj_3R_544()) {
    jj_scanpos = xsp;
    if (jj_3_33()) {
    jj_scanpos = xsp;
    if (jj_3R_545()) {
    jj_scanpos = xsp;
    if (jj_3_35()) {
    jj_scanpos = xsp;
    if (jj_3_36()) {
    jj_scanpos = xsp;
    if (jj_3R_546()) {
    jj_scanpos = xsp;
    if (jj_3R_547()) {
    jj_scanpos = xsp;
    if (jj_3R_548()) {
    jj_scanpos = xsp;
    if (jj_3R_549()) {
    jj_scanpos = xsp;
    if (jj_3R_550()) {
    jj_scanpos = xsp;
    if (jj_3R_551()) {
    jj_scanpos = xsp;
    if (jj_3R_552()) {
    jj_scanpos = xsp;
    if (jj_3R_553()) {
    jj_scanpos = xsp;
    if (jj_3R_554()) {
    jj_scanpos = xsp;
    if (jj_3R_555()) {
    jj_scanpos = xsp;
    if (jj_3_37()) {
    jj_scanpos = xsp;
    if (jj_3_38()) {
    jj_scanpos = xsp;
    if (jj_3_39()) {
    jj_scanpos = xsp;
    if (jj_3_40()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_390() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_389() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_137()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_572() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_571()) return true;
    return false;
  }

  private boolean jj_3R_167() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_380()) {
    jj_scanpos = xsp;
    if (jj_3R_381()) {
    jj_scanpos = xsp;
    if (jj_3R_382()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_388() {
    if (jj_3R_559()) return true;
    return false;
  }

  private boolean jj_3R_387() {
    if (jj_3R_107()) return true;
    return false;
  }

  private boolean jj_3R_223() {
    if (jj_scan_token(CLUSTERSELECTION)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_429()) {
    jj_scanpos = xsp;
    if (jj_3R_430()) {
    jj_scanpos = xsp;
    if (jj_3R_431()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_386() {
    if (jj_3R_558()) return true;
    return false;
  }

  private boolean jj_3R_385() {
    if (jj_3R_113()) return true;
    return false;
  }

  private boolean jj_3R_427() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_426() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_62() {
    if (jj_3R_167()) return true;
    if (jj_scan_token(SEMICOLON)) return true;
    return false;
  }

  private boolean jj_3R_222() {
    if (jj_scan_token(ABSTRACT)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_5() {
    if (jj_3R_63()) return true;
    return false;
  }

  private boolean jj_3_4() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_428() {
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_384() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_425() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_165() {
    if (jj_3R_167()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(177)) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_424() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_221() {
    if (jj_scan_token(CUSTOM)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_428()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_180() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_384()) {
    jj_scanpos = xsp;
    if (jj_3R_385()) {
    jj_scanpos = xsp;
    if (jj_3R_386()) {
    jj_scanpos = xsp;
    if (jj_3R_387()) {
    jj_scanpos = xsp;
    if (jj_3R_388()) {
    jj_scanpos = xsp;
    if (jj_3R_389()) {
    jj_scanpos = xsp;
    if (jj_3R_390()) {
    jj_scanpos = xsp;
    if (jj_3R_391()) return true;
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_578() {
    if (jj_3R_63()) return true;
    return false;
  }

  private boolean jj_3R_577() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_576() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_220() {
    if (jj_scan_token(REMOVECLUSTER)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_426()) {
    jj_scanpos = xsp;
    if (jj_3R_427()) return true;
    }
    return false;
  }

  private boolean jj_3R_423() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_577()) {
    jj_scanpos = xsp;
    if (jj_3R_578()) return true;
    }
    return false;
  }

  private boolean jj_3R_168() {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3_92() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_422() {
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3R_219() {
    if (jj_scan_token(ADDCLUSTER)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_424()) {
    jj_scanpos = xsp;
    if (jj_3R_425()) return true;
    }
    return false;
  }

  private boolean jj_3R_63() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_168()) jj_scanpos = xsp;
    if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_670() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_137()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_218() {
    if (jj_scan_token(STRICTMODE)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_421() {
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_576()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_669() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_166() {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_217() {
    if (jj_scan_token(OVERSIZE)) return true;
    if (jj_3R_423()) return true;
    return false;
  }

  private boolean jj_3R_420() {
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3R_61() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_166()) jj_scanpos = xsp;
    if (jj_scan_token(INTEGER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_571() {
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_669()) {
    jj_scanpos = xsp;
    if (jj_3R_670()) return true;
    }
    return false;
  }

  private boolean jj_3R_419() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_575() {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_574() {
    if (jj_scan_token(PLUS)) return true;
    return false;
  }

  private boolean jj_3R_418() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_574()) {
    jj_scanpos = xsp;
    if (jj_3R_575()) return true;
    }
    return false;
  }

  private boolean jj_3R_411() {
    if (jj_scan_token(LET)) return true;
    if (jj_3R_571()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_572()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_91() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_216() {
    if (jj_scan_token(SUPERCLASSES)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_421()) {
    jj_scanpos = xsp;
    if (jj_3R_422()) return true;
    }
    return false;
  }

  private boolean jj_3R_190() {
    if (jj_3R_180()) return true;
    return false;
  }

  private boolean jj_3R_417() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_498() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3_90() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_497() {
    if (jj_scan_token(CHARACTER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_496() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_215() {
    if (jj_scan_token(SUPERCLASS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_418()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_419()) {
    jj_scanpos = xsp;
    if (jj_3R_420()) return true;
    }
    return false;
  }

  private boolean jj_3_89() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_495() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_329() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_496()) {
    jj_scanpos = xsp;
    if (jj_3R_497()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_498()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_214() {
    if (jj_scan_token(SHORTNAME)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_417()) {
    jj_scanpos = xsp;
    if (jj_scan_token(37)) return true;
    }
    return false;
  }

  private boolean jj_3R_129() {
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_494() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_213() {
    if (jj_scan_token(NAME)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_328() {
    if (jj_3R_115()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_495()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_820() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_327() {
    if (jj_3R_493()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_494()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_326() {
    if (jj_3R_423()) return true;
    return false;
  }

  private boolean jj_3R_819() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_86() {
    if (jj_scan_token(ALTER)) return true;
    if (jj_scan_token(CLASS)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_213()) {
    jj_scanpos = xsp;
    if (jj_3R_214()) {
    jj_scanpos = xsp;
    if (jj_3R_215()) {
    jj_scanpos = xsp;
    if (jj_3R_216()) {
    jj_scanpos = xsp;
    if (jj_3R_217()) {
    jj_scanpos = xsp;
    if (jj_3R_218()) {
    jj_scanpos = xsp;
    if (jj_3R_219()) {
    jj_scanpos = xsp;
    if (jj_3R_220()) {
    jj_scanpos = xsp;
    if (jj_3R_221()) {
    jj_scanpos = xsp;
    if (jj_3R_222()) {
    jj_scanpos = xsp;
    if (jj_3R_223()) {
    jj_scanpos = xsp;
    if (jj_3R_224()) {
    jj_scanpos = xsp;
    if (jj_3R_225()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_226()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_725() {
    if (jj_scan_token(ABSTRACT)) return true;
    return false;
  }

  private boolean jj_3R_724() {
    if (jj_scan_token(CLUSTERS)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_723() {
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_61()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_820()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_136() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_326()) {
    jj_scanpos = xsp;
    if (jj_3R_327()) {
    jj_scanpos = xsp;
    if (jj_3R_328()) {
    jj_scanpos = xsp;
    if (jj_3R_329()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_324() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_325() {
    if (jj_3R_492()) return true;
    return false;
  }

  private boolean jj_3_88() {
    if (jj_3R_137()) return true;
    return false;
  }

  private boolean jj_3R_722() {
    if (jj_scan_token(EXTENDS)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_819()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_87() {
    if (jj_3R_136()) return true;
    return false;
  }

  private boolean jj_3R_721() {
    if (jj_scan_token(IF)) return true;
    if (jj_scan_token(NOT)) return true;
    if (jj_scan_token(EXISTS)) return true;
    return false;
  }

  private boolean jj_3_86() {
    if (jj_3R_135()) return true;
    return false;
  }

  private boolean jj_3R_590() {
    if (jj_3R_113()) return true;
    return false;
  }

  private boolean jj_3R_135() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_88()) {
    jj_scanpos = xsp;
    if (jj_3R_324()) {
    jj_scanpos = xsp;
    if (jj_3R_325()) return true;
    }
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_589() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_323() {
    if (jj_3R_136()) return true;
    return false;
  }

  private boolean jj_3R_322() {
    if (jj_3R_135()) return true;
    return false;
  }

  private boolean jj_3R_67() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(CLASS)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_721()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_722()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_723()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_724()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_725()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_134() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_322()) {
    jj_scanpos = xsp;
    if (jj_3R_323()) return true;
    }
    return false;
  }

  private boolean jj_3R_133() {
    if (jj_scan_token(REM)) return true;
    return false;
  }

  private boolean jj_3R_445() {
    if (jj_scan_token(COMMA)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_589()) {
    jj_scanpos = xsp;
    if (jj_3R_590()) return true;
    }
    return false;
  }

  private boolean jj_3_134() {
    if (jj_3R_107()) return true;
    return false;
  }

  private boolean jj_3R_132() {
    if (jj_scan_token(SLASH)) return true;
    return false;
  }

  private boolean jj_3R_444() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_131() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_573() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3_85() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_131()) {
    jj_scanpos = xsp;
    if (jj_3R_132()) {
    jj_scanpos = xsp;
    if (jj_3R_133()) return true;
    }
    }
    if (jj_3R_134()) return true;
    return false;
  }

  private boolean jj_3R_443() {
    if (jj_3R_107()) return true;
    return false;
  }

  private boolean jj_3R_128() {
    if (jj_scan_token(PLUS)) return true;
    return false;
  }

  private boolean jj_3R_247() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_443()) {
    jj_scanpos = xsp;
    if (jj_3R_444()) return true;
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_445()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_416() {
    if (jj_3R_114()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_573()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_130() {
    if (jj_3R_134()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_85()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_246() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_167()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_245() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3_84() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_128()) {
    jj_scanpos = xsp;
    if (jj_3R_129()) return true;
    }
    if (jj_3R_130()) return true;
    return false;
  }

  private boolean jj_3R_100() {
    if (jj_scan_token(FIND)) return true;
    if (jj_scan_token(REFERENCES)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_245()) {
    jj_scanpos = xsp;
    if (jj_3R_246()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_247()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_212() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_416()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_211() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_127() {
    if (jj_3R_130()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_84()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_83() {
    if (jj_3R_127()) return true;
    return false;
  }

  private boolean jj_3_82() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_302() {
    if (jj_scan_token(FALSE)) return true;
    return false;
  }

  private boolean jj_3R_84() {
    if (jj_scan_token(TRUNCATE)) return true;
    if (jj_scan_token(RECORD)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_211()) {
    jj_scanpos = xsp;
    if (jj_3R_212()) return true;
    }
    return false;
  }

  private boolean jj_3R_209() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_301() {
    if (jj_scan_token(TRUE)) return true;
    return false;
  }

  private boolean jj_3R_208() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_300() {
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3R_210() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3R_299() {
    if (jj_3R_127()) return true;
    return false;
  }

  private boolean jj_3_81() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_298() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3_79() {
    if (jj_3R_124()) return true;
    return false;
  }

  private boolean jj_3R_297() {
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3R_83() {
    if (jj_scan_token(TRUNCATE)) return true;
    if (jj_scan_token(CLUSTER)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_208()) {
    jj_scanpos = xsp;
    if (jj_3R_209()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_210()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_80() {
    if (jj_3R_125()) return true;
    return false;
  }

  private boolean jj_3_78() {
    if (jj_3R_123()) return true;
    return false;
  }

  private boolean jj_3R_116() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_297()) {
    jj_scanpos = xsp;
    if (jj_3R_298()) {
    jj_scanpos = xsp;
    if (jj_3R_299()) {
    jj_scanpos = xsp;
    if (jj_3R_300()) {
    jj_scanpos = xsp;
    if (jj_3R_301()) {
    jj_scanpos = xsp;
    if (jj_3R_302()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_77() {
    if (jj_3R_122()) return true;
    return false;
  }

  private boolean jj_3R_207() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3R_321() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_206() {
    if (jj_scan_token(POLYMORPHIC)) return true;
    return false;
  }

  private boolean jj_3R_320() {
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_121()) return true;
    return false;
  }

  private boolean jj_3R_744() {
    if (jj_scan_token(OFF)) return true;
    return false;
  }

  private boolean jj_3R_491() {
    if (jj_3R_124()) return true;
    return false;
  }

  private boolean jj_3R_82() {
    if (jj_scan_token(TRUNCATE)) return true;
    if (jj_scan_token(CLASS)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_206()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_207()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_743() {
    if (jj_scan_token(ON)) return true;
    return false;
  }

  private boolean jj_3R_319() {
    if (jj_3R_125()) return true;
    return false;
  }

  private boolean jj_3R_490() {
    if (jj_3R_123()) return true;
    return false;
  }

  private boolean jj_3R_489() {
    if (jj_3R_122()) return true;
    return false;
  }

  private boolean jj_3R_640() {
    if (jj_scan_token(PROFILE)) return true;
    if (jj_scan_token(STORAGE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_743()) {
    jj_scanpos = xsp;
    if (jj_3R_744()) return true;
    }
    return false;
  }

  private boolean jj_3R_318() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_489()) {
    jj_scanpos = xsp;
    if (jj_3R_490()) {
    jj_scanpos = xsp;
    if (jj_3R_491()) return true;
    }
    }
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_478() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_76() {
    if (jj_3R_121()) return true;
    return false;
  }

  private boolean jj_3_75() {
    if (jj_3R_120()) return true;
    return false;
  }

  private boolean jj_3R_126() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_318()) {
    jj_scanpos = xsp;
    if (jj_3R_319()) {
    jj_scanpos = xsp;
    if (jj_3R_320()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_321()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_525() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_379() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_619() {
    if (jj_3R_121()) return true;
    return false;
  }

  private boolean jj_3R_618() {
    if (jj_3R_120()) return true;
    return false;
  }

  private boolean jj_3R_378() {
    if (jj_scan_token(MINUS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_525()) jj_scanpos = xsp;
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3_74() {
    if (jj_3R_119()) return true;
    return false;
  }

  private boolean jj_3R_493() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_618()) {
    jj_scanpos = xsp;
    if (jj_3R_619()) return true;
    }
    return false;
  }

  private boolean jj_3_73() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_162() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_378()) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_379()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_310() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_111() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(235)) {
    jj_scanpos = xsp;
    if (jj_scan_token(222)) {
    jj_scanpos = xsp;
    if (jj_scan_token(28)) {
    jj_scanpos = xsp;
    if (jj_scan_token(30)) {
    jj_scanpos = xsp;
    if (jj_scan_token(29)) {
    jj_scanpos = xsp;
    if (jj_scan_token(33)) {
    jj_scanpos = xsp;
    if (jj_scan_token(31)) {
    jj_scanpos = xsp;
    if (jj_scan_token(32)) {
    jj_scanpos = xsp;
    if (jj_scan_token(39)) {
    jj_scanpos = xsp;
    if (jj_scan_token(232)) {
    jj_scanpos = xsp;
    if (jj_scan_token(45)) {
    jj_scanpos = xsp;
    if (jj_scan_token(40)) {
    jj_scanpos = xsp;
    if (jj_scan_token(26)) {
    jj_scanpos = xsp;
    if (jj_scan_token(27)) {
    jj_scanpos = xsp;
    if (jj_scan_token(55)) {
    jj_scanpos = xsp;
    if (jj_scan_token(22)) {
    jj_scanpos = xsp;
    if (jj_scan_token(66)) {
    jj_scanpos = xsp;
    if (jj_scan_token(72)) {
    jj_scanpos = xsp;
    if (jj_scan_token(74)) {
    jj_scanpos = xsp;
    if (jj_scan_token(71)) {
    jj_scanpos = xsp;
    if (jj_scan_token(67)) {
    jj_scanpos = xsp;
    if (jj_scan_token(68)) {
    jj_scanpos = xsp;
    if (jj_scan_token(76)) {
    jj_scanpos = xsp;
    if (jj_scan_token(77)) {
    jj_scanpos = xsp;
    if (jj_scan_token(78)) {
    jj_scanpos = xsp;
    if (jj_scan_token(79)) {
    jj_scanpos = xsp;
    if (jj_scan_token(80)) {
    jj_scanpos = xsp;
    if (jj_scan_token(81)) {
    jj_scanpos = xsp;
    if (jj_scan_token(83)) {
    jj_scanpos = xsp;
    if (jj_scan_token(84)) {
    jj_scanpos = xsp;
    if (jj_scan_token(85)) {
    jj_scanpos = xsp;
    if (jj_scan_token(86)) {
    jj_scanpos = xsp;
    if (jj_scan_token(87)) {
    jj_scanpos = xsp;
    if (jj_scan_token(88)) {
    jj_scanpos = xsp;
    if (jj_scan_token(89)) {
    jj_scanpos = xsp;
    if (jj_scan_token(90)) {
    jj_scanpos = xsp;
    if (jj_scan_token(73)) {
    jj_scanpos = xsp;
    if (jj_scan_token(75)) {
    jj_scanpos = xsp;
    if (jj_scan_token(91)) {
    jj_scanpos = xsp;
    if (jj_scan_token(92)) {
    jj_scanpos = xsp;
    if (jj_scan_token(93)) {
    jj_scanpos = xsp;
    if (jj_scan_token(94)) {
    jj_scanpos = xsp;
    if (jj_scan_token(95)) {
    jj_scanpos = xsp;
    if (jj_scan_token(96)) {
    jj_scanpos = xsp;
    if (jj_scan_token(97)) {
    jj_scanpos = xsp;
    if (jj_scan_token(98)) {
    jj_scanpos = xsp;
    if (jj_scan_token(99)) {
    jj_scanpos = xsp;
    if (jj_scan_token(100)) {
    jj_scanpos = xsp;
    if (jj_scan_token(101)) {
    jj_scanpos = xsp;
    if (jj_scan_token(102)) {
    jj_scanpos = xsp;
    if (jj_scan_token(104)) {
    jj_scanpos = xsp;
    if (jj_scan_token(103)) {
    jj_scanpos = xsp;
    if (jj_scan_token(105)) {
    jj_scanpos = xsp;
    if (jj_scan_token(106)) {
    jj_scanpos = xsp;
    if (jj_scan_token(107)) {
    jj_scanpos = xsp;
    if (jj_scan_token(108)) {
    jj_scanpos = xsp;
    if (jj_scan_token(109)) {
    jj_scanpos = xsp;
    if (jj_scan_token(110)) {
    jj_scanpos = xsp;
    if (jj_scan_token(111)) {
    jj_scanpos = xsp;
    if (jj_scan_token(112)) {
    jj_scanpos = xsp;
    if (jj_scan_token(113)) {
    jj_scanpos = xsp;
    if (jj_scan_token(114)) {
    jj_scanpos = xsp;
    if (jj_scan_token(115)) {
    jj_scanpos = xsp;
    if (jj_scan_token(116)) {
    jj_scanpos = xsp;
    if (jj_scan_token(117)) {
    jj_scanpos = xsp;
    if (jj_scan_token(118)) {
    jj_scanpos = xsp;
    if (jj_scan_token(119)) {
    jj_scanpos = xsp;
    if (jj_scan_token(120)) {
    jj_scanpos = xsp;
    if (jj_scan_token(121)) {
    jj_scanpos = xsp;
    if (jj_scan_token(122)) {
    jj_scanpos = xsp;
    if (jj_scan_token(123)) {
    jj_scanpos = xsp;
    if (jj_scan_token(124)) {
    jj_scanpos = xsp;
    if (jj_scan_token(125)) {
    jj_scanpos = xsp;
    if (jj_scan_token(126)) {
    jj_scanpos = xsp;
    if (jj_scan_token(127)) {
    jj_scanpos = xsp;
    if (jj_scan_token(128)) {
    jj_scanpos = xsp;
    if (jj_scan_token(129)) {
    jj_scanpos = xsp;
    if (jj_scan_token(130)) {
    jj_scanpos = xsp;
    if (jj_scan_token(131)) {
    jj_scanpos = xsp;
    if (jj_scan_token(132)) {
    jj_scanpos = xsp;
    if (jj_scan_token(133)) {
    jj_scanpos = xsp;
    if (jj_scan_token(134)) {
    jj_scanpos = xsp;
    if (jj_scan_token(59)) {
    jj_scanpos = xsp;
    if (jj_scan_token(135)) {
    jj_scanpos = xsp;
    if (jj_scan_token(136)) {
    jj_scanpos = xsp;
    if (jj_scan_token(137)) {
    jj_scanpos = xsp;
    if (jj_scan_token(138)) {
    jj_scanpos = xsp;
    if (jj_scan_token(139)) {
    jj_scanpos = xsp;
    if (jj_scan_token(140)) {
    jj_scanpos = xsp;
    if (jj_scan_token(141)) {
    jj_scanpos = xsp;
    if (jj_scan_token(142)) {
    jj_scanpos = xsp;
    if (jj_scan_token(143)) {
    jj_scanpos = xsp;
    if (jj_scan_token(144)) {
    jj_scanpos = xsp;
    if (jj_scan_token(145)) {
    jj_scanpos = xsp;
    if (jj_scan_token(236)) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_309() {
    if (jj_3R_119()) return true;
    return false;
  }

  private boolean jj_3_3() {
    if (jj_3R_62()) return true;
    return false;
  }

  private boolean jj_3_72() {
    if (jj_3R_118()) return true;
    return false;
  }

  private boolean jj_3R_308() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3_71() {
    if (jj_3R_117()) return true;
    return false;
  }

  private boolean jj_3R_121() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_308()) {
    jj_scanpos = xsp;
    if (jj_3R_309()) {
    jj_scanpos = xsp;
    if (jj_3R_310()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_524() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_307() {
    if (jj_3R_118()) return true;
    return false;
  }

  private boolean jj_3R_377() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_306() {
    if (jj_scan_token(THIS)) return true;
    return false;
  }

  private boolean jj_3R_482() {
    if (jj_scan_token(RANGE)) return true;
    return false;
  }

  private boolean jj_3R_305() {
    if (jj_3R_117()) return true;
    return false;
  }

  private boolean jj_3R_376() {
    if (jj_scan_token(MINUS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_524()) jj_scanpos = xsp;
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_488() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_120() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_305()) {
    jj_scanpos = xsp;
    if (jj_3R_306()) {
    jj_scanpos = xsp;
    if (jj_3R_307()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_317() {
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_488()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_161() {
    if (jj_scan_token(LT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_376()) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_377()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_312() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(200)) {
    jj_scanpos = xsp;
    if (jj_3R_482()) return true;
    }
    return false;
  }

  private boolean jj_3_1() {
    if (jj_scan_token(246)) return true;
    if (jj_3R_61()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3_2() {
    if (jj_3R_61()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_125() {
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_317()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_114() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_1()) {
    jj_scanpos = xsp;
    if (jj_3_2()) return true;
    }
    return false;
  }

  private boolean jj_3R_303() {
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_478()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_523() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_375() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_374() {
    if (jj_scan_token(MINUS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_523()) jj_scanpos = xsp;
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_117() {
    if (jj_3R_111()) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_303()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_160() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_374()) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) return true;
    }
    if (jj_scan_token(GT)) return true;
    xsp = jj_scanpos;
    if (jj_3R_375()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_119() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_686() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_522() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_372() {
    if (jj_scan_token(MINUS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_522()) jj_scanpos = xsp;
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_159() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_372()) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) return true;
    }
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_122() {
    if (jj_3R_311()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_312()) jj_scanpos = xsp;
    if (jj_3R_311()) return true;
    return false;
  }

  private boolean jj_3R_462() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_461()) return true;
    return false;
  }

  private boolean jj_3R_316() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_315()) return true;
    return false;
  }

  private boolean jj_3R_893() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_124() {
    if (jj_3R_315()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_316()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_70() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3_69() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_891() {
    if (jj_scan_token(MINUS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_893()) jj_scanpos = xsp;
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_481() {
    if (jj_scan_token(INTEGER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_887() {
    if (jj_scan_token(LT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_891()) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) return true;
    }
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3_68() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_480() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3_67() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3_66() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_311() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_480()) {
    jj_scanpos = xsp;
    if (jj_3R_481()) return true;
    }
    return false;
  }

  private boolean jj_3R_487() {
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_486() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_520() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_485() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_315() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_485()) {
    jj_scanpos = xsp;
    if (jj_3R_486()) {
    jj_scanpos = xsp;
    if (jj_3R_487()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_370() {
    if (jj_scan_token(MINUS)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_520()) jj_scanpos = xsp;
    if (jj_scan_token(MINUS)) return true;
    return false;
  }

  private boolean jj_3R_598() {
    if (jj_scan_token(AS)) return true;
    if (jj_3R_686()) return true;
    return false;
  }

  private boolean jj_3R_158() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_370()) {
    jj_scanpos = xsp;
    if (jj_scan_token(198)) return true;
    }
    if (jj_scan_token(GT)) return true;
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_814() {
    if (jj_scan_token(FALSE)) return true;
    return false;
  }

  private boolean jj_3R_813() {
    if (jj_scan_token(TRUE)) return true;
    return false;
  }

  private boolean jj_3R_461() {
    if (jj_3R_116()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_598()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_281() {
    if (jj_3R_461()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_462()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_711() {
    if (jj_scan_token(OPTIONAL)) return true;
    if (jj_scan_token(COLON)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_813()) {
    jj_scanpos = xsp;
    if (jj_3R_814()) return true;
    }
    return false;
  }

  private boolean jj_3R_710() {
    if (jj_scan_token(MAXDEPTH)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_608() {
    if (jj_scan_token(FROM)) return true;
    return false;
  }

  private boolean jj_3R_606() {
    if (jj_scan_token(SKIP2)) return true;
    return false;
  }

  private boolean jj_3R_607() {
    if (jj_scan_token(LIMIT)) return true;
    return false;
  }

  private boolean jj_3R_605() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_709() {
    if (jj_scan_token(WHILE)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_400()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_708() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_400()) return true;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_707() {
    if (jj_scan_token(AS)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_477() {
    if (jj_scan_token(COLON)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_605()) {
    jj_scanpos = xsp;
    if (jj_3R_606()) {
    jj_scanpos = xsp;
    if (jj_3R_607()) {
    jj_scanpos = xsp;
    if (jj_3R_608()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_394() {
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_706() {
    if (jj_scan_token(CLASSES)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_705() {
    if (jj_scan_token(RID)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_476() {
    if (jj_scan_token(HOOK)) return true;
    return false;
  }

  private boolean jj_3R_704() {
    if (jj_scan_token(CLASS)) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_639() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_638()) return true;
    return false;
  }

  private boolean jj_3R_296() {
    if (jj_3R_477()) return true;
    return false;
  }

  private boolean jj_3R_295() {
    if (jj_3R_476()) return true;
    return false;
  }

  private boolean jj_3R_638() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_704()) {
    jj_scanpos = xsp;
    if (jj_3R_705()) {
    jj_scanpos = xsp;
    if (jj_3R_706()) {
    jj_scanpos = xsp;
    if (jj_3R_707()) {
    jj_scanpos = xsp;
    if (jj_3R_708()) {
    jj_scanpos = xsp;
    if (jj_3R_709()) {
    jj_scanpos = xsp;
    if (jj_3R_710()) {
    jj_scanpos = xsp;
    if (jj_3R_711()) return true;
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_521() {
    if (jj_3R_638()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_639()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_115() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_295()) {
    jj_scanpos = xsp;
    if (jj_3R_296()) return true;
    }
    return false;
  }

  private boolean jj_3_133() {
    if (jj_3R_162()) return true;
    return false;
  }

  private boolean jj_3_132() {
    if (jj_3R_161()) return true;
    return false;
  }

  private boolean jj_3R_189() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_188() {
    if (jj_3R_396()) return true;
    return false;
  }

  private boolean jj_3R_187() {
    if (jj_3R_395()) return true;
    return false;
  }

  private boolean jj_3_131() {
    if (jj_3R_160()) return true;
    return false;
  }

  private boolean jj_3R_371() {
    if (jj_scan_token(LBRACE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_521()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACE)) return true;
    return false;
  }

  private boolean jj_3R_888() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_186() {
    if (jj_3R_108()) return true;
    return false;
  }

  private boolean jj_3R_519() {
    if (jj_3R_162()) return true;
    return false;
  }

  private boolean jj_3R_185() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_394()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_518() {
    if (jj_3R_161()) return true;
    return false;
  }

  private boolean jj_3R_517() {
    if (jj_3R_160()) return true;
    return false;
  }

  private boolean jj_3R_368() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_517()) {
    jj_scanpos = xsp;
    if (jj_3R_518()) {
    jj_scanpos = xsp;
    if (jj_3R_519()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_79() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(EDGE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_185()) jj_scanpos = xsp;
    if (jj_scan_token(FROM)) return true;
    if (jj_3R_116()) return true;
    if (jj_scan_token(TO)) return true;
    if (jj_3R_116()) return true;
    xsp = jj_scanpos;
    if (jj_3R_186()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_187()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_188()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_189()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_65() {
    if (jj_3R_108()) return true;
    return false;
  }

  private boolean jj_3_64() {
    if (jj_3R_113()) return true;
    return false;
  }

  private boolean jj_3_130() {
    if (jj_3R_155()) return true;
    return false;
  }

  private boolean jj_3R_156() {
    if (jj_scan_token(DOT)) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    if (jj_3R_368()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_368()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    xsp = jj_scanpos;
    if (jj_3R_888()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_383() {
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_178() {
    if (jj_3R_108()) return true;
    return false;
  }

  private boolean jj_3_63() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_177() {
    if (jj_scan_token(RETURN)) return true;
    if (jj_3R_281()) return true;
    return false;
  }

  private boolean jj_3R_890() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_176() {
    if (jj_3R_113()) return true;
    return false;
  }

  private boolean jj_3R_74() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(VERTEX)) return true;
    if (jj_3R_108()) return true;
    return false;
  }

  private boolean jj_3R_889() {
    if (jj_3R_155()) return true;
    return false;
  }

  private boolean jj_3R_175() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_383()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_157() {
    if (jj_scan_token(DOT)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_369()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_889()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    xsp = jj_scanpos;
    if (jj_3R_890()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_892() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3R_75() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(VERTEX)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_175()) {
    jj_scanpos = xsp;
    if (jj_3R_176()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_177()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_178()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_129() {
    if (jj_3R_159()) return true;
    return false;
  }

  private boolean jj_3R_369() {
    if (jj_3R_117()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_892()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_179() {
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_373() {
    if (jj_3R_371()) return true;
    return false;
  }

  private boolean jj_3_128() {
    if (jj_3R_158()) return true;
    return false;
  }

  private boolean jj_3R_76() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(VERTEX)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_179()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_880() {
    if (jj_3R_159()) return true;
    return false;
  }

  private boolean jj_3R_155() {
    if (jj_3R_125()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_373()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_879() {
    if (jj_3R_887()) return true;
    return false;
  }

  private boolean jj_3R_878() {
    if (jj_3R_158()) return true;
    return false;
  }

  private boolean jj_3R_77() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(VERTEX)) return true;
    return false;
  }

  private boolean jj_3_127() {
    if (jj_3R_157()) return true;
    return false;
  }

  private boolean jj_3R_292() {
    if (jj_scan_token(CONTENT)) return true;
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3_126() {
    if (jj_3R_156()) return true;
    return false;
  }

  private boolean jj_3R_475() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3_125() {
    if (jj_3R_155()) return true;
    return false;
  }

  private boolean jj_3R_866() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_125()) {
    jj_scanpos = xsp;
    if (jj_3_126()) {
    jj_scanpos = xsp;
    if (jj_3_127()) {
    jj_scanpos = xsp;
    if (jj_3R_878()) {
    jj_scanpos = xsp;
    if (jj_3R_879()) {
    jj_scanpos = xsp;
    if (jj_3R_880()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_603() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_862() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_802() {
    if (jj_scan_token(CHARACTER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_621() {
    if (jj_3R_371()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_866()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_62() {
    if (jj_scan_token(SET)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_475()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_801() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_800() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_799() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_474() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_603()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_693() {
    if (jj_scan_token(COMMA)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_799()) {
    jj_scanpos = xsp;
    if (jj_3R_800()) {
    jj_scanpos = xsp;
    if (jj_3R_801()) {
    jj_scanpos = xsp;
    if (jj_3R_802()) return true;
    }
    }
    }
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_473() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_692() {
    if (jj_scan_token(CHARACTER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_797() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_691() {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_690() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_689() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_112() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_604() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_689()) {
    jj_scanpos = xsp;
    if (jj_3R_690()) {
    jj_scanpos = xsp;
    if (jj_3R_691()) {
    jj_scanpos = xsp;
    if (jj_3R_692()) return true;
    }
    }
    }
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_116()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_693()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_124() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_164() {
    if (jj_scan_token(LBRACE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_604()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACE)) return true;
    return false;
  }

  private boolean jj_3_61() {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_112()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    if (jj_scan_token(VALUES)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_116()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_473()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RPAREN)) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_474()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_877() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3_59() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_698() {
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_108() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_61()) {
    jj_scanpos = xsp;
    if (jj_3_62()) {
    jj_scanpos = xsp;
    if (jj_3R_292()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_701() {
    if (jj_3R_493()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_877()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_110() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_109() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_798() {
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_862()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_617() {
    if (jj_scan_token(UNSAFE)) return true;
    return false;
  }

  private boolean jj_3_58() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_861() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_812() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3_60() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_109()) {
    jj_scanpos = xsp;
    if (jj_3R_110()) return true;
    }
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_860() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_811() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_700() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_811()) {
    jj_scanpos = xsp;
    if (jj_3R_812()) return true;
    }
    return false;
  }

  private boolean jj_3R_796() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_860()) {
    jj_scanpos = xsp;
    if (jj_3R_861()) return true;
    }
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3_57() {
    if (jj_3R_108()) return true;
    return false;
  }

  private boolean jj_3_56() {
    if (jj_3R_107()) return true;
    return false;
  }

  private boolean jj_3R_699() {
    if (jj_scan_token(FROM)) return true;
    return false;
  }

  private boolean jj_3R_684() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_796()) jj_scanpos = xsp;
    if (jj_3R_111()) return true;
    xsp = jj_scanpos;
    if (jj_3R_797()) jj_scanpos = xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_798()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_616() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_699()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_700()) {
    jj_scanpos = xsp;
    if (jj_3_60()) return true;
    }
    return false;
  }

  private boolean jj_3R_683() {
    if (jj_scan_token(STAR)) return true;
    return false;
  }

  private boolean jj_3R_613() {
    if (jj_3R_113()) return true;
    return false;
  }

  private boolean jj_3R_615() {
    if (jj_scan_token(RETURN)) return true;
    if (jj_3R_281()) return true;
    return false;
  }

  private boolean jj_3R_612() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_698()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_614() {
    if (jj_3R_108()) return true;
    return false;
  }

  private boolean jj_3R_611() {
    if (jj_3R_107()) return true;
    return false;
  }

  private boolean jj_3R_587() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_683()) {
    jj_scanpos = xsp;
    if (jj_3R_684()) return true;
    }
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_588() {
    if (jj_3R_587()) return true;
    return false;
  }

  private boolean jj_3R_492() {
    if (jj_scan_token(INSERT)) return true;
    if (jj_scan_token(INTO)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_611()) {
    jj_scanpos = xsp;
    if (jj_3R_612()) {
    jj_scanpos = xsp;
    if (jj_3R_613()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_614()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_615()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_616()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_617()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_438() {
    if (jj_scan_token(FETCHPLAN)) return true;
    if (jj_3R_587()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_588()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_479() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_304() {
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_479()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_777() {
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_776() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_657() {
    if (jj_3R_111()) return true;
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_118() {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_304()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_775() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_665() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_776()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_777()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_395() {
    if (jj_scan_token(RETRY)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_663() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_775()) jj_scanpos = xsp;
    if (jj_scan_token(EQ)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_774() {
    if (jj_scan_token(SLASHASSIGN)) return true;
    return false;
  }

  private boolean jj_3R_668() {
    if (jj_scan_token(EXCEPTION)) return true;
    return false;
  }

  private boolean jj_3R_773() {
    if (jj_scan_token(STARASSIGN)) return true;
    return false;
  }

  private boolean jj_3R_771() {
    if (jj_scan_token(PLUSASSIGN)) return true;
    return false;
  }

  private boolean jj_3R_667() {
    if (jj_scan_token(RETURN)) return true;
    return false;
  }

  private boolean jj_3R_570() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_667()) {
    jj_scanpos = xsp;
    if (jj_3R_668()) return true;
    }
    return false;
  }

  private boolean jj_3R_396() {
    if (jj_scan_token(WAIT)) return true;
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_772() {
    if (jj_scan_token(MINUSASSIGN)) return true;
    return false;
  }

  private boolean jj_3R_770() {
    if (jj_scan_token(EQ)) return true;
    return false;
  }

  private boolean jj_3R_409() {
    if (jj_scan_token(COUNT)) return true;
    return false;
  }

  private boolean jj_3R_769() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_666() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_665()) return true;
    return false;
  }

  private boolean jj_3R_406() {
    if (jj_scan_token(TIMEOUT)) return true;
    if (jj_3R_61()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_570()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_655() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_769()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_770()) {
    jj_scanpos = xsp;
    if (jj_3R_771()) {
    jj_scanpos = xsp;
    if (jj_3R_772()) {
    jj_scanpos = xsp;
    if (jj_3R_773()) {
    jj_scanpos = xsp;
    if (jj_3R_774()) return true;
    }
    }
    }
    }
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_567() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_566() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_664() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_663()) return true;
    return false;
  }

  private boolean jj_3R_565() {
    if (jj_scan_token(REMOVE)) return true;
    if (jj_3R_665()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_666()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_662() {
    if (jj_scan_token(ADD)) return true;
    return false;
  }

  private boolean jj_3R_795() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_661() {
    if (jj_scan_token(INCREMENT)) return true;
    return false;
  }

  private boolean jj_3R_794() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_393() {
    if (jj_scan_token(BATCH)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_566()) {
    jj_scanpos = xsp;
    if (jj_3R_567()) return true;
    }
    return false;
  }

  private boolean jj_3R_660() {
    if (jj_scan_token(CONTENT)) return true;
    return false;
  }

  private boolean jj_3R_793() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_659() {
    if (jj_scan_token(MERGE)) return true;
    return false;
  }

  private boolean jj_3R_564() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_661()) {
    jj_scanpos = xsp;
    if (jj_3R_662()) return true;
    }
    if (jj_3R_663()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_664()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_792() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_682() {
    if (jj_scan_token(OFFSET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_794()) {
    jj_scanpos = xsp;
    if (jj_3R_795()) return true;
    }
    return false;
  }

  private boolean jj_3R_658() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_657()) return true;
    return false;
  }

  private boolean jj_3R_859() {
    if (jj_scan_token(ASC)) return true;
    return false;
  }

  private boolean jj_3R_408() {
    if (jj_scan_token(AFTER)) return true;
    return false;
  }

  private boolean jj_3R_563() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_659()) {
    jj_scanpos = xsp;
    if (jj_3R_660()) return true;
    }
    if (jj_3R_164()) return true;
    return false;
  }

  private boolean jj_3R_681() {
    if (jj_scan_token(SKIP2)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_792()) {
    jj_scanpos = xsp;
    if (jj_3R_793()) return true;
    }
    return false;
  }

  private boolean jj_3R_656() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_655()) return true;
    return false;
  }

  private boolean jj_3R_853() {
    if (jj_scan_token(258)) return true;
    return false;
  }

  private boolean jj_3R_584() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_681()) {
    jj_scanpos = xsp;
    if (jj_3R_682()) return true;
    }
    return false;
  }

  private boolean jj_3R_562() {
    if (jj_scan_token(PUT)) return true;
    if (jj_3R_657()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_658()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_569() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_852() {
    if (jj_scan_token(257)) return true;
    return false;
  }

  private boolean jj_3R_767() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_852()) {
    jj_scanpos = xsp;
    if (jj_3R_853()) return true;
    }
    return false;
  }

  private boolean jj_3R_568() {
    if (jj_3R_61()) return true;
    return false;
  }

  private boolean jj_3R_561() {
    if (jj_scan_token(SET)) return true;
    if (jj_3R_655()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_656()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_856() {
    if (jj_scan_token(ASC)) return true;
    return false;
  }

  private boolean jj_3R_392() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_561()) {
    jj_scanpos = xsp;
    if (jj_3R_562()) {
    jj_scanpos = xsp;
    if (jj_3R_563()) {
    jj_scanpos = xsp;
    if (jj_3R_564()) {
    jj_scanpos = xsp;
    if (jj_3R_565()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_405() {
    if (jj_scan_token(LIMIT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_568()) {
    jj_scanpos = xsp;
    if (jj_3R_569()) return true;
    }
    return false;
  }

  private boolean jj_3R_98() {
    if (jj_scan_token(HA)) return true;
    if (jj_scan_token(SYNC)) return true;
    if (jj_scan_token(CLUSTER)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_767()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_583() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_766() {
    if (jj_scan_token(256)) return true;
    return false;
  }

  private boolean jj_3R_765() {
    if (jj_scan_token(255)) return true;
    return false;
  }

  private boolean jj_3R_415() {
    if (jj_scan_token(DEFAULT_)) return true;
    return false;
  }

  private boolean jj_3R_414() {
    if (jj_scan_token(SHARED)) return true;
    return false;
  }

  private boolean jj_3R_205() {
    if (jj_3R_406()) return true;
    return false;
  }

  private boolean jj_3R_398() {
    if (jj_scan_token(AFTER)) return true;
    return false;
  }

  private boolean jj_3R_204() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_413() {
    if (jj_scan_token(NONE)) return true;
    return false;
  }

  private boolean jj_3R_412() {
    if (jj_scan_token(RECORD)) return true;
    return false;
  }

  private boolean jj_3R_97() {
    if (jj_scan_token(HA)) return true;
    if (jj_scan_token(SYNC)) return true;
    if (jj_scan_token(DATABASE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_765()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_766()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_579() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_435() {
    if (jj_scan_token(UNWIND)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_583()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_410() {
    if (jj_3R_281()) return true;
    return false;
  }

  private boolean jj_3R_857() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_203() {
    if (jj_scan_token(LOCK)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_412()) {
    jj_scanpos = xsp;
    if (jj_3R_413()) {
    jj_scanpos = xsp;
    if (jj_3R_414()) {
    jj_scanpos = xsp;
    if (jj_3R_415()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_790() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_202() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_201() {
    if (jj_3R_411()) return true;
    return false;
  }

  private boolean jj_3R_789() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_407() {
    if (jj_scan_token(BEFORE)) return true;
    return false;
  }

  private boolean jj_3R_858() {
    if (jj_scan_token(DESC)) return true;
    return false;
  }

  private boolean jj_3R_791() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_858()) {
    jj_scanpos = xsp;
    if (jj_3R_859()) return true;
    }
    return false;
  }

  private boolean jj_3R_96() {
    if (jj_scan_token(HA)) return true;
    if (jj_scan_token(REMOVE)) return true;
    if (jj_scan_token(SERVER)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_851() {
    if (jj_scan_token(254)) return true;
    return false;
  }

  private boolean jj_3R_783() {
    if (jj_scan_token(ASC)) return true;
    return false;
  }

  private boolean jj_3R_200() {
    if (jj_scan_token(RETURN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_407()) {
    jj_scanpos = xsp;
    if (jj_3R_408()) {
    jj_scanpos = xsp;
    if (jj_3R_409()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_410()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_788() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_857()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_199() {
    if (jj_scan_token(UPSERT)) return true;
    return false;
  }

  private boolean jj_3R_433() {
    if (jj_scan_token(GROUP)) return true;
    if (jj_scan_token(BY)) return true;
    if (jj_3R_116()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_579()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_198() {
    if (jj_3R_392()) return true;
    return false;
  }

  private boolean jj_3R_850() {
    if (jj_scan_token(253)) return true;
    return false;
  }

  private boolean jj_3R_849() {
    if (jj_scan_token(252)) return true;
    return false;
  }

  private boolean jj_3R_848() {
    if (jj_scan_token(251)) return true;
    return false;
  }

  private boolean jj_3R_847() {
    if (jj_scan_token(250)) return true;
    return false;
  }

  private boolean jj_3R_846() {
    if (jj_scan_token(249)) return true;
    return false;
  }

  private boolean jj_3R_764() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_846()) {
    jj_scanpos = xsp;
    if (jj_3R_847()) {
    jj_scanpos = xsp;
    if (jj_3R_848()) {
    jj_scanpos = xsp;
    if (jj_3R_849()) {
    jj_scanpos = xsp;
    if (jj_3R_850()) {
    jj_scanpos = xsp;
    if (jj_3R_851()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_81() {
    if (jj_scan_token(UPDATE)) return true;
    if (jj_3R_190()) return true;
    Token xsp;
    if (jj_3R_198()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_198()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_199()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_200()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_201()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_202()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_203()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_204()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_205()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_854() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_786() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_197() {
    if (jj_3R_406()) return true;
    return false;
  }

  private boolean jj_3R_785() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_196() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_855() {
    if (jj_scan_token(DESC)) return true;
    return false;
  }

  private boolean jj_3R_787() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_855()) {
    jj_scanpos = xsp;
    if (jj_3R_856()) return true;
    }
    return false;
  }

  private boolean jj_3R_404() {
    if (jj_scan_token(DEFAULT_)) return true;
    return false;
  }

  private boolean jj_3R_399() {
    if (jj_3R_281()) return true;
    return false;
  }

  private boolean jj_3R_780() {
    if (jj_scan_token(ASC)) return true;
    return false;
  }

  private boolean jj_3R_403() {
    if (jj_scan_token(SHARED)) return true;
    return false;
  }

  private boolean jj_3R_680() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_788()) {
    jj_scanpos = xsp;
    if (jj_3R_789()) {
    jj_scanpos = xsp;
    if (jj_3R_790()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_791()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_784() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_854()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_402() {
    if (jj_scan_token(NONE)) return true;
    return false;
  }

  private boolean jj_3R_401() {
    if (jj_scan_token(RECORD)) return true;
    return false;
  }

  private boolean jj_3R_95() {
    if (jj_scan_token(HA)) return true;
    if (jj_scan_token(STATUS)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_764()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_397() {
    if (jj_scan_token(BEFORE)) return true;
    return false;
  }

  private boolean jj_3R_195() {
    if (jj_scan_token(LOCK)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_401()) {
    jj_scanpos = xsp;
    if (jj_3R_402()) {
    jj_scanpos = xsp;
    if (jj_3R_403()) {
    jj_scanpos = xsp;
    if (jj_3R_404()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_194() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_193() {
    if (jj_scan_token(RETURN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_397()) {
    jj_scanpos = xsp;
    if (jj_3R_398()) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_399()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_679() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_784()) {
    jj_scanpos = xsp;
    if (jj_3R_785()) {
    jj_scanpos = xsp;
    if (jj_3R_786()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_787()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_192() {
    if (jj_scan_token(UPSERT)) return true;
    return false;
  }

  private boolean jj_3R_191() {
    if (jj_3R_392()) return true;
    return false;
  }

  private boolean jj_3R_87() {
    if (jj_scan_token(DROP)) return true;
    if (jj_scan_token(SEQUENCE)) return true;
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_781() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3R_747() {
    if (jj_scan_token(CACHE)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_677() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_582() {
    if (jj_scan_token(COMMA)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_679()) {
    jj_scanpos = xsp;
    if (jj_3R_680()) return true;
    }
    return false;
  }

  private boolean jj_3R_746() {
    if (jj_scan_token(INCREMENT)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_745() {
    if (jj_scan_token(START)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_676() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_782() {
    if (jj_scan_token(DESC)) return true;
    return false;
  }

  private boolean jj_3R_678() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_782()) {
    jj_scanpos = xsp;
    if (jj_3R_783()) return true;
    }
    return false;
  }

  private boolean jj_3R_675() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_781()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_80() {
    if (jj_scan_token(UPDATE)) return true;
    if (jj_scan_token(EDGE)) return true;
    if (jj_3R_190()) return true;
    Token xsp;
    if (jj_3R_191()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_191()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3R_192()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_193()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_194()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_195()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_196()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_197()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_280() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_279() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_278() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_85() {
    if (jj_scan_token(ALTER)) return true;
    if (jj_scan_token(SEQUENCE)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_745()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_746()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_747()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_277() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_742() {
    if (jj_scan_token(CACHE)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_741() {
    if (jj_scan_token(INCREMENT)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_740() {
    if (jj_scan_token(START)) return true;
    if (jj_3R_116()) return true;
    return false;
  }

  private boolean jj_3R_778() {
    if (jj_3R_126()) return true;
    return false;
  }

  private boolean jj_3_55() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_673() {
    if (jj_scan_token(RECORD_ATTRIBUTE)) return true;
    return false;
  }

  private boolean jj_3R_105() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_scan_token(EDGE)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_277()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_278()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_279()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_280()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3_54() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_672() {
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_779() {
    if (jj_scan_token(DESC)) return true;
    return false;
  }

  private boolean jj_3R_674() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_779()) {
    jj_scanpos = xsp;
    if (jj_3R_780()) return true;
    }
    return false;
  }

  private boolean jj_3R_581() {
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_675()) {
    jj_scanpos = xsp;
    if (jj_3R_676()) {
    jj_scanpos = xsp;
    if (jj_3R_677()) return true;
    }
    }
    xsp = jj_scanpos;
    if (jj_3R_678()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3R_268() {
    if (jj_3R_393()) return true;
    return false;
  }

  private boolean jj_3R_671() {
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_778()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_267() {
    if (jj_3R_405()) return true;
    return false;
  }

  private boolean jj_3R_266() {
    if (jj_scan_token(WHERE)) return true;
    if (jj_3R_400()) return true;
    return false;
  }

  private boolean jj_3R_457() {
    if (jj_3R_106()) return true;
    return false;
  }

  private boolean jj_3R_265() {
    if (jj_3R_111()) return true;
    return false;
  }

  private boolean jj_3R_456() {
    if (jj_3R_99()) return true;
    return false;
  }

  private boolean jj_3R_264() {
    if (jj_3R_115()) return true;
    return false;
  }

  private boolean jj_3R_596() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_114()) return true;
    return false;
  }

  private boolean jj_3R_73() {
    if (jj_scan_token(CREATE)) return true;
    if (jj_scan_token(SEQUENCE)) return true;
    if (jj_3R_111()) return true;
    if (jj_scan_token(TYPE)) return true;
    if (jj_3R_111()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_740()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_741()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_742()) jj_scanpos = xsp;
    return false;
  }

  /** Generated Token Manager. */
  public OrientSqlTokenManager token_source;
  /** Current token. */
  public Token token;
  /** Next token. */
  public Token jj_nt;
  private int jj_ntk;
  private Token jj_scanpos, jj_lastpos;
  private int jj_la;
  private int jj_gen;
  final private int[] jj_la1 = new int[370];
  static private int[] jj_la1_0;
  static private int[] jj_la1_1;
  static private int[] jj_la1_2;
  static private int[] jj_la1_3;
  static private int[] jj_la1_4;
  static private int[] jj_la1_5;
  static private int[] jj_la1_6;
  static private int[] jj_la1_7;
  static private int[] jj_la1_8;
  static {
      jj_la1_init_0();
      jj_la1_init_1();
      jj_la1_init_2();
      jj_la1_init_3();
      jj_la1_init_4();
      jj_la1_init_5();
      jj_la1_init_6();
      jj_la1_init_7();
      jj_la1_init_8();
   }
   private static void jj_la1_init_0() {
      jj_la1_0 = new int[] {0x9f800,0x0,0xfc400000,0x0,0x0,0x0,0x3800,0x4000,0x0,0x0,0x0,0x9f800,0x3800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x200000,0x0,0x0,0x800000,0x0,0x0,0x0,0xf0000000,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x400000,0x800000,0x0,0x0,0x0,0x0,0xfc400000,0x800000,0x0,0x0,0x0,0x0,0xfc400000,0x800000,0x0,0x0,0xfc400000,0x800000,0x0,0x0,0xf0000000,0x100000,0x0,0xfc400000,0x0,0x800000,0x0,0x0,0x0,0x0,0xf0000000,0x100000,0x0,0xfc400000,0x0,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x20000000,0x0,0x0,0xf0000000,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x200000,0x800,0x800,0x800,0x200800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x10000000,0x0,0x0,0x0,0x0,0xfc600000,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0xfc400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc404000,0x0,0xfc400000,0x0,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x0,0x0,0xfc400000,0x0,0xfc400000,0x0,0xfc400000,0x0,0xfc400000,0x0,0xfc400000,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0xfc400000,0x0,0x0,0x0,0x0,0x0,0xfc400000,0xfc400000,0x0,0xfc400000,0xfc400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x1800000,0xfc400000,0x0,0xfc400000,0x0,0xfc400000,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0xfc400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x0,0xfc400000,0xfc400000,0xfc400000,0x0,0xfc400000,0xfc400000,0x0,0x0,0x0,0x0,0xfc400000,0x0,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0x4000000,0x0,0x0,0x0,0xfc400000,0x4000000,0x0,0x0,0xfc400000,0x0,0x0,0xfc400000,0xfc400000,0x0,0x0,0xfc400000,0xfc400000,0xfc400000,0xfc400000,0x0,0x0,0x0,0xfc400000,0xfc400000,0x0,0xfc400000,0xfc400000,0x0,0x98000,0xfc400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc400000,0x9f800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_1() {
      jj_la1_1 = new int[] {0x4080000,0x0,0x8802183,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x4080000,0x0,0x4000000,0x0,0x400,0x2800,0x2c00,0x2c00,0x40000,0x4000,0x800000,0x400000,0x40000000,0x10000000,0x88021a3,0x4000000,0x0,0x100,0x80,0x0,0x400,0x2800,0x2c00,0x2c00,0x40000,0x4000,0x800000,0x400000,0x40000000,0x10000000,0x0,0x8802183,0x0,0x0,0x400,0x0,0x80000000,0x0,0x10000,0x0,0x10000,0x400,0x100000,0x80000,0x0,0x400,0x20000000,0x0,0x100000,0x80000,0x0,0x400,0x1000,0x0,0x7,0x1000,0x0,0x0,0x0,0x1000,0x8802183,0x0,0x0,0x8802183,0x0,0x0,0x8802183,0x0,0x0,0x400,0x1000,0x0,0x0,0x8802183,0x0,0x400,0x1000,0x0,0x0,0x8802183,0x0,0x400,0x1000,0x8802183,0x0,0x400,0x1000,0x7,0x0,0x300000,0x88021a3,0x80000,0x0,0x800000,0x400000,0x400,0x4000,0x7,0x0,0x300000,0x88021a3,0x80000,0x4000000,0x0,0x800000,0x400000,0x400,0x4000,0x0,0x0,0x1,0x4,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x8802183,0x80000,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x80000,0x0,0x8802183,0x1,0x2000000,0x1000000,0x1000,0x0,0x8802d83,0x0,0x10000,0x0,0x0,0x0,0x0,0x88021a3,0x0,0x88021a3,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x88021a3,0x0,0x8802183,0x0,0x0,0x0,0x8802183,0x0,0x0,0x8802183,0x0,0x0,0x0,0x0,0x0,0x10,0x8,0x88021a3,0x0,0x0,0x0,0x8802183,0x0,0x88021a3,0x0,0x88021a3,0x0,0x88021a3,0x0,0x8802183,0x8802183,0x0,0x0,0x8802183,0x28000,0x28000,0x0,0x8802183,0x28000,0x28000,0x8802183,0x0,0x0,0x8802183,0x28000,0x28000,0x0,0x8802183,0x28000,0x28000,0x8802183,0x0,0x0,0x0,0x0,0x0,0x2800,0x0,0x80000,0x80000,0x0,0x88021a3,0x8802183,0x0,0x0,0x0,0x0,0x0,0x8802183,0x8802183,0x0,0x8802183,0x8802183,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x0,0x10000,0x8802183,0x0,0x8802183,0x0,0x8802183,0x0,0x8802183,0x0,0x0,0x8802183,0x0,0x0,0x8802183,0x0,0x0,0x0,0x0,0x20000000,0x8802183,0x20000000,0x0,0x0,0x0,0x0,0x8802183,0x0,0x8802183,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x88021a3,0x0,0x0,0x88021a3,0x0,0x88021a3,0x8802183,0x8802183,0x0,0x8802183,0x88021a3,0x0,0x20000000,0x0,0x20000000,0x8802183,0x0,0x0,0x20000000,0x8802183,0x0,0x0,0x8802183,0x0,0x200,0x0,0x0,0x8802183,0x0,0x200,0x0,0x8802183,0x0,0x0,0x8802183,0x8802183,0x0,0x0,0x8802183,0x8802183,0x8802183,0x8802183,0x0,0x0,0x0,0x8802183,0x8802183,0x0,0x8802183,0x8802183,0x0,0x0,0x8802183,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x88021a3,0x4080000,0x0,0x0,0x4,0x8000000,0x0,0x4,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_2() {
      jj_la1_2 = new int[] {0x10a2000,0x0,0xfffbff9c,0x0,0x0,0x0,0x80000,0x0,0x2000,0x0,0x0,0x10a2000,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x40,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x1c,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0xfffbff9c,0x1c,0xfffbff9c,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0xfffbff9c,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0xfffbff9c,0x0,0xfffbff9c,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x540,0x0,0x540,0xfffbff9c,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x18000,0x40000,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0xfffbff9c,0x0,0x0,0x0,0x200000,0x0,0x0,0x400000,0x800000,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0xfffbff9c,0xfffbff9c,0xfffbff9c,0x0,0xfffbff9c,0xfffbff9c,0xfe800a00,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0x0,0x0,0xfffbff9c,0xfffbff9c,0x0,0x0,0xfffbff9c,0xfffbff9c,0xfffbff9c,0xfffbff9c,0x0,0x0,0x0,0xfffbff9c,0xfffbff9c,0x0,0xfffbff9c,0xfffbff9c,0x0,0x0,0xfffbff9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffbff9c,0x10a2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_3() {
      jj_la1_3 = new int[] {0xf00e2408,0x80000000,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0xf00c2000,0xf00e2408,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0x0,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0x0,0xffffffff,0x0,0xffffffff,0x0,0xffffffff,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0xffffffff,0x0,0x0,0x0,0x0,0x0,0xffffffff,0xffffffff,0x0,0xffffffff,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0x0,0xffffffff,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0x0,0xffffffff,0x0,0xffffffff,0xffffffff,0xffffffff,0x0,0xffffffff,0xffffffff,0x7,0x0,0x80000000,0x0,0xffffffff,0x0,0x0,0x0,0xffffffff,0x80000000,0x20,0xffffffff,0x0,0x0,0x100,0x0,0xffffffff,0x0,0x0,0x100,0xffffffff,0x0,0x40,0xffffffff,0xffffffff,0x0,0x40,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0x0,0x800,0x0,0xffffffff,0xffffffff,0x0,0xffffffff,0xffffffff,0x10000,0xf00000,0xffffffff,0x0,0x0,0x0,0x2000000,0x0,0x4000000,0x8000000,0x0,0x0,0xffffffff,0xf00e2408,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_4() {
      jj_la1_4 = new int[] {0x20406,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x20406,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x200fffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0xfffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x3ffff,0x0,0x20000000,0x2003ffff,0x0,0x20000000,0x2003ffff,0x0,0x0,0x0,0x0,0x0,0x20000000,0x2003ffff,0x0,0x0,0x0,0x0,0x20000000,0x2003ffff,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x200fffff,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x200,0x200fffff,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x200fffff,0x0,0x200fffff,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200fffff,0x0,0x200fffff,0x0,0x0,0x20000000,0xfffff,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200fffff,0x0,0x0,0x0,0x3ffff,0x0,0x200fffff,0x0,0x200fffff,0x0,0x200fffff,0x0,0x200fffff,0x200fffff,0x0,0x0,0x200bffff,0x0,0x0,0x0,0x200bffff,0x0,0x0,0x200bffff,0x0,0x0,0x200bffff,0x0,0x0,0x0,0x200bffff,0x0,0x0,0x200bffff,0x0,0x0,0x20000000,0x20000000,0x20000000,0x0,0x20000000,0x0,0x0,0x0,0x200fffff,0x3ffff,0x20000000,0x0,0x0,0x0,0x0,0x3ffff,0xbffff,0x0,0xbffff,0xbffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8100,0x0,0x8100,0x3ffff,0x0,0x3ffff,0x0,0x3ffff,0x0,0x3ffff,0x0,0x0,0x3ffff,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x2003ffff,0x0,0x0,0x20000000,0x20000000,0x20000000,0x3ffff,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x3ffff,0x0,0x3ffff,0x2003ffff,0x2003ffff,0x0,0x3ffff,0x3ffff,0x0,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x3ffff,0x0,0x0,0xbffff,0x0,0x0,0x0,0x0,0xbffff,0x0,0x0,0x0,0x3ffff,0x0,0x0,0x3ffff,0x3ffff,0x0,0x0,0x3ffff,0x3ffff,0x3ffff,0x3ffff,0x8,0x0,0x0,0x2003ffff,0x3ffff,0x0,0xbffff,0xbffff,0x0,0x0,0x3ffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x200fffff,0x20406,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_5() {
      jj_la1_5 = new int[] {0x20000,0x20000,0x0,0x0,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000aec2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x8000,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x8000,0x0,0x0,0x40000,0x0,0x60008800,0x40000,0x0,0x60008800,0x0,0x0,0x0,0x0,0x40000,0x0,0x60008800,0x0,0x0,0x0,0x40000,0x0,0x60008800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000aec2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000aec2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x40000,0x40000,0x0,0x88000,0x800000,0x88000,0x88000,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x40000,0x40000,0x40000,0x40000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x60000000,0x0,0x40000,0x0,0x40000,0x0,0x0,0x40000,0x6000aec2,0x40000,0x6000aec2,0x0,0x0,0x8000,0x80000,0x0,0x2600,0x0,0x0,0x6000aec2,0xc0,0x600080c2,0x40000,0x800,0x0,0x60008800,0x0,0x40000,0x0,0x0,0x80000,0x80000,0x0,0x0,0x0,0x0,0x6000aec2,0x600,0x87800000,0x1800000,0xc0,0x40000,0x6000aec2,0x40000,0x6000aec2,0x40000,0x6000aec2,0x87800000,0x600088c2,0x600088c2,0x600000c0,0x88000,0x0,0x0,0x0,0x88000,0x0,0x0,0x0,0x800,0x40000,0x88000,0x0,0x0,0x0,0x88000,0x0,0x0,0x0,0x800,0x40000,0x40000,0x60000000,0x60000000,0x60000000,0x0,0x60000000,0x0,0x0,0x40000,0x6000aec2,0x8000,0x0,0x8000,0x0,0x80000,0x0,0x8000,0xc0,0x40000,0xc0,0xc0,0x2080000,0x2000000,0x2000,0x2000,0x2000,0x2000000,0x2000,0x40000,0x0,0x600,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x2000,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x8000,0x800,0x0,0x40000,0x0,0x8000,0x0,0x40000,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x800000,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x80000,0x40000,0x0,0x600,0x0,0x0,0x0,0x0,0x6000aec2,0x20000,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_6() {
      jj_la1_6 = new int[] {0x0,0x0,0x40000000,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x0,0x40000000,0x0,0x100,0x40000100,0x0,0x100,0x40000100,0x0,0x0,0x0,0x0,0x0,0x100,0x40000100,0x0,0x0,0x0,0x0,0x100,0x40000100,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x40000300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x10000100,0x10000100,0x0,0x40000300,0x0,0x40000300,0x0,0x200,0x0,0x0,0x0,0x0,0x180,0x4600,0x40000300,0x0,0x40000300,0x0,0x0,0x100,0x40000200,0x0,0x0,0x40000000,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x60000300,0x0,0x80000017,0x0,0x40000000,0x0,0x40000300,0x0,0x40000300,0x0,0x40000300,0x80000017,0x40000300,0x40000300,0x0,0x0,0x40000100,0x0,0x0,0x0,0x40000100,0x0,0x0,0x40000100,0x0,0x0,0x40000100,0x0,0x0,0x0,0x40000100,0x0,0x0,0x40000100,0x0,0x0,0x100,0x100,0x100,0x0,0x100,0x0,0x0,0x0,0x40000300,0x40000200,0x300,0x0,0x200,0x0,0x200,0x40000200,0x40000000,0x0,0x40000000,0x40000000,0x140,0x0,0x0,0x0,0x0,0x140,0x0,0x0,0x0,0x0,0x0,0x40000000,0x140,0x40000000,0x140,0x40000000,0x140,0x40000000,0x140,0x0,0x40000000,0x140,0x0,0x40000000,0x140,0x0,0x0,0x0,0x0,0x40000100,0x0,0x0,0x100,0x100,0x100,0x40000000,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x180,0x180,0x40000000,0x0,0x40000000,0x40000100,0x40000100,0x0,0x40000000,0x40000000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x40000000,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x40000000,0x0,0x0,0x40000000,0x40000000,0x0,0x0,0x40000000,0x40000000,0x40000200,0x40000200,0x0,0x0,0x200,0x40000100,0x40000000,0x100,0x40000000,0x40000000,0x0,0x0,0x40000200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_7() {
      jj_la1_7 = new int[] {0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x400000,0x400000,0x0,0x1900,0x0,0x400000,0x401900,0x0,0x400000,0x401900,0x0,0x0,0x0,0x0,0x0,0x400000,0x401900,0x0,0x0,0x0,0x0,0x400000,0x401900,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x61900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x400,0x0,0x400,0x1900,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x0,0x401900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x0,0x1900,0x0,0x0,0x460400,0x81900,0x60000,0x0,0x1900,0x800000,0x0,0x0,0x1c000,0x1e000,0x0,0x0,0x401900,0x0,0x10,0x0,0x1900,0x0,0x401900,0x0,0x401900,0x0,0x401900,0x12,0x1900,0x1900,0x0,0x0,0x401900,0x0,0x0,0x0,0x401900,0x0,0x0,0x401900,0x0,0x0,0x401900,0x0,0x0,0x0,0x401900,0x0,0x0,0x401900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x1900,0x0,0x0,0x0,0x0,0x0,0x1900,0x1900,0x0,0x1900,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x1900,0x0,0x1900,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x400000,0x400000,0x400000,0x1900,0x0,0x61900,0x0,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x1900,0x1900,0x1900,0x0,0x1001900,0x1900,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x1900,0x0,0x0,0x1900,0x100,0x0,0x0,0x0,0x1900,0x100,0x0,0x0,0x1900,0x0,0x0,0x1900,0x1900,0x0,0x0,0x1900,0x1900,0x801900,0x801900,0x400,0x0,0x0,0x1900,0x1900,0x0,0x1900,0x1900,0x0,0x0,0x1d00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x401900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e000000,0x7e000000,0x80000000,0x0,0x0,0x0,};
   }
   private static void jj_la1_init_8() {
      jj_la1_8 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x6,};
   }
  final private JJCalls[] jj_2_rtns = new JJCalls[144];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with user supplied CharStream. */
  public OrientSql(CharStream stream) {
    token_source = new OrientSqlTokenManager(stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 370; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(CharStream stream) {
    token_source.ReInit(stream);
    token = new Token();
    jj_ntk = -1;
    jjtree.reset();
    jj_gen = 0;
    for (int i = 0; i < 370; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor with generated Token Manager. */
  public OrientSql(OrientSqlTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 370; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(OrientSqlTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jjtree.reset();
    jj_gen = 0;
    for (int i = 0; i < 370; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  private Token jj_consume_token(int kind) throws ParseException {
    Token oldToken;
    if ((oldToken = token).next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    if (token.kind == kind) {
      jj_gen++;
      if (++jj_gc > 100) {
        jj_gc = 0;
        for (int i = 0; i < jj_2_rtns.length; i++) {
          JJCalls c = jj_2_rtns[i];
          while (c != null) {
            if (c.gen < jj_gen) c.first = null;
            c = c.next;
          }
        }
      }
      return token;
    }
    token = oldToken;
    jj_kind = kind;
    throw generateParseException();
  }

  static private final class LookaheadSuccess extends java.lang.Error { }
  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
  private boolean jj_scan_token(int kind) {
    if (jj_scanpos == jj_lastpos) {
      jj_la--;
      if (jj_scanpos.next == null) {
        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
      } else {
        jj_lastpos = jj_scanpos = jj_scanpos.next;
      }
    } else {
      jj_scanpos = jj_scanpos.next;
    }
    if (jj_rescan) {
      int i = 0; Token tok = token;
      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
      if (tok != null) jj_add_error_token(kind, i);
    }
    if (jj_scanpos.kind != kind) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
    return false;
  }


/** Get the next Token. */
  final public Token getNextToken() {
    if (token.next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

/** Get the specific Token. */
  final public Token getToken(int index) {
    Token t = token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  private int jj_ntk() {
    if ((jj_nt=token.next) == null)
      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
    else
      return (jj_ntk = jj_nt.kind);
  }

  private java.util.List jj_expentries = new java.util.ArrayList();
  private int[] jj_expentry;
  private int jj_kind = -1;
  private int[] jj_lasttokens = new int[100];
  private int jj_endpos;

  private void jj_add_error_token(int kind, int pos) {
    if (pos >= 100) return;
    if (pos == jj_endpos + 1) {
      jj_lasttokens[jj_endpos++] = kind;
    } else if (jj_endpos != 0) {
      jj_expentry = new int[jj_endpos];
      for (int i = 0; i < jj_endpos; i++) {
        jj_expentry[i] = jj_lasttokens[i];
      }
      jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) {
        int[] oldentry = (int[])(it.next());
        if (oldentry.length == jj_expentry.length) {
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              continue jj_entries_loop;
            }
          }
          jj_expentries.add(jj_expentry);
          break jj_entries_loop;
        }
      }
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
    jj_expentries.clear();
    boolean[] la1tokens = new boolean[259];
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 370; i++) {
      if (jj_la1[i] == jj_gen) {
        for (int j = 0; j < 32; j++) {
          if ((jj_la1_0[i] & (1< jj_gen) {
          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
            case 3: jj_3_4(); break;
            case 4: jj_3_5(); break;
            case 5: jj_3_6(); break;
            case 6: jj_3_7(); break;
            case 7: jj_3_8(); break;
            case 8: jj_3_9(); break;
            case 9: jj_3_10(); break;
            case 10: jj_3_11(); break;
            case 11: jj_3_12(); break;
            case 12: jj_3_13(); break;
            case 13: jj_3_14(); break;
            case 14: jj_3_15(); break;
            case 15: jj_3_16(); break;
            case 16: jj_3_17(); break;
            case 17: jj_3_18(); break;
            case 18: jj_3_19(); break;
            case 19: jj_3_20(); break;
            case 20: jj_3_21(); break;
            case 21: jj_3_22(); break;
            case 22: jj_3_23(); break;
            case 23: jj_3_24(); break;
            case 24: jj_3_25(); break;
            case 25: jj_3_26(); break;
            case 26: jj_3_27(); break;
            case 27: jj_3_28(); break;
            case 28: jj_3_29(); break;
            case 29: jj_3_30(); break;
            case 30: jj_3_31(); break;
            case 31: jj_3_32(); break;
            case 32: jj_3_33(); break;
            case 33: jj_3_34(); break;
            case 34: jj_3_35(); break;
            case 35: jj_3_36(); break;
            case 36: jj_3_37(); break;
            case 37: jj_3_38(); break;
            case 38: jj_3_39(); break;
            case 39: jj_3_40(); break;
            case 40: jj_3_41(); break;
            case 41: jj_3_42(); break;
            case 42: jj_3_43(); break;
            case 43: jj_3_44(); break;
            case 44: jj_3_45(); break;
            case 45: jj_3_46(); break;
            case 46: jj_3_47(); break;
            case 47: jj_3_48(); break;
            case 48: jj_3_49(); break;
            case 49: jj_3_50(); break;
            case 50: jj_3_51(); break;
            case 51: jj_3_52(); break;
            case 52: jj_3_53(); break;
            case 53: jj_3_54(); break;
            case 54: jj_3_55(); break;
            case 55: jj_3_56(); break;
            case 56: jj_3_57(); break;
            case 57: jj_3_58(); break;
            case 58: jj_3_59(); break;
            case 59: jj_3_60(); break;
            case 60: jj_3_61(); break;
            case 61: jj_3_62(); break;
            case 62: jj_3_63(); break;
            case 63: jj_3_64(); break;
            case 64: jj_3_65(); break;
            case 65: jj_3_66(); break;
            case 66: jj_3_67(); break;
            case 67: jj_3_68(); break;
            case 68: jj_3_69(); break;
            case 69: jj_3_70(); break;
            case 70: jj_3_71(); break;
            case 71: jj_3_72(); break;
            case 72: jj_3_73(); break;
            case 73: jj_3_74(); break;
            case 74: jj_3_75(); break;
            case 75: jj_3_76(); break;
            case 76: jj_3_77(); break;
            case 77: jj_3_78(); break;
            case 78: jj_3_79(); break;
            case 79: jj_3_80(); break;
            case 80: jj_3_81(); break;
            case 81: jj_3_82(); break;
            case 82: jj_3_83(); break;
            case 83: jj_3_84(); break;
            case 84: jj_3_85(); break;
            case 85: jj_3_86(); break;
            case 86: jj_3_87(); break;
            case 87: jj_3_88(); break;
            case 88: jj_3_89(); break;
            case 89: jj_3_90(); break;
            case 90: jj_3_91(); break;
            case 91: jj_3_92(); break;
            case 92: jj_3_93(); break;
            case 93: jj_3_94(); break;
            case 94: jj_3_95(); break;
            case 95: jj_3_96(); break;
            case 96: jj_3_97(); break;
            case 97: jj_3_98(); break;
            case 98: jj_3_99(); break;
            case 99: jj_3_100(); break;
            case 100: jj_3_101(); break;
            case 101: jj_3_102(); break;
            case 102: jj_3_103(); break;
            case 103: jj_3_104(); break;
            case 104: jj_3_105(); break;
            case 105: jj_3_106(); break;
            case 106: jj_3_107(); break;
            case 107: jj_3_108(); break;
            case 108: jj_3_109(); break;
            case 109: jj_3_110(); break;
            case 110: jj_3_111(); break;
            case 111: jj_3_112(); break;
            case 112: jj_3_113(); break;
            case 113: jj_3_114(); break;
            case 114: jj_3_115(); break;
            case 115: jj_3_116(); break;
            case 116: jj_3_117(); break;
            case 117: jj_3_118(); break;
            case 118: jj_3_119(); break;
            case 119: jj_3_120(); break;
            case 120: jj_3_121(); break;
            case 121: jj_3_122(); break;
            case 122: jj_3_123(); break;
            case 123: jj_3_124(); break;
            case 124: jj_3_125(); break;
            case 125: jj_3_126(); break;
            case 126: jj_3_127(); break;
            case 127: jj_3_128(); break;
            case 128: jj_3_129(); break;
            case 129: jj_3_130(); break;
            case 130: jj_3_131(); break;
            case 131: jj_3_132(); break;
            case 132: jj_3_133(); break;
            case 133: jj_3_134(); break;
            case 134: jj_3_135(); break;
            case 135: jj_3_136(); break;
            case 136: jj_3_137(); break;
            case 137: jj_3_138(); break;
            case 138: jj_3_139(); break;
            case 139: jj_3_140(); break;
            case 140: jj_3_141(); break;
            case 141: jj_3_142(); break;
            case 142: jj_3_143(); break;
            case 143: jj_3_144(); break;
          }
        }
        p = p.next;
      } while (p != null);
      } catch(LookaheadSuccess ls) { }
    }
    jj_rescan = false;
  }

  private void jj_save(int index, int xla) {
    JJCalls p = jj_2_rtns[index];
    while (p.gen > jj_gen) {
      if (p.next == null) { p = p.next = new JJCalls(); break; }
      p = p.next;
    }
    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
  }

  static final class JJCalls {
    int gen;
    Token first;
    int arg;
    JJCalls next;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy