/* Generated By:JavaCC: Do not edit this line. TDLParser.java */
import java.io.IOException;
import java.io.File;


public class TDLParser implements TDLParserConstants {
        /* Class Constants */
  public final static String SPACE_STRING  = " ";
  public final static int    DEFAULT_STATE = TDLParserConstants.DEFAULT;
  public final static String PARENT_WARNING
                 = ":  Warning:  Use of \"PARENT\" keyword is deprecated."
                   + "  Assuming you meant to use \"THIS\".";
  public final static String SELF_WARNING
                 = ":  Warning:  Use of \"SELF\" keyword is deprecated."
                   + "  Assuming you meant to use \"CHILD\".";



        /* Class Variables */
  private   static DataSourceString    staticStringDataSource
                                         = new DataSourceString ( "" );
  private   static DataSourceFile      staticFileDataSource
                                         = new DataSourceFile ( );

  private   static TDLParser           staticTDLParser = null;

  protected static DataSource          lastDataSource = null;

  protected static DataTaskDefinition  currentDataTaskDefinition = null;


        /* Class variables for debugging... */
  protected static boolean             debugDistributedDeclarationSet = false;


        /* TDLParser routines / interface */
  public static TDLParser getParser()
  {
    if ( TDLParser . staticTDLParser == null )
      TDLParser . staticTDLParser = new TDLParser ( staticStringDataSource );
    return staticTDLParser;
  }

  public static DataSource getLastDataSource()  { return lastDataSource; }

  public static void reinitParser ( String theSourceString )
  {
    TDLParser . staticStringDataSource . setString ( theSourceString );
    TDLParser . reinitParser ( TDLParser . staticStringDataSource );
  }

  public static void reinitParser ( File  theFile )
  {
    TDLParser . staticFileDataSource . setFile ( theFile );
    TDLParser . reinitParser ( TDLParser . staticFileDataSource );
  }

  public static void reinitParser ( DataSource theSource )
  {
    TDLParser . getParser() . ReInit ( theSource );
    lastDataSource = theSource;
    clearParsingTask();
  }


      /* When printing messages, we need the [<filename>/stdin/Line]: string */
  public static String getFilenameWithoutPathPlusColon()
  {
    return TDLParser.lastDataSource . getFilenameWithoutPathPlusColon();
  }


        /* Sometimes we need to know what kind of task we are currently
	 * parsing, way down in the depths of parsing the Task body...
	 */
  public static boolean getIsParsingMonitorBody()
  {
    return (   (    currentDataTaskDefinition != null          )
            && (    currentDataTaskDefinition . getTaskType()
                 == DataTaskDefinition.MONITOR_TASK            ) );
  }

  public static boolean getIsParsingExceptionHandlerBody()
  {
    return (   (    currentDataTaskDefinition != null          )
            && (    currentDataTaskDefinition . getTaskType()
                 == DataTaskDefinition.HANDLER_TASK            ) );
  }

  public static void setParsingTask ( DataTaskDefinition theDataTaskDefinition)
  {
    currentDataTaskDefinition = theDataTaskDefinition;
  }

  public static void clearParsingTask()
  {
    currentDataTaskDefinition = null;
  }



        /* This Main() is used for testing/debugging TDLParser... */
  public static void main ( String args[] ) throws java.io.IOException
  {
    StringBuffer       inputData = new StringBuffer ( 1000 );
    int                inchar;
    DataTaskDefinition dataTaskDef;
    char               selectedTest = '-';
    char               subTest      = '-';
    int                i;

    System.err.println("Starting...");

    while ( ( inchar = System.in.read() ) != -1 )
      inputData . append ( (char) ( inchar & 0x00ff ) );

    if ( args . length > 0 )
    {
      if ( args[0] . length() > 0 )
        selectedTest = args[0].charAt(0);

      if ( args[0] . length() > 1 )
        subTest = args[0].charAt(1);
    }

    System.err.println ( "Running test (\"" + selectedTest + "\")  (\""
                         + subTest + "\")  [" + args . length + "]" );


    TDLParser . reinitParser ( inputData . toString() );

    System.err.println("Parsing...");


    try
    {
      switch ( selectedTest )
      {
        case 's':
          DataStatement  statement = parseStatement(0,0);
          System.err.println("Ending...");
          System.err.println("\nResults:\n--------\n" + statement.toString() );
          break;

        case 'e':
          DataExpressionStatement Estatement = parseExpressionStatement(0);
          System.err.println("Ending...");
          System.err.println("\nResults:\n--------\n" + Estatement.toString());
          break;

        case 'd':
          DataDeclarationStatement Dstatement = parseDeclarationStatement(0);
          System.err.println("Ending...");
          System.err.println("\nResults:\n--------\n" + Dstatement.toString());
          break;

        case 'I':
          DataStatement  Istatement = parseForInitStatement(0);
          System.err.println("Ending...");
          System.err.println("\nResults:\n--------\n" + Istatement.toString());
          break;

        case 'c':
                /* Note:  Parser should be set to correct Token-state up above.
		 *        (But it might not be...)
		 */
          DataConstraint dataConstraint = parseConstraint ( null, 0 );
          System.err.println("Ending...");
          System.err.println("\nResults:\n--------\n"
                             + dataConstraint.toString() );
          break;

        case 'C':
                /* Note:  Parser should be set to correct Token-state up above.
		 *        (But it might not be...)
		 */
          DataConstraintStatement dataConstraintStatement
            = parseConstraintStatement ( 0 );
          System.err.println("Ending...");
          System.err.println("\nResults:\n--------\n"
                             + dataConstraintStatement.toString() );
          break;

        case 'f':
          DataFile  file = parseFile(null);
          System.err.println("Ending...");
          System.err.print("\nResults:\n\n" + file.toString() );
          break;


        case 'x':
          Token startToken = getToken(0);
          DataComponent tmpDataComponent = new DataExpression();

          switch ( subTest )
          {
            case 'a':
              parseStringConstantAndIdsAssumingTheyAreMacros();
              break;
            case 'b':
              parseLiteral();
              break;

            default:
            case 'c':
              parsePrimaryExpression();
              break;
          }

          parseMiscTokens ( tmpDataComponent, startToken, 0 );
          System.out.println ( "Parsed:  " + tmpDataComponent.toString() );
          break;


        case 'y':
          DataComponent tmp_Ytest;

                /* Enable debugging for this test. */
          TDLParser.debugDistributedDeclarationSet = true;

          switch ( subTest )
          {

            case 'd':
              tmp_Ytest = parseDistributedDeclarationSet(null);
              break;
            case 't':
              tmp_Ytest = parseDistributedTypedef();
              break;
            case 's':
              tmp_Ytest = parseDistributedStruct(null);
              break;
            default:
            case 'e':
              tmp_Ytest = parseDistributedEnum (null);
              break;
          }

          System.out.println ( "Parsed:  " + tmp_Ytest.toString() );
          break;


        case 'z':
          System.out.println("Running on:  " + inputData . toString() +"\n\n");
          Token  token = getToken(1);
          for ( i = 2;  true ;    token = getToken(i++) )
          {
            System.out.println (
              "Token [" + i + "]  kind=" + token.kind
              + " " + TDLParserConstants.tokenImage[token.kind]
              + "   image=\"" + token.image + "\"" );
            if ( token.kind == EOF )
              break;
          }
          break;


        case 't':
        default:
          dataTaskDef = parseTaskDefinitionHead ( null );
          System.err.println("Ending...");
          System.err.println("\nResults:\n\n" + dataTaskDef . toString () );
          System.err.println("\nargcount = "
                             + dataTaskDef . getTaskArgumentCount() );
          if ( dataTaskDef . getTaskArgumentCount() > 0 )
          {
            System.err.println("\narg1:"
               +   "\n  Dir...: \""
               + dataTaskDef.getTaskArgument(0).getArgumentDirectionString()
               + "\"\n  Name..: \""
               + dataTaskDef.getTaskArgument(0).getArgumentName()
               + "\"\n  Full..: \""
               + dataTaskDef.getTaskArgument(0).toString()

               + "\"\n  DISTRIBTED............: \""
               + dataTaskDef.getTaskArgument(0).getIsDistributed()
               + "\"\n  DISTRIBTED_type.......: \""
               + dataTaskDef.getTaskArgument(0).getDistributedTypeString()
               + "\"\n  DISTRIBTED_id.........: \""
               + dataTaskDef.getTaskArgument(0).getDistributedId()
               + "\"\n  DISTRIBTED_isPointer..: \""
               + dataTaskDef.getTaskArgument(0).getDistributedIsPointer()

               + "\"\n" );
            for ( i=0;
                  i < dataTaskDef.getTaskArgument(0).getSubcomponentsCount();
                  i++ )
            {
              System.err.println("  subComponent[" + i + "]...: \""
                 + dataTaskDef.getTaskArgument(0).getStringSubcomponent ( i )
                 + "\"" );
            }
          }
          break;

      } /* switch ( seletedTest ) */

    }
    catch ( ParseException  theParseException )
    {
      System.err.println ("Caught parse Exception:");
      System.err.println ( theParseException );
      if ( theParseException . currentToken != null )
      {
        System.err.println ( "\n\nNote:  Kind = "
                             + theParseException . currentToken.kind );
        System.err.println ( "\nNote:  Token = \""
                             + theParseException . currentToken + "\"" );
        if ( theParseException . currentToken.next != null )
        {
          System.err.println ( "\n\nNote:  Kind = "
                               + theParseException . currentToken.next.kind );
          System.err.println ( "\nNote:  Token = \""
                               + theParseException . currentToken.next + "\"");
        }
      }

        /* For debugging, it helps to know what tokens were pending. */
      System.err.println ( "\n\nTokens on stream were:\n" );
      for ( i=0; i<10; i++ )
      {
        System.err.println ( "  Pending Token (" + i + ") was \""
                             + getToken(i).image + "\"   type="
                             + getToken(i).kind + "   ("
                             + TDLParserConstants.tokenImage[getToken(i).kind]
                             + ")" );
      }
    }
  }


        /* Used to manually generate a ParseException from code in this file.
	 * Must be compatible with DetailedParseException so we can get
	 * information regarding which token (and where in the file) we died.
	 */
  public static ParseException generateParseException ( Token   theToken,
                                                        String  theText  )
  { return generateParseException ( theToken, theToken, theText ); }

  public static ParseException generateParseException( Token  theToken,
                                                       Token  theLocationToken,
                                                       String theText  )
  {
    Token           hackToken      = theToken . newToken ( theToken . kind );
    ParseException  parseException
      = new ParseException ( "\n"
                             + TDLParser.getFilenameWithoutPathPlusColon()
                             + ( theLocationToken.beginLine + 1 )
                             + ":  Error:\n  "
                             + theText );

    hackToken . kind = theToken . kind;

    hackToken . beginLine    = theToken . beginLine;
    hackToken . beginColumn  = theToken . beginColumn;
    hackToken . endLine      = theToken . endLine;
    hackToken . endColumn    = theToken . endColumn;
    hackToken . image        = theToken . image;
    hackToken . next         = theToken;
    hackToken . specialToken = theToken . specialToken;

    parseException . currentToken = hackToken;
    return parseException;
  }


  /* Used to process fluff ( comments, whitespace, etc ) that would
   * ordinarily have been ignored or filtered out by the pre-processor.
   */
  public static void parseFluffIgnoreSpaces ( DataComponent theDataComponent,
                                              Token         theToken )
  {
    int index = theDataComponent . getSubcomponentsCount();

    for ( Token  token = theToken . specialToken;
          token != null;
          token = token . specialToken )
    {
      if ( token . kind != WHITESPACE )
        theDataComponent . addSubcomponent ( token.image, index );
    }
  }

  public static void parseFluff ( DataComponent theDataComponent,
                                  Token         theToken,
                                  int           theUnIndent )
  {
    StringBuffer  stringBuffer = null;
    String        string;
    int           i, j,
                  unindentCount,
                  column,
                  spaceToAddForTabChar,
                  componentIndex = theDataComponent . getSubcomponentsCount();

    for ( Token  token = theToken . specialToken;
          token != null;
          token = token . specialToken )
    {
      if ( token . kind != WHITESPACE )
      {
        string = token.image;
      }
      else /* Ie:  token . kind == WHITESPACE  && we are un-indenting... */
      {
                /* Find our starting column... */
        column = theToken . beginColumn;

                /* If we have whitespace that doesn't start at column 0, */
                /* something else, non-whitespace, must be there.        */
                /* We do *NOT* want to strip whitespace in this case!!!  */
        if ( column == 0 )
          unindentCount = theUnIndent;
        else
          unindentCount = 0;

                /* Create/Erase the stringBuffer is necessary */
        if ( stringBuffer == null )
          stringBuffer = new StringBuffer();
        stringBuffer . setLength( 0 );

                /* Process the characters */
        for ( i=0; i < token.image.length();  i++ )
        {
          switch ( token.image.charAt ( i )  )
          {
            case '\n':
            case '\f':
            case '\r': /* Should we re-indent after carriage-returns? */
              unindentCount = theUnIndent;
              column = 0;
              stringBuffer . append ( token.image.charAt ( i ) );
              break;

            case '\t':
              spaceToAddForTabChar = DataComponent.getTabSize()
                                     - ( column % DataComponent.getTabSize() );
              for ( j=0; j < spaceToAddForTabChar; j++ )
              {
                if ( unindentCount > 0 )
                  unindentCount--;
                else
                  stringBuffer . append ( " " );
              }
              column += spaceToAddForTabChar;
              break;

            case ' ':
              if ( unindentCount > 0 )
                unindentCount--;
              else
                stringBuffer . append ( " " );
              break;

            default:
              System.err.println ( "[TDLParser:parseFluff(... , theindent)]  "
                         + "Error:  Unexpected whitespace character \'0x"
                         + Integer.toHexString ( token.image.charAt ( i ) )
                         + "\'" );
              break;
          }
        }

        string = stringBuffer . toString();
      }

      theDataComponent . addSubcomponent ( string, componentIndex );

    } /* For ( token = specialToken's ) */
  }



  public static void parseMiscTokens ( DataComponent theDataComponent,
                                       Token         theStartToken,
                                       int           theUnIndent )
  {
    for ( Token  token = theStartToken . next;
          token != getToken(1);
          token = token . next )
    {
      parseFluff ( theDataComponent, token, theUnIndent );
      theDataComponent . addSubcomponent ( token.image );
    }
  }

  public static void parseMiscTokensIgnoringLast (
                                          DataComponent theDataComponent,
                                          Token         theStartToken,
                                          int           theUnIndent )
  {
    for ( Token  token = theStartToken . next;
          token != getToken(0);
          token = token . next )
    {
      parseFluff ( theDataComponent, token, theUnIndent );
      theDataComponent . addSubcomponent ( token.image );
    }
  }


        /* Note:  Can't do conditional-branch parsing inside BNF's. *
	 * So we export as much redundancy as possible over here.   */
  public static void checkForTrailingCommaOrOpenBrace ( Token theNextToken )
    throws ParseException
  {
        /* Idiocy check */
    if (   ( theNextToken.kind != COMMA      )
        && ( theNextToken.kind != OPEN_BRACE ) )
    {
      throw generateParseException (
                    theNextToken,
                    "Next token should have been a COMMA or an OPEN-BRACE.  "
                  + "Instead found \"" + theNextToken.image + "\"." );
    }
  }

  public static void checkForTrailingCommaOrOpenBraceOrStringOrMacroString (
                                                           Token theNextToken )
    throws ParseException
  {
        /* Idiocy check */
    if (   ( theNextToken.kind != COMMA           )
        && ( theNextToken.kind != OPEN_BRACE      )
        && ( theNextToken.kind != STRING_CONSTANT )
        && ( theNextToken.kind != ID              ) )
    {
      throw generateParseException (
                    theNextToken,
                    "Next token should have been a COMMA, an OPEN-BRACE, "
                  + "a STRING_CONSTANT, or an identifier corresponding to "
                  + "a #define'd (macro) string constant.  "
                  + "Instead found \"" + theNextToken.image + "\"." );
    }
  }

        /* Note:  Can't do conditional-branch parsing inside BNF's. *
	 * So we export as much redundancy as possible over here.   */
  public static void processTrailingFluffBeforeTheseTokenKindsOnly (
                                         DataComponent theDataComponent,
                                         Token         theNextToken,
                                         int           theUnIndent,
                                         int           theFirstNextTokenKind,
                                         int           theSecondNextTokenKind )
  {
    if (   ( theNextToken.kind == theFirstNextTokenKind  )
        || ( theNextToken.kind == theSecondNextTokenKind ) )
    {
            /* Process subsequent fluff off next token. */
      parseFluff ( theDataComponent, theNextToken, theUnIndent );
            /* Record that this fluff has already been processed. */
      theNextToken . specialToken = null;
    }
  }


  protected static int parseFileSnarfFluffAndMaybeNextToken (
                                            boolean      theIncludeNextToken,
                                            StringBuffer theStringBuffer,
                                            int          theCurrentLineNumber )
  {
    int    stringBufferCurrentLength = theStringBuffer . length();
    Token  fluffToken;

            /* Add all the fluff tokens to the string we are building... */
    for ( fluffToken  = getToken ( 1 ) . specialToken;
          fluffToken != null;
          fluffToken = fluffToken . specialToken )
    {
      if (   ( theStringBuffer . length() <= 0                          )
          || ( theCurrentLineNumber       <  0                          )
          || ( theCurrentLineNumber       >  (fluffToken.beginLine + 1) ) )
      {
        theCurrentLineNumber = fluffToken.beginLine + 1;
      }

        /* Use insert at stringBufferCurrentLength to reverse the order */
      theStringBuffer . insert ( stringBufferCurrentLength, fluffToken.image );
    }


    if ( theIncludeNextToken == true )
    {
      if (   ( theStringBuffer . length() <= 0                           )
          || ( theCurrentLineNumber       <  0                           )
          || ( theCurrentLineNumber       >  (getToken(1).beginLine + 1) ) )
      {
        theCurrentLineNumber = getToken ( 1 ) . beginLine + 1;
      }

        /* Append this token to the string we are building... */
      theStringBuffer . append ( getToken ( 1 ) . image );
    }

    return theCurrentLineNumber;

  } /* protected static int parseFileSnarfFluffAndMaybeNextToken */



        /* This functionality occurs an awfully lot in parseFile() */
  protected static int parseFileInternal_addInCurrentLeadingStrings (
                                       StringBuffer  theStringBuffer,
                                       DataFile      theThisFile,
                                       int           theCurrentLineNumber )
  {
            /* Add in the current leading string(s) */
    if ( theStringBuffer . length() > 0 )
    {
      theThisFile . addSubcomponent ( new DataComponentPlaceholder (
                                                  theStringBuffer . toString(),
                                                  theCurrentLineNumber ) );
      theStringBuffer . setLength ( 0 );

      return -1; /*New value for currentLineNumber; Arbitrary negative number*/
    }
    else
    {
      return theCurrentLineNumber;
    }
  }

/******************/
/*** <ID> Token ***/
/******************/

/*
 * <ID> really ought to let us use various other tokens as valid ID's.
 * Note: For backward compatibility, this *MUST* ONLY PARSE A SINGLE TOKEN.
 * Note: Limit us to things that are not used elsewhere inside Tasks, or this
 *       is going to become extremely painful.
 */
  static final public Token parseIdToken() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ID:
      jj_consume_token(ID);
      break;
    case NAME:
      jj_consume_token(NAME);
      break;
    case TASK:
      jj_consume_token(TASK);
      break;
    case GOAL:
      jj_consume_token(GOAL);
      break;
    case COMMAND:
      jj_consume_token(COMMAND);
      break;
    case MONITOR:
      jj_consume_token(MONITOR);
      break;
    case EXCEPTION:
      jj_consume_token(EXCEPTION);
      break;
    case HANDLER:
      jj_consume_token(HANDLER);
      break;
    case RESUME:
      jj_consume_token(RESUME);
      break;
    case HANDLES:
      jj_consume_token(HANDLES);
      break;
    case DISTRIBUTED:
      jj_consume_token(DISTRIBUTED);
      break;
    case THREADED:
      jj_consume_token(THREADED);
      break;
    default:
      jj_la1[0] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return getToken(0);}
    throw new Error("Missing return statement in function");
  }

/***********************/
/*** STRING_CONSTANT ***/
/***********************/

/*
 * <STRING_CONSTANT> really needs to include <ID>'s, to deal with
 * #defined macros.  However, including <ID>'s in the <STRING_CONSTANT>
 * token causes unbelievable pain and suffering.  (Amongst other things,
 * the token-type chosen is the longest token type.)
 */
  static final public void parseStringConstantAndIdsAssumingTheyAreMacros() throws ParseException {
    label_1:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STRING_CONSTANT:
        jj_consume_token(STRING_CONSTANT);
        break;
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case ID:
        parseIdToken();
        break;
      default:
        jj_la1[1] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case STRING_CONSTANT:
      case ID:
        ;
        break;
      default:
        jj_la1[2] = jj_gen;
        break label_1;
      }
    }
  }

  static String parseStripFluff(boolean theStripStrings) throws ParseException {
  StringBuffer   stringBuffer = new StringBuffer ( 1000 );


  for ( ;   getToken ( 1 ) . kind != EOF;   getNextToken() )
  {
    if (   ( theStripStrings       == true            )
        && ( getToken ( 1 ) . kind == STRING_CONSTANT ) )
      continue;

    stringBuffer . append ( getToken ( 1 ) . image );
    stringBuffer . append ( " " );
  }

  return stringBuffer . toString();
  }

  static DataFile parseFile(DataFile  theDataFile) throws ParseException {
  int           indexToCheck, spawnIndent, currentLineNumber = -1;
  boolean       needToCheckAdditionalToken;
  StringBuffer  stringBuffer = new StringBuffer();
  DataVector    stack        = new DataVector ( 10 );
  Token         stackToken;
  DataSpawnTask dataSpawnTask;
  DataFile      thisFile = (   ( theDataFile != null )
                             ? theDataFile : new DataFile() );
  int           i;
  Token         labeledSpawnToken;

  while ( getToken ( 1 ) . kind != EOF )
  {
        /* We used to be able to just check (getToken ( 1 ) . kind == SPAWN),
	 * but labels complicate that...
	 */
    labeledSpawnToken = null;
    for ( i = 1;   getToken ( i ) . kind != EOF;   i += 2 )
    {
      if ( getToken ( i ) . kind == SPAWN )
      {
        labeledSpawnToken = getToken ( i );
        break;
      }

      if (   ( getToken ( i   ) . kind != ID    )
          || ( getToken ( i+1 ) . kind != COLON ) )
        break;
    }


        /* Are we entering something? */
    if (   ( getToken ( 1 ) . kind == OPEN_PAREN   )
        || ( getToken ( 1 ) . kind == OPEN_BRACKET )
        || ( getToken ( 1 ) . kind == OPEN_BRACE   ) )
    {
      stack . addElement ( getToken ( 1 ) );
    }

        /* Are we inside something? */
    else if ( stack . isEmpty() == false )
    {
        /* Are we exiting something? */
      stackToken = (Token) ( stack . lastElement() );
      if (   (   ( stackToken     . kind == OPEN_PAREN    )
              && ( getToken ( 1 ) . kind == CLOSE_PAREN   ) )
          || (   ( stackToken     . kind == OPEN_BRACKET  )
              && ( getToken ( 1 ) . kind == CLOSE_BRACKET ) )
          || (   ( stackToken     . kind == OPEN_BRACE    )
              && ( getToken ( 1 ) . kind == CLOSE_BRACE   ) ) )
      {
        stack . removeLastElement();
      }

        /* Are we in error? */
      else if (   (   (     getToken ( 1 ) . kind == CLOSE_PAREN   )
                   || (     getToken ( 1 ) . kind == CLOSE_BRACKET )
                   || (     getToken ( 1 ) . kind == CLOSE_BRACE   ) )

               && (   (   ( stackToken     . kind == OPEN_PAREN    )
                       && ( getToken ( 1 ) . kind != CLOSE_PAREN   ) )
                   || (   ( stackToken     . kind == OPEN_BRACKET  )
                       && ( getToken ( 1 ) . kind != CLOSE_BRACKET ) )
                   || (   ( stackToken     . kind == OPEN_BRACE    )
                       && ( getToken ( 1 ) . kind != CLOSE_BRACE   ) ) ) )
      {
        throw generateParseException ( getToken ( 1 ),
                       "Encountered a \""  +  getToken ( 1 ) . image
                     + "\" at line " + (getToken ( 1 ) . beginLine + 1)
                     + " while looking for a match to \"" + stackToken.image
                     + "\" at line " + (stackToken . beginLine + 1)
                     + " in an Extern \"H\" { ... } statement.\n"
                     + "Parse Failed..." );
      }


        /* Spawn's can be embedded outside of tasks inside functions... */
      else if ( labeledSpawnToken != null )
      {
            /* Add in the current leading string(s) */
        currentLineNumber
          = parseFileInternal_addInCurrentLeadingStrings ( stringBuffer,
                                                           thisFile,
                                                           currentLineNumber );
            /* How far is this SPAWN indented?
	     * Note: getToken(1) may be a label, rather than the SPAWN token.
	     * (Which in turn makes for strange indentation...)
	     */
        if (   ( getToken ( 1 )   . beginColumn <= stackToken . beginColumn )
            || (labeledSpawnToken . beginColumn <= stackToken . beginColumn ) )
          spawnIndent = Math.max ( getToken ( 1 )    . beginColumn,
                                   labeledSpawnToken . beginColumn );
        else
          spawnIndent = Math.min ( getToken ( 1 )    . beginColumn,
                                   labeledSpawnToken . beginColumn );

            /* Snarf the task. */
        dataSpawnTask = parseLabeledSpawnTask ( null, spawnIndent );
                /* We are outside of the usual indenting procedures... So... */
        dataSpawnTask . setExtraIndent ( spawnIndent );
        thisFile . addSubcomponent ( dataSpawnTask );

            /* Go on to next parse... */
        continue;
      }

    } /* else if ( stack . isEmpty() == false ) */


        /* Otherwise:  General case... */
    else
    {
        /* Are we "#using" (including) another TDL file here? */
      if (   ( getToken ( 1 ) . kind == USING_FILE_STANDARD )
          || ( getToken ( 1 ) . kind == USING_FILE_QUOTE    ) )
      {
        currentLineNumber
          = parseFileSnarfFluffAndMaybeNextToken ( false, stringBuffer,
                                                   currentLineNumber   );

            /* Add in the current leading string(s) */
        currentLineNumber
          = parseFileInternal_addInCurrentLeadingStrings ( stringBuffer,
                                                           thisFile,
                                                           currentLineNumber );
            /* Add this using-file */
        thisFile . setIndex ( DataFile.USING_INDEX
                              + thisFile . getUsingFiles() . count() );
        thisFile . addUsingFileAndStripUsing ( getToken ( 1 ) . image );

            /* Go on to the next token... */
        getNextToken();

            /* Go on to next parse... */
        continue;
      }



                /*********************************************/
                /* Are we defining a extern "H" {} block ??? */
                /*********************************************/
      else if (   (   ( getToken ( 1 ) . kind == EXTERN_CS                )
                   || ( getToken ( 1 ) . kind == EXTERN_CI                ) )
               && (     getToken ( 2 ) . kind != EOF                        )
               && (     getToken ( 2 ) . image . equalsIgnoreCase ("\"H\"") )
               && (     getToken ( 3 ) . kind == OPEN_BRACE                 ) )
      {
            /* Add in the current leading string(s) */
        currentLineNumber
          = parseFileInternal_addInCurrentLeadingStrings ( stringBuffer,
                                                           thisFile,
                                                           currentLineNumber );

        thisFile . addSubcomponent ( parseDataExternH ( null ) );

            /* Go on to next parse... */
        continue;
      }



                /*********************************************************/
                /* Are we defining a distributed typedef/struct/enum ??? */
                /*********************************************************/
      else if (   (     getToken ( 1 ) . kind == DISTRIBUTED   )
               && (   ( getToken ( 2 ) . kind == STRUCT      )
                   || ( getToken ( 2 ) . kind == ENUM        )
                   || ( getToken ( 2 ) . kind == TYPEDEF     ) ) )
      {
            /* Add in the current leading string(s) */
        currentLineNumber
          = parseFileInternal_addInCurrentLeadingStrings ( stringBuffer,
                                                           thisFile,
                                                           currentLineNumber );
        try
        {
          if      ( getToken ( 2 ) . kind == TYPEDEF )
            thisFile . addSubcomponent ( parseDistributedTypedef() );
          else if ( getToken ( 2 ) . kind == STRUCT  )
            thisFile . addSubcomponent ( parseDistributedStruct(null) );
          else
            thisFile . addSubcomponent ( parseDistributedEnum(null) );

            /* Go on to next parse... */
          continue;
        }
        catch ( ParseException  theParseException )
        {
                /* Lets be a little bit more verbose here,        *
		 * so as not to confuse the end-users too much... */
          System.err.println ( TDLParser.getFilenameWithoutPathPlusColon()
                               + ( getToken ( 0 ) . beginLine + 1 )
                               + ":  Parse Error:  "
                               + "DISTRIBUTED struct/enum/typedef "
                               + "has unsupported declaration types." );
          throw theParseException;
        }
      }


                /*****************************/
                /* Are we defining a Task??? */
                /*****************************/
      else
      {
                /* Start checking with the next token. */
        indexToCheck = 1;

        do
        {
          needToCheckAdditionalToken = false;

                        /* Is it extern? */
          if (   (   ( getToken ( indexToCheck     ) . kind  == EXTERN_CS   )
                  || ( getToken ( indexToCheck     ) . kind  == EXTERN_CI   )

                        /* Is it PERSISTENT? */
                  || ( getToken ( indexToCheck     ) . kind  == PERSISTENT  )

                        /* Is it distributed? */
                  || ( getToken ( indexToCheck     ) . kind  == DISTRIBUTED )

                        /* Is it threaded? */
                  || ( getToken ( indexToCheck     ) . kind  == THREADED    ) )
              && (     getToken ( indexToCheck + 1 ) . kind  != EOF           )
             )
          {
                /* Need to check the next token. */
            indexToCheck ++;
            needToCheckAdditionalToken = true;
          }

        } while ( needToCheckAdditionalToken == true );


          /* Are we defining a task? */
        if (   ( getToken ( indexToCheck ) . kind == TASK      )
            || ( getToken ( indexToCheck ) . kind == GOAL      )
            || ( getToken ( indexToCheck ) . kind == COMMAND   )
            || ( getToken ( indexToCheck ) . kind == MONITOR   )
            || ( getToken ( indexToCheck ) . kind == EXCEPTION )
            || ( getToken ( indexToCheck ) . kind == HANDLER   )
            || ( getToken ( indexToCheck ) . kind == RESUME    ) )
        {
            /* Add in the current leading string(s) */
          currentLineNumber
            = parseFileInternal_addInCurrentLeadingStrings( stringBuffer,
                                                            thisFile,
                                                            currentLineNumber);
            /* Snarf the task. */
          thisFile . addSubcomponent ( parseFullTaskDefinition ( null ) );

            /* Go on to next parse... */
          continue;

        } /* IF ( Are we defining a task ) */

      } /* IF ( is a USING_FILE statement ) ....
	 * else if ( we are defining a task ) .... 
	 */

    } /* if ( "([{" ) ... else if ( "}])" ) ... else ... */


        /* Otherwise, just snarf the tokens into the stringbuffer, */
        /* so we can have one really big string rather than lots of */
        /* little strings... */
    currentLineNumber
      = parseFileSnarfFluffAndMaybeNextToken ( true, stringBuffer,
                                               currentLineNumber  );


            /* Go on to the next token... */
    getNextToken();

  } /* while ( getToken ( 1 ) . kind  !=  EOF ) */



        /* Snarf the EOF token... */
  currentLineNumber
    = parseFileSnarfFluffAndMaybeNextToken ( false, stringBuffer,
                                             currentLineNumber   );


        /* If we are still inside something, report an error... */
  if ( stack . isEmpty() == false )
  {
    throw generateParseException ( getToken ( 1 ),
                    "File ends while still inside nested C/C++ Code.\n"
                    + "File Parse Failure...\nExpected a match to: \""
                    + ( (Token) (stack . lastElement()) ) . image + "\"" );
  }

        /* Add in the current trailing string(s) */
  currentLineNumber
    = parseFileInternal_addInCurrentLeadingStrings ( stringBuffer,
                                                     thisFile,
                                                     currentLineNumber );
  return thisFile;
  }

  static DataExternH parseDataExternH(DataExternH theDataExternH) throws ParseException {
  DataVector    stack        = new DataVector ( 10 );
  Token         stackToken;

  DataExternH   thisDataExternH = (   ( theDataExternH != null )
                                    ?   theDataExternH
                                    :   new DataExternH() );


  if (   (   ( getToken ( 1 ) . kind == EXTERN_CS                   )
          || ( getToken ( 1 ) . kind == EXTERN_CI                   ) )
      && (     getToken ( 2 ) . kind != EOF                           )
      && (     getToken ( 2 ) . image . equalsIgnoreCase ( "\"H\"" )  )
      && (     getToken ( 3 ) . kind == OPEN_BRACE                    ) )
  {
    thisDataExternH . setLineNumber ( getToken ( 1 ) . beginLine + 1 );

    parseFluff ( thisDataExternH, getToken ( 1 ), 0 );
    thisDataExternH . setIndex ( DataExternH.EXTERN );

    parseFluff ( thisDataExternH, getToken ( 2 ), 0 );
    thisDataExternH . setIndex ( DataExternH.HEADER_STRING );

    parseFluff ( thisDataExternH, getToken ( 3 ), 0 );
    thisDataExternH . setIndex ( DataExternH.OPEN_BRACE );

        /* Snarf these 3 tokens. */
    getNextToken();
    getNextToken();
    getNextToken();
  }
  else
  {
        /* This should, in theory, never be reached. */
    throw generateParseException ( token,
                                   getToken ( 1 ),
                                     "Expected: 'EXTERN \"H\" {'.  "
                                   + "Found: '" + getToken(1).image + " "
                                   + getToken(2).image + " "
                                   + getToken(3).image + "\n" );
  }



  while (   (     getToken ( 1 ) . kind != EOF           )
         && (   ( getToken ( 1 ) . kind != CLOSE_BRACE )
             || (  stack . isEmpty()    == false       ) ) )
  {
        /* Are we entering something? */
    if (   ( getToken ( 1 ) . kind == OPEN_PAREN   )
        || ( getToken ( 1 ) . kind == OPEN_BRACKET )
        || ( getToken ( 1 ) . kind == OPEN_BRACE   ) )
    {
      stack . addElement ( getToken ( 1 ) );
    }

        /* Are we inside something? */
    else if ( stack . isEmpty() == false )
    {
        /* Are we exiting something? */
      stackToken = (Token) ( stack . lastElement() );
      if (   (   ( stackToken     . kind == OPEN_PAREN    )
              && ( getToken ( 1 ) . kind == CLOSE_PAREN   ) )
          || (   ( stackToken     . kind == OPEN_BRACKET  )
              && ( getToken ( 1 ) . kind == CLOSE_BRACKET ) )
          || (   ( stackToken     . kind == OPEN_BRACE    )
              && ( getToken ( 1 ) . kind == CLOSE_BRACE   ) ) )
      {
        stack . removeLastElement();
      }

        /* Are we in error? */
      else if (   (   (     getToken ( 1 ) . kind == CLOSE_PAREN   )
                   || (     getToken ( 1 ) . kind == CLOSE_BRACKET )
                   || (     getToken ( 1 ) . kind == CLOSE_BRACE   ) )

               && (   (   ( stackToken     . kind == OPEN_PAREN    )
                       && ( getToken ( 1 ) . kind != CLOSE_PAREN   ) )
                   || (   ( stackToken     . kind == OPEN_BRACKET  )
                       && ( getToken ( 1 ) . kind != CLOSE_BRACKET ) )
                   || (   ( stackToken     . kind == OPEN_BRACE    )
                       && ( getToken ( 1 ) . kind != CLOSE_BRACE   ) ) ) )
      {
        throw generateParseException ( getToken ( 1 ),
                       "Encountered a \""  +  getToken ( 1 ) . image
                     + "\" at line " + (getToken ( 1 ) . beginLine + 1)
                     + " while looking for a match to \"" + stackToken.image
                     + "\" at line " + (stackToken . beginLine + 1)
                     + "\nFile Parse Failed..." );
      }
    }

                /**************************************************/
                /* Special case:  Allow Distributed declars here. */
                /**************************************************/
    else if (   (     getToken ( 1 ) . kind == DISTRIBUTED   )
             && (   ( getToken ( 2 ) . kind == STRUCT      )
                 || ( getToken ( 2 ) . kind == ENUM        )
                 || ( getToken ( 2 ) . kind == TYPEDEF     ) ) )
    {
      try
      {
        if      ( getToken ( 2 ) . kind == TYPEDEF )
          thisDataExternH . addSubcomponent ( parseDistributedTypedef() );
        else if ( getToken ( 2 ) . kind == STRUCT  )
          thisDataExternH . addSubcomponent ( parseDistributedStruct(null) );
        else
          thisDataExternH . addSubcomponent ( parseDistributedEnum(null) );

            /* Go on to next parse... */
        continue;
      }
      catch ( ParseException  theParseException )
      {
                /* Lets be a little bit more verbose here,        *
		 * so as not to confuse the end-users too much... */
          System.err.println ( TDLParser.getFilenameWithoutPathPlusColon()
                               + ( getToken ( 0 ) . beginLine + 1 )
                               + ":  Parse Error:  "
                               + "DISTRIBUTED struct/enum/typedef "
                               + "has unsupported declaration types." );
          throw theParseException;
      }
    }




        /* Otherwise snarf the token. */
    parseFluff ( thisDataExternH, getToken ( 1 ), 0 );
    thisDataExternH . addSubcomponent ( getToken ( 1 ) . image );

            /* Go on to the next token... */
    getNextToken();

  } /* WHILE ( getToken(1) != EOF (or CLOSE_BRACE if stack empty) ) */



  if ( getToken ( 1 ) . kind == CLOSE_BRACE )
  {
    parseFluff ( thisDataExternH, getToken ( 1 ), 0 );
    thisDataExternH . setIndex ( DataExternH.CLOSE_BRACE );

    getNextToken();
  }
  else
  {
    throw generateParseException ( token,
                                   getToken ( 1 ),
                                     "Premature end of file.  "
                                   + "Expected: '}' at end of "
                                   + "'EXTERN \"H\" {' clause.\n" );
  }

  return thisDataExternH;
  }

/*******************************************/
/*** DISTRIBUTED typedef / struct / enum ***/
/*******************************************/
  static final public DataDistributedTypedef parseDistributedTypedef() throws ParseException {
  DataDistributedTypedef        thisTypedef = new DataDistributedTypedef();
  DataDistributedDeclarationSet thisDataDistributedDeclarationSet;
  Token                         token;
    token = jj_consume_token(DISTRIBUTED);
        parseFluff ( thisTypedef, token, 0 );
        thisTypedef . setIndex( DataDistributedTypedef.DISTRIBUTED );
    token = jj_consume_token(TYPEDEF);
        parseFluff ( thisTypedef, token, 0 );
        thisTypedef . setIndex( DataDistributedTypedef.TYPEDEF );
    /* DataTaskArguments, via DataDistributedDeclarationSet,       *
    	 * while not being designed for this purpose, are nevertheless *
    	 * ideally suited toward it.                                   */
        thisDataDistributedDeclarationSet = parseDistributedDeclarationSet(null);
        thisTypedef . setIndex ( DataDistributedTypedef.DECLARATION );
        thisTypedef
         . setDataDistributedDeclarationSet(thisDataDistributedDeclarationSet);
      {if (true) return thisTypedef;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDistributedStruct parseDistributedStruct(DataDistributedStruct theDataDistributedStruct) throws ParseException {
  DataDistributedStruct         thisStruct
                                  = (   ( theDataDistributedStruct != null )
                                      ?   theDataDistributedStruct
                                      :  new DataDistributedStruct() );

  Token                         token;
    token = jj_consume_token(DISTRIBUTED);
        parseFluff ( thisStruct, token, 0 );
        thisStruct . setIndex( DataDistributedStruct.DISTRIBUTED );
    parseDistributedStructInternal(thisStruct);
    token = jj_consume_token(SEMICOLON);
        parseFluff ( thisStruct, token, 0 );
        thisStruct . setIndex( DataDistributedStruct.SEMICOLON );
      {if (true) return thisStruct;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDistributedStruct parseDistributedStructInternal(DataDistributedStruct theDataDistributedStruct) throws ParseException {
  DataDistributedStruct         thisStruct
                                  = (   ( theDataDistributedStruct != null )
                                      ?   theDataDistributedStruct
                                      :  new DataDistributedStruct() );

  DataDistributedDeclarationSet dataDistributedDeclarationSet;
  int                           declarationCount = 0;
  Token                         token;
    token = jj_consume_token(STRUCT);
        parseFluff ( thisStruct, token, 0 );
        thisStruct . setIndex( DataDistributedStruct.STRUCT );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      token = parseIdToken();
          parseFluff ( thisStruct, token, 0 );
          thisStruct . setStructName ( token.image );
          thisStruct . setIndex ( DataDistributedStruct.NAME_INDEX );
      break;
    default:
      jj_la1[3] = jj_gen;
      ;
    }
    token = jj_consume_token(OPEN_BRACE);
        parseFluff ( thisStruct, token, 0 );
        thisStruct . setIndex ( DataDistributedStruct.OPEN_BRACE );
    label_2:
    while (true) {
      /* DataTaskArguments, via DataDistributedDeclarationSet,       *
      	 * while not being designed for this purpose, are nevertheless *
      	 * ideally suited toward it.                                   */
            dataDistributedDeclarationSet = parseDistributedDeclarationSet(null);
          thisStruct . setIndex ( DataDistributedStruct.DECLARATION
                                  + (declarationCount ++) );
          thisStruct . addDataDistributedDeclarationSet (
                                  dataDistributedDeclarationSet );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case IN:
      case OUT:
      case INOUT:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        ;
        break;
      default:
        jj_la1[4] = jj_gen;
        break label_2;
      }
    }
    token = jj_consume_token(CLOSE_BRACE);
        parseFluff ( thisStruct, token, 0 );
        thisStruct . setIndex( DataDistributedStruct.CLOSE_BRACE );
      {if (true) return thisStruct;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDistributedEnumEntry parseDataDistributedEnumEntry(DataDistributedEnumEntry theDataDistributedEnumEntry) throws ParseException {
  DataDistributedEnumEntry  thisEnumEntry
                              = (   ( theDataDistributedEnumEntry != null )
                                  ?   theDataDistributedEnumEntry
                                  :  new DataDistributedEnumEntry() );

  Token                     token, equalsToken;
  DataExpression            dataExpression;
    token = parseIdToken();
        parseFluff ( thisEnumEntry, token, 0 );
        thisEnumEntry . setId ( token.image );
        thisEnumEntry . setIndex ( DataDistributedEnumEntry.ID );
    if (jj_2_1(2147483647)) {
      equalsToken = jj_consume_token(EQUAL);
          parseFluff ( thisEnumEntry, equalsToken, 0 );
          thisEnumEntry . setIndex ( DataDistributedEnumEntry.EQUALS );
      parseConstantExpression();
                /* If this was a single <INTEGER_CONSTANT> */
          if (   ( equalsToken    . next == getToken ( 0 )   )
              && ( getToken ( 0 ) . kind == INTEGER_CONSTANT ) )
          {
            parseFluff ( thisEnumEntry, getToken(0), 0 );
            thisEnumEntry . setIndex ( DataDistributedEnumEntry.EQUALS_VALUE );
            thisEnumEntry . setPositiveIntegerEqualsString (getToken(0).image);
          }
          else
          {
            dataExpression = new DataExpression();
            parseMiscTokens ( dataExpression, equalsToken, 0 );

            thisEnumEntry . setIndex( DataDistributedEnumEntry.EQUALS_VALUE);
            thisEnumEntry . setGeneralEqualsExpression ( dataExpression );
          }
    } else {
      ;
    }
      {if (true) return thisEnumEntry;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDistributedEnum parseDistributedEnum(DataDistributedEnum theDataDistributedEnum) throws ParseException {
  DataDistributedEnum  thisEnum = (   ( theDataDistributedEnum != null )
                                    ?   theDataDistributedEnum
                                    :  new DataDistributedEnum() );

  DataDistributedEnumEntry     dataDistributedEnumEntry;
  int                          enumEntryCount = 0;
  Token                        token;
    token = jj_consume_token(DISTRIBUTED);
        parseFluff ( thisEnum, token, 0 );
        thisEnum . setIndex( DataDistributedEnum.DISTRIBUTED );
    parseDistributedEnumInternal(thisEnum);
    token = jj_consume_token(SEMICOLON);
        parseFluff ( thisEnum, token, 0 );
        thisEnum . setIndex ( DataDistributedEnum.SEMICOLON );
      {if (true) return thisEnum;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDistributedEnum parseDistributedEnumInternal(DataDistributedEnum theDataDistributedEnum) throws ParseException {
  DataDistributedEnum  thisEnum = (   ( theDataDistributedEnum != null )
                                    ?   theDataDistributedEnum
                                    :  new DataDistributedEnum() );

  DataDistributedEnumEntry     dataDistributedEnumEntry;
  int                          enumEntryCount = 0;
  Token                        token;
    token = jj_consume_token(ENUM);
        parseFluff ( thisEnum, token, 0 );
        thisEnum . setIndex( DataDistributedEnum.ENUM );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      token = parseIdToken();
          parseFluff ( thisEnum, token, 0 );
          thisEnum . setEnumName ( token.image );
          thisEnum . setIndex ( DataDistributedEnum.NAME_INDEX );
      break;
    default:
      jj_la1[5] = jj_gen;
      ;
    }
    token = jj_consume_token(OPEN_BRACE);
        parseFluff ( thisEnum, token, 0 );
        thisEnum . setIndex ( DataDistributedEnum.OPEN_BRACE );
    dataDistributedEnumEntry = parseDataDistributedEnumEntry(null);
        thisEnum . setIndex ( DataDistributedEnum.ENUM_ENTRY
                              + (enumEntryCount ++) );
        thisEnum . addDataDistributedEnumEntry ( dataDistributedEnumEntry );
    label_3:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[6] = jj_gen;
        break label_3;
      }
      token = jj_consume_token(COMMA);
          parseFluff ( thisEnum, token, 0 );
          thisEnum . setIndex ( DataDistributedEnum.COMMA + enumEntryCount );
      dataDistributedEnumEntry = parseDataDistributedEnumEntry(null);
          thisEnum . setIndex ( DataDistributedEnum.ENUM_ENTRY
                                + (enumEntryCount ++) );
          thisEnum . addDataDistributedEnumEntry ( dataDistributedEnumEntry );
    }
    token = jj_consume_token(CLOSE_BRACE);
        parseFluff ( thisEnum, token, 0 );
        thisEnum . setIndex ( DataDistributedEnum.CLOSE_BRACE );
      {if (true) return thisEnum;}
    throw new Error("Missing return statement in function");
  }

/***********************/
/*** Task Definition ***/
/***********************/
  static final public DataTaskDefinition parseFullTaskDefinition(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataTaskDefinition     returnValue;
  DataCompoundStatement  dataCompoundStatement;
  DataTaskDefinition     thisTask = (   ( theDataTaskDefinition != null )
                                      ?   theDataTaskDefinition
                                      :  new DataTaskDefinition() );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
    case EXTERN_CI:
      returnValue = parseExternTaskDefinition(thisTask);
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case PERSISTENT:
    case DISTRIBUTED:
    case THREADED:
      if (jj_2_2(4)) {
        returnValue = parseActualTaskDefinition_Rest(thisTask);
                setParsingTask ( returnValue );
        dataCompoundStatement = parseCompoundStatement(0);
                clearParsingTask();
                returnValue . setTaskBody ( dataCompoundStatement );
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXCEPTION:
          returnValue = parseActualTaskDefinition_Exception(thisTask);
          break;
        default:
          jj_la1[7] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[8] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseTaskDefinitionHead(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataTaskDefinition  returnValue;
  DataTaskDefinition  thisTask = (   ( theDataTaskDefinition != null )
                                   ?   theDataTaskDefinition
                                   :  new DataTaskDefinition() );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
    case EXTERN_CI:
      returnValue = parseExternTaskDefinition(thisTask);
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case PERSISTENT:
    case DISTRIBUTED:
    case THREADED:
      if (jj_2_3(4)) {
        /* Deal with: "<EXCEPTION> <HANDLER>"     and       *
        			 * [<distributed>] [<persistent>] [<threaded>] GOAL */
        
                  returnValue = parseActualTaskDefinition_Rest(thisTask);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXCEPTION:
          returnValue = parseActualTaskDefinition_Exception(thisTask);
          break;
        default:
          jj_la1[9] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[10] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseExternTaskDefinition(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token               token;
  DataTaskDefinition  thisTask = (   ( theDataTaskDefinition != null )
                                   ?   theDataTaskDefinition
                                   :  new DataTaskDefinition() );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
      token = jj_consume_token(EXTERN_CS);
      break;
    case EXTERN_CI:
      token = jj_consume_token(EXTERN_CI);
      break;
    default:
      jj_la1[11] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
          if ( thisTask . addExternKeywordToTaskLeadsOrder() == false )
          {
            {if (true) throw generateParseException ( token,
                                "Task may NOT have more than one "
                                + "\"EXTERN\" keyword." );}
          }
          parseFluff ( thisTask, token, 0 );
          thisTask . setIndex ( DataTaskDefinition.EXTERN );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
      parseTaskDefinitionInternal_Task(thisTask);
      break;
    case GOAL:
      parseTaskDefinitionInternal_Goal(thisTask);
      break;
    case COMMAND:
      parseTaskDefinitionInternal_Command(thisTask);
      break;
    case MONITOR:
      parseTaskDefinitionInternal_Monitor(thisTask);
      break;
    case RESUME:
      parseTaskDefinitionInternal_Resume(thisTask);
      break;
    case EXCEPTION:
    case HANDLER:
      if (jj_2_4(2)) {
        parseTaskDefinitionInternal_Handler(thisTask);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXCEPTION:
          parseTaskDefinitionInternal_Exception(thisTask);
          break;
        default:
          jj_la1[12] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[13] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    token = jj_consume_token(SEMICOLON);
        parseFluff ( thisTask, token, 0 );
        thisTask . setIndex ( DataTaskDefinition.SEMICOLON );
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseActualTaskDefinition_Exception(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataTaskDefinition thisTask = (   ( theDataTaskDefinition != null )
                                  ?   theDataTaskDefinition
                                  :  new DataTaskDefinition() );
  DataSpawnTask      exceptionBaseTask;
  Token              token;
  DataConstraint     formatDataConstraint;

  thisTask . setIsExtern ( false );
    parseTaskDefinitionInternal_Exception(thisTask);
    if (jj_2_5(2147483647)) {
      token = jj_consume_token(COLON);
              parseFluff ( thisTask, token, 0 );
              thisTask . setIndex ( DataTaskDefinition.COLON );
      exceptionBaseTask = parseSpawnTask_TaskOnly(null, 0);
              thisTask . setExceptionBaseTask ( exceptionBaseTask );
    } else {
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case FORMAT:
    case WITH:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case WITH:
        parseTaskDefinitionWith(thisTask);
        break;
      default:
        jj_la1[14] = jj_gen;
        ;
      }
      formatDataConstraint = parseFormatConstraint(null, 0);
              thisTask . addConstraint ( formatDataConstraint );
              if ( getToken ( 1 ) . kind != SEMICOLON )
              {
                {if (true) throw generateParseException ( getToken(1),
                    "Next token should have been a SEMICOLON.  "
                  + "Instead found \"" + getToken(1).image + "\"." );}
              }
      break;
    default:
      jj_la1[15] = jj_gen;
      ;
    }
    /* Exceptions must be followed by a semicolon. */
            token = jj_consume_token(SEMICOLON);
            parseFluff ( thisTask, token, 0 );
            thisTask . setIndex ( DataTaskDefinition.SEMICOLON );
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseActualTaskDefinition_Rest(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataTaskDefinition thisTask = (   ( theDataTaskDefinition != null )
                                  ?   theDataTaskDefinition
                                  :  new DataTaskDefinition() );
  DataConstraint     dataConstraint;
  DataSpawnTask      exceptionBaseTask;
  Token              token;

  thisTask . setIsExtern ( false );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
      parseTaskDefinitionInternal_Task(thisTask);
      break;
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case PERSISTENT:
    case DISTRIBUTED:
    case THREADED:
      if (jj_2_6(4)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERSISTENT:
        case DISTRIBUTED:
        case THREADED:
          parseTaskDefinitionInternal_Distributed_Persistent_Threaded(thisTask);
          break;
        default:
          jj_la1[16] = jj_gen;
          ;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case GOAL:
        case COMMAND:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case GOAL:
            parseTaskDefinitionInternal_Goal(thisTask);
            break;
          case COMMAND:
            parseTaskDefinitionInternal_Command(thisTask);
            break;
          default:
            jj_la1[17] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case EXCEPTION:
          case HANDLER:
          case EXPAND:
          case DELAY:
          case ON:
          case PERSISTENT:
          case FORMAT:
          case EXPAND_FIRST:
          case DELAY_EXPANSION:
          case ON_TERMINATE:
          case WITH:
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case WITH:
              parseTaskDefinitionWith(thisTask);
              break;
            default:
              jj_la1[18] = jj_gen;
              ;
            }
            parseSimpleConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            label_4:
            while (true) {
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                ;
                break;
              default:
                jj_la1[19] = jj_gen;
                break label_4;
              }
              jj_consume_token(COMMA);
              parseSimpleConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            }
            break;
          default:
            jj_la1[20] = jj_gen;
            ;
          }
          break;
        case MONITOR:
          parseTaskDefinitionInternal_Monitor(thisTask);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case EXCEPTION:
          case HANDLER:
          case EXPAND:
          case DELAY:
          case SEQUENTIAL:
          case SERIAL:
          case MAXIMUM:
          case MONITOR_PERIOD:
          case ON:
          case PERSISTENT:
          case FORMAT:
          case EXPAND_FIRST:
          case DELAY_EXPANSION:
          case SEQUENTIAL_HANDLING:
          case SEQUENTIAL_EXPANSION:
          case SEQUENTIAL_EXECUTION:
          case SEQUENTIAL_PLANNING:
          case SEQUENTIAL_ACHIEVEMENT:
          case MAXIMUM_ACTIVATE:
          case MAXIMUM_TRIGGER:
          case ON_TERMINATE:
          case WITH:
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case WITH:
              parseTaskDefinitionWith(thisTask);
              break;
            default:
              jj_la1[21] = jj_gen;
              ;
            }
            parseMonitorConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            label_5:
            while (true) {
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                ;
                break;
              default:
                jj_la1[22] = jj_gen;
                break label_5;
              }
              jj_consume_token(COMMA);
              parseMonitorConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            }
            break;
          default:
            jj_la1[23] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[24] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXCEPTION:
        case HANDLER:
          parseTaskDefinitionInternal_Handler(thisTask);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case WITH:
            parseTaskDefinitionWith(thisTask);
            break;
          default:
            jj_la1[25] = jj_gen;
            ;
          }
          label_6:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case MAXIMUM:
            case PERSISTENT:
            case FORMAT:
            case MAXIMUM_ACTIVATE:
              ;
              break;
            default:
              jj_la1[26] = jj_gen;
              break label_6;
            }
            parseHandlerConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            jj_consume_token(COMMA);
          }
          /* Require exception handler "handles" clause */
                     token = jj_consume_token(HANDLES);
               parseFluff ( thisTask, token, 0 );
               thisTask . setIndex ( DataTaskDefinition.HANDLES );
          token = parseIdToken();
               parseFluff ( thisTask, token, 0 );
               thisTask . setIndex ( DataTaskDefinition.HANDLES_INDEX );
               thisTask . setHandlesException ( token.image );
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            /* Allow optional constraints here */
                         token = jj_consume_token(COMMA);
                 parseFluff ( thisTask, token, 0 );
                 thisTask . setIndex( DataTaskDefinition.HANDLES_COMMA_INDEX );
            parseHandlerConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            label_7:
            while (true) {
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case COMMA:
                ;
                break;
              default:
                jj_la1[27] = jj_gen;
                break label_7;
              }
              jj_consume_token(COMMA);
              parseHandlerConstraintOrPersistentOrFormatAndTrailingFluff(thisTask);
            }
            break;
          default:
            jj_la1[28] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[29] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case RESUME:
      parseTaskDefinitionInternal_Resume(thisTask);
      break;
    default:
      jj_la1[30] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        /* TASK_BODY_INDEX doesn't really do much anymore.               *
	 * Its functionality has been superseded by HANDLES_COMMA_INDEX. */
      thisTask . setIndex ( DataTaskDefinition.TASK_BODY_INDEX );
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseTaskDefinitionInternal_Distributed(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token              token;
  DataTaskDefinition thisTask = (   ( theDataTaskDefinition != null )
                                  ?   theDataTaskDefinition
                                  :  new DataTaskDefinition() );
    token = jj_consume_token(DISTRIBUTED);
      if ( thisTask . addDistributedKeywordToTaskLeadsOrder() == false )
      {
        {if (true) throw generateParseException ( token,
                                         "Task may NOT have more than one "
                                       + "\"DISTRIBUTED\" keyword." );}
      }
      parseFluff ( thisTask, token, 0 );
      thisTask . setIndex ( DataTaskDefinition.DISTRIBUTED );
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseTaskDefinitionInternal_Persistent(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token              token;
  DataTaskDefinition thisTask = (   ( theDataTaskDefinition != null )
                                  ?   theDataTaskDefinition
                                  :  new DataTaskDefinition() );
    token = jj_consume_token(PERSISTENT);
        if ( thisTask . addPersistentKeywordToTaskLeadsOrder() == false )
        {
          {if (true) throw generateParseException ( token,
                                           "Task may NOT have more than one "
                                         + "\"PERSISTENT\" keyword." );}
        }
        parseFluff ( thisTask, token, 0 );
        thisTask . setIndex ( DataTaskDefinition.PERSISTENT );
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseTaskDefinitionInternal_Threaded(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token              token;
  DataTaskDefinition thisTask = (   ( theDataTaskDefinition != null )
                                  ?   theDataTaskDefinition
                                  :  new DataTaskDefinition() );
    token = jj_consume_token(THREADED);
        if ( thisTask . addThreadedKeywordToTaskLeadsOrder() == false )
        {
          {if (true) throw generateParseException ( token,
                                           "Task may NOT have more than one "
                                         + "\"THREADED\" keyword." );}
        }
        parseFluff ( thisTask, token, 0 );
        thisTask . setIndex ( DataTaskDefinition.THREADED );
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskDefinition parseTaskDefinitionInternal_Distributed_Persistent_Threaded(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataTaskDefinition thisTask = (   ( theDataTaskDefinition != null )
                                  ?   theDataTaskDefinition
                                  :  new DataTaskDefinition() );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DISTRIBUTED:
      parseTaskDefinitionInternal_Distributed(thisTask);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PERSISTENT:
        parseTaskDefinitionInternal_Persistent(thisTask);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case THREADED:
          parseTaskDefinitionInternal_Threaded(thisTask);
          break;
        default:
          jj_la1[31] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[34] = jj_gen;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case THREADED:
          parseTaskDefinitionInternal_Threaded(thisTask);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case PERSISTENT:
            parseTaskDefinitionInternal_Persistent(thisTask);
            break;
          default:
            jj_la1[32] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[33] = jj_gen;
          ;
        }
      }
      break;
    case PERSISTENT:
      parseTaskDefinitionInternal_Persistent(thisTask);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DISTRIBUTED:
        parseTaskDefinitionInternal_Distributed(thisTask);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case THREADED:
          parseTaskDefinitionInternal_Threaded(thisTask);
          break;
        default:
          jj_la1[35] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[38] = jj_gen;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case THREADED:
          parseTaskDefinitionInternal_Threaded(thisTask);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case DISTRIBUTED:
            parseTaskDefinitionInternal_Distributed(thisTask);
            break;
          default:
            jj_la1[36] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[37] = jj_gen;
          ;
        }
      }
      break;
    case THREADED:
      parseTaskDefinitionInternal_Threaded(thisTask);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DISTRIBUTED:
        parseTaskDefinitionInternal_Distributed(thisTask);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERSISTENT:
          parseTaskDefinitionInternal_Persistent(thisTask);
          break;
        default:
          jj_la1[39] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[42] = jj_gen;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERSISTENT:
          parseTaskDefinitionInternal_Persistent(thisTask);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case DISTRIBUTED:
            parseTaskDefinitionInternal_Distributed(thisTask);
            break;
          default:
            jj_la1[40] = jj_gen;
            ;
          }
          break;
        default:
          jj_la1[41] = jj_gen;
          ;
        }
      }
      break;
    default:
      jj_la1[43] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisTask;}
    throw new Error("Missing return statement in function");
  }

  static final public void parseTaskDefinitionInternal_Task(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
    token = jj_consume_token(TASK);
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.TASK_TASK,
                                            token, null);

  }

  static final public void parseTaskDefinitionInternal_Goal(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
    token = jj_consume_token(GOAL);
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.GOAL_TASK,
                                            token, null);

  }

  static final public void parseTaskDefinitionInternal_Command(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
    token = jj_consume_token(COMMAND);
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.COMMAND_TASK,
                                            token, null);

  }

  static final public void parseTaskDefinitionInternal_Monitor(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
    token = jj_consume_token(MONITOR);
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.MONITOR_TASK,
                                            token, null);

  }

  static final public void parseTaskDefinitionInternal_Exception(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
    token = jj_consume_token(EXCEPTION);
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.EXCEPTION_TASK,
                                            token, null);

  }

  static final public void parseTaskDefinitionInternal_Handler(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
  Token  token2 = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXCEPTION:
      token2 = jj_consume_token(EXCEPTION);
      token = jj_consume_token(HANDLER);
      break;
    case HANDLER:
      token = jj_consume_token(HANDLER);
      break;
    default:
      jj_la1[44] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.HANDLER_TASK,
                                            token, token2);

  }

  static final public void parseTaskDefinitionInternal_Resume(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  token;
    token = jj_consume_token(RESUME);
    parseTaskDefinitionInternals_Rest(theDataTaskDefinition,
                                            DataTaskDefinition.RESUME_TASK,
                                            token, null);

  }

  static final public void parseTaskDefinitionInternals_Rest(DataTaskDefinition theDataTaskDefinition,
                                    int                theTaskType,
                                    Token              token,
                                    Token              token2) throws ParseException {
  DataTaskArgument  tmpDataTaskArgument = null;

        /************************************/
        /* Handle Parsing of token / token2 */
        /************************************/

  theDataTaskDefinition . setTaskType ( theTaskType );

                /* Only parse "Task" Tasks when we are external... */
  if (    ( token.kind == TASK )
       && ( theDataTaskDefinition . getIsExtern() == false ) )
  {
    throw generateParseException ( token,
                                     "Can only use Task-Type of "
                                   + "\"Task\" with extern tasks." );
  }
  if ( token2 != null )
  {
    parseFluff ( theDataTaskDefinition, token2, 0 );
    theDataTaskDefinition . setIndex ( DataTaskDefinition.TASK_TYPE_INDEX
                                       + "0" );
  }
  parseFluff ( theDataTaskDefinition, token, 0 );
  theDataTaskDefinition . setIndex( DataTaskDefinition.TASK_TYPE_INDEX );
    token = parseTaskName(theDataTaskDefinition);
        parseFluff ( theDataTaskDefinition, token, 0 );
        theDataTaskDefinition
          . setTaskNameWithoutParsingOrRegistration ( token.image );
        theDataTaskDefinition . setIndex( DataTaskDefinition.TASK_NAME_INDEX );
        theDataTaskDefinition . setLineNumber ( token.beginLine + 1 );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( theDataTaskDefinition, token, 0 );
        theDataTaskDefinition . setIndex ( DataTaskDefinition.OPEN_PAREN );
    if (jj_2_7(2147483647)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case VOID:
        token = jj_consume_token(VOID);
                parseFluff ( theDataTaskDefinition, token, 0 );
                theDataTaskDefinition . addSubcomponent ( token.image );
        break;
      default:
        jj_la1[45] = jj_gen;
        ;
      }
      token = jj_consume_token(CLOSE_PAREN);
              parseFluff ( theDataTaskDefinition, token, 0 );
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case IN:
      case OUT:
      case INOUT:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        tmpDataTaskArgument = parseTaskArgument(null);
              theDataTaskDefinition . addTaskArgument ( tmpDataTaskArgument );
        label_8:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case COMMA:
            ;
            break;
          default:
            jj_la1[46] = jj_gen;
            break label_8;
          }
          jj_consume_token(COMMA);
          /* parseTaskArgument() dealt with this token's fluff */
          
                      tmpDataTaskArgument = parseTaskArgument(null);
                theDataTaskDefinition . addTaskArgument( tmpDataTaskArgument );
        }
        jj_consume_token(CLOSE_PAREN);
        break;
      default:
        jj_la1[47] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
        theDataTaskDefinition . setIndex ( DataTaskDefinition.CLOSE_PAREN );

  }

  static final public Token parseTaskName(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token               taskNameToken;
  DataTaskDefinition  previouslyRegisteredTask;
    taskNameToken = parseIdToken();
        /* Note:  We now permit multiple tasks to be registered under the
	 * same name.  However:  Overloading of exception tasks is prohibited.
	 * The the types must match.  And the Distributed/Non-Distributed
	 * nature must match.
	 *
	 * Caveat:  This functionality occurs in two places.  Here and in
	 * DataTaskDefinition.registerTask(DataTaskDefinition).  The code
	 * here is only invoked after the tasks are registered, which currently
	 * only occurs after the entire file is read and parsed...  It is still
	 * useful in the event one is parsing multiple files, and registering
	 * tasks inbetween them.  But, by and large, this code is
	 * NEVER ACTUALLY UTILIZED.
	 */

      previouslyRegisteredTask
        = DataTaskDefinition.getFirstTaskForName ( taskNameToken . image );

        /* Check for overloaded exception tasks */
      if (   ( previouslyRegisteredTask != null                  )
          && ( theDataTaskDefinition    != null                  )
          && (   (    previouslyRegisteredTask . getTaskType()
                   == DataTaskDefinition.EXCEPTION_TASK        )
              || (    theDataTaskDefinition    . getTaskType()
                   == DataTaskDefinition.EXCEPTION_TASK        ) ) )
      {
        {if (true) throw generateParseException (
          taskNameToken,
            "TASK \"" + taskNameToken . image + "\" is both overloaded and "
          + "of type \"Exception\".  Overloading is not permitted for "
          + "\"Exception\" tasks.  "
          + "Please choose another name for this task." );}
      }

        /* Check for Task-Type disagreement */
      if (   (    previouslyRegisteredTask != null         )
          && (    theDataTaskDefinition    != null         )
          && (    previouslyRegisteredTask . getTaskType()
               != theDataTaskDefinition    . getTaskType() ) )
      {
        {if (true) throw generateParseException (
          taskNameToken,
            "TASK \"" + taskNameToken . image + "\" is of type \""
          + theDataTaskDefinition . getTaskTypeString()
          + "\".  Task \"" + taskNameToken . image
          + "\" is overloaded, and was previously declared (registered) under "
          + "type \""
          + previouslyRegisteredTask . getTaskTypeString()
          + "\".  These Task-Types are supposed to be the same, as one of "
          + "these Tasks will wind up being allocated with the other's "
          + "Task-Type, creating issues with constraint satisfaction.  "
          + "Please choose another name for this task, "
          + "or make both of them the same Task-Type." );}
      }

        /* Check for Distributed/Non-Distributed disagreement.
	 * (For now, assume theDataTaskDefinition will have already
	 *  had its DISTRIBUTED flag set/unset appropriately.)
	 */
      if (   (    previouslyRegisteredTask != null              )
          && (    theDataTaskDefinition    != null              )
          && (    previouslyRegisteredTask . getIsDistributed()
               != theDataTaskDefinition    . getIsDistributed() ) )
      {
        {if (true) throw generateParseException (
          taskNameToken,
            "TASK \"" + taskNameToken . image + "\" is \""
          + (theDataTaskDefinition    . getIsDistributed() ? "" : "NON-")
          + "DISTRIBUTED\".  Task \"" + taskNameToken . image
          + "\" is overloaded, and was previously declared (registered) as \""
          + (previouslyRegisteredTask . getIsDistributed() ? "" : "NON-")
          + "DISTRIBUTED\".  This DISTRIBUTED nature must be the "
          + "same between overloaded tasks, as one of these Tasks will wind "
          + "up being allocated with the other's DISTRIBUTED/NON-DISTRIBUTED "
          + "allocation function, with the associated problems.  "
          + "Please choose another name for this task, make both of them "
          + "\"DISTRIBUTED\", or make both of them \"NON-DISTRIBUTED\"." );}
      }

      {if (true) return taskNameToken;}
    throw new Error("Missing return statement in function");
  }

  static final public void parseTaskDefinitionWith(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  Token  withToken;
    withToken = jj_consume_token(WITH);
        theDataTaskDefinition . setHasWithKeyword ( true );
        parseFluff ( theDataTaskDefinition, withToken, 0 );
        theDataTaskDefinition . setIndex ( theDataTaskDefinition.WITH );

  }

  static final public DataComponent parsePersistentTaskData(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataTaskArgument  dataTaskArgument = null;
  Token             token;
    token = jj_consume_token(PERSISTENT);
        dataTaskArgument = new DataTaskArgument();
        parseFluff ( dataTaskArgument, token, 0 );
        dataTaskArgument . setIndex ( DataTaskArgument.PERSISTENT );
        dataTaskArgument . setIsPersistentDeclaration ( true );
    parseTaskArgumentNoFormat(dataTaskArgument);
        theDataTaskDefinition
          . addPersistentTaskDeclaration ( dataTaskArgument );
      {if (true) return dataTaskArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseFormatConstraint(DataConstraint  theDataConstraint,
                        int             theUnIndent) throws ParseException {
  DataConstraint      thisConstraint = (   ( theDataConstraint != null )
                                         ?   theDataConstraint
                                         :   new DataConstraint() );
  Token               formatToken;
  DataExpression      formatStringDataExpression;

  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    formatToken = jj_consume_token(FORMAT);
        thisConstraint.setConstraintType ( DataConstraint.DISTRIBUTED_FORMAT );
        thisConstraint . setLineNumber ( formatToken.beginLine + 1 );
        parseFluff ( thisConstraint, formatToken, theUnIndent );
        thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );
    /* This will handle strings with IDs in them too. */
    //da0g: Double-check #line number macros
        formatStringDataExpression = parseConstantExpressionObject(0);
        thisConstraint
         . setDistributedFormatStringExpression ( formatStringDataExpression );
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

    /* Note: Only parses trailing fluff if next subsequent token is a comma. */
  static final public DataComponent parseSimpleConstraintOrPersistentOrFormatAndTrailingFluff(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataConstraint   dataConstraint        = null;
  DataComponent    returnValue           = null;
  boolean          foundFormatConstraint = false;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PERSISTENT:
      returnValue = parsePersistentTaskData(theDataTaskDefinition);
      break;
    case FORMAT:
      dataConstraint = parseFormatConstraint(null, 0);
          theDataTaskDefinition . addConstraint ( dataConstraint );
          returnValue           = dataConstraint;
          foundFormatConstraint = true;
      break;
    case EXCEPTION:
    case HANDLER:
    case EXPAND:
    case DELAY:
    case ON:
    case EXPAND_FIRST:
    case DELAY_EXPANSION:
    case ON_TERMINATE:
      dataConstraint = parseSimpleConstraint(null, 0);
          theDataTaskDefinition . addConstraint ( dataConstraint );
          returnValue = dataConstraint;
      break;
    default:
      jj_la1[48] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      if ( foundFormatConstraint == true )
        checkForTrailingCommaOrOpenBraceOrStringOrMacroString ( getToken(1) );
      else
        checkForTrailingCommaOrOpenBrace ( getToken(1) );

      processTrailingFluffBeforeTheseTokenKindsOnly (
                                   returnValue, getToken(1), 0, COMMA, COMMA );
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

    /* Note: Only parses trailing fluff if next subsequent token is a comma. */
  static final public DataComponent parseMonitorConstraintOrPersistentOrFormatAndTrailingFluff(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataConstraint   dataConstraint        = null;
  DataComponent    returnValue           = null;
  boolean          foundFormatConstraint = false;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PERSISTENT:
      returnValue = parsePersistentTaskData(theDataTaskDefinition);
      break;
    case FORMAT:
      dataConstraint = parseFormatConstraint(null, 0);
          theDataTaskDefinition . addConstraint ( dataConstraint );
          returnValue           = dataConstraint;
          foundFormatConstraint = true;
      break;
    case EXCEPTION:
    case HANDLER:
    case EXPAND:
    case DELAY:
    case SEQUENTIAL:
    case SERIAL:
    case MAXIMUM:
    case MONITOR_PERIOD:
    case ON:
    case EXPAND_FIRST:
    case DELAY_EXPANSION:
    case SEQUENTIAL_HANDLING:
    case SEQUENTIAL_EXPANSION:
    case SEQUENTIAL_EXECUTION:
    case SEQUENTIAL_PLANNING:
    case SEQUENTIAL_ACHIEVEMENT:
    case MAXIMUM_ACTIVATE:
    case MAXIMUM_TRIGGER:
    case ON_TERMINATE:
      dataConstraint = parseMonitorConstraint(null, 0);
          theDataTaskDefinition . addConstraint ( dataConstraint );
          returnValue = dataConstraint;
      break;
    default:
      jj_la1[49] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      if ( foundFormatConstraint == true )
        checkForTrailingCommaOrOpenBraceOrStringOrMacroString ( getToken(1) );
      else
        checkForTrailingCommaOrOpenBrace ( getToken(1) );

      processTrailingFluffBeforeTheseTokenKindsOnly (
                                   returnValue, getToken(1), 0, COMMA, COMMA );
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

    /* Note: Only parses trailing fluff if next subsequent token is a comma. */
  static final public DataComponent parseHandlerConstraintOrPersistentOrFormatAndTrailingFluff(DataTaskDefinition theDataTaskDefinition) throws ParseException {
  DataConstraint   dataConstraint        = null;
  DataComponent    returnValue           = null;
  boolean          foundFormatConstraint = false;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PERSISTENT:
      returnValue = parsePersistentTaskData(theDataTaskDefinition);
      break;
    case FORMAT:
      dataConstraint = parseFormatConstraint(null, 0);
          theDataTaskDefinition . addConstraint ( dataConstraint );
          returnValue           = dataConstraint;
          foundFormatConstraint = true;
      break;
    case MAXIMUM:
    case MAXIMUM_ACTIVATE:
      dataConstraint = parseHandlerConstraint(null, 0);
          theDataTaskDefinition . addConstraint ( dataConstraint );
          returnValue = dataConstraint;
      break;
    default:
      jj_la1[50] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      if ( foundFormatConstraint == true )
        checkForTrailingCommaOrOpenBraceOrStringOrMacroString ( getToken(1) );
      else
        checkForTrailingCommaOrOpenBrace ( getToken(1) );

      processTrailingFluffBeforeTheseTokenKindsOnly (
                                   returnValue, getToken(1), 0, COMMA, COMMA );
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

/**********************/
/*** Task Arguments ***/
/**********************/
  static final public DataTaskArgument parseTaskArgumentDeclarator(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  Token startToken = getToken(0);
  Token token;
    label_9:
    while (true) {
      if (jj_2_8(2147483647)) {
        ;
      } else {
        break label_9;
      }
      parsePtrOperator();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      token = parseArgumentNameToken();
            parseMiscTokensIgnoringLast ( thisArgument, startToken, 0 );
            parseFluff ( thisArgument, token, 0 );
            startToken = token;
            thisArgument . setArgumentNameWithoutParsingChecks ( token.image );
            thisArgument . setIndex ( DataTaskArgument.ARGUMENT_NAME_INDEX );
      break;
    case OPEN_PAREN:
      token = jj_consume_token(OPEN_PAREN);
              parseMiscTokens ( thisArgument, startToken, 0 );
              startToken = token;
      parseTaskArgumentDeclarator(thisArgument);
      token = jj_consume_token(CLOSE_PAREN);
              parseFluff ( thisArgument, token, 0 );
              thisArgument . addSubcomponent ( token.image );
              startToken = token;
      break;
    default:
      jj_la1[51] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    label_10:
    while (true) {
      if (jj_2_9(2147483647)) {
        ;
      } else {
        break label_10;
      }
      parseDeclarator_Subpart();
    }
      parseMiscTokens ( thisArgument, startToken, 0 );
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgumentDeclaration(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  Token startToken;
  Token token;

        /* Erase any argument-equals-index... */
  thisArgument . removeIndex ( DataTaskArgument.ARGUMENT_EQUALS_INDEX );
    parseTaskArgumentDeclarator(thisArgument);
        startToken = getToken(0);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
      token = jj_consume_token(EQUAL);
            parseMiscTokens ( thisArgument, startToken, 0 );
            startToken = token;
                /* Set this to the subcomponent index OF the equals */
            thisArgument
              . setIndex ( DataTaskArgument.ARGUMENT_EQUALS_INDEX,
                           thisArgument . getSubcomponentsCount() - 1 );
      parseAssignmentExpression();
          parseMiscTokens ( thisArgument, startToken, 0 );
      break;
    default:
      jj_la1[52] = jj_gen;
      ;
    }
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  /* Deals with parsing valid C++ code for the Task Argument. */
  static final public DataTaskArgument parseTaskArgument_WithoutArgDir_validCxxCode(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  Token startToken = getToken(0);
  Token token;
    parseDeclSpecifier();
        parseMiscTokens ( thisArgument, startToken, 0 );
    if (jj_2_10(2147483647)) {
      parseTaskArgumentDeclaration(thisArgument);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        parseTaskArgument_WithoutArgDir_validCxxCode(thisArgument);
        break;
      default:
        jj_la1[53] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgument_TrailingDistributedFormatString(DataTaskArgument theDataTaskArgument,
                                       int              theUnIndent) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  Token             token;
  DataExpression    constantDataExpression;
    token = jj_consume_token(FORMAT);
        parseFluff ( thisArgument, token, theUnIndent );
        thisArgument . setIndex ( DataTaskArgument.FORMAT );

          /* Attach any fluff to thisArgument, not to the constantExpression */
        processTrailingFluffBeforeTheseTokenKindsOnly( thisArgument,
                                                       getToken ( 1 ),
                                                       0,
                                                       getToken ( 1 ) . kind,
                                                       getToken ( 1 ) . kind );
        thisArgument . setIndex ( DataTaskArgument.FORMAT_EXPRESSION );
    //da0g: Double-check #line number macros
        constantDataExpression = parseConstantExpressionObject(0);
        thisArgument . setFormatExpression ( constantDataExpression );
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgument_WithoutArgDir(DataTaskArgument theDataTaskArgument,
                                  boolean          theSetLineNumber) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );

        /* Note:  Doing this here will insure that we set the line number
	 * to the first token of the task argument *AFTER* the optional
	 * IN/OUT/INOUT direction.
	 */
  if ( theSetLineNumber == true )
    thisArgument . setLineNumber ( getToken ( 1 ) . beginLine + 1 );
    if (jj_2_11(2147483647)) {
      parseDistributedTaskArgument(thisArgument);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        parseTaskArgument_WithoutArgDir_validCxxCode(thisArgument);
        break;
      default:
        jj_la1[54] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
        /*   Task arguments that are separated by commas,
	 * or task-arguments that end in a ')', need to have
	 * their subseqent token's (the comma or close-paren)
	 * fluff attached to the task-argument.
	 *   An exception to this rule is made for PERSISTENT
	 * declarations that occur right before the task's body.
	 */
      processTrailingFluffBeforeTheseTokenKindsOnly (
                            thisArgument, getToken(1), 0, COMMA, CLOSE_PAREN );

        /* Also snarf subsequent EOF token fluff.  (For debugging.) */
      processTrailingFluffBeforeTheseTokenKindsOnly (
                            thisArgument, getToken(1), 0, EOF, EOF );

      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgumentNoFormat(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  Token             token;

  thisArgument . setArgumentDirection ( DataTaskArgument.DEFAULT_DIRECTION );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IN:
    case OUT:
    case INOUT:
      token = parseArgumentDirection();
          parseFluff ( thisArgument, token, 0 );
          thisArgument . setArgumentDirectionString ( token.image );
          thisArgument . setIndex (
                               DataTaskArgument.ARGUMENT_DIRECTION_INDEX );
      break;
    default:
      jj_la1[55] = jj_gen;
      ;
    }
    parseTaskArgument_WithoutArgDir(thisArgument, true);
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgument(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
    parseTaskArgumentNoFormat(thisArgument);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case FORMAT:
      parseTaskArgument_TrailingDistributedFormatString(thisArgument , 0);
            /*   Task arguments that are separated by commas,
	     * or task-arguments that end in a ')', need to have
	     * their subseqent token's (the comma or close-paren)
	     * fluff attached to the task-argument.
	     *   An exception to this rule is made for PERSISTENT
	     * declarations that occur right before the task's body.
	     */
          processTrailingFluffBeforeTheseTokenKindsOnly (
                            thisArgument, getToken(1), 0, COMMA, CLOSE_PAREN );

            /* Also snarf subsequent EOF token fluff.  (For debugging.) */
          processTrailingFluffBeforeTheseTokenKindsOnly (
                            thisArgument, getToken(1), 0, EOF, EOF );
      break;
    default:
      jj_la1[56] = jj_gen;
      ;
    }
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgument_WithoutArgDir_AndTrailingEOF(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  dataTaskArgument;
    dataTaskArgument = parseTaskArgument_WithoutArgDir(theDataTaskArgument,
                                                             true);
    jj_consume_token(0);
      {if (true) return dataTaskArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseTaskArgument_AndTrailingEOF(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  dataTaskArgument;
    dataTaskArgument = parseTaskArgument(theDataTaskArgument);
    jj_consume_token(0);
      {if (true) return dataTaskArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public Token parseArgumentDirection() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IN:
      jj_consume_token(IN);
      break;
    case OUT:
      jj_consume_token(OUT);
      break;
    case INOUT:
      jj_consume_token(INOUT);
      break;
    default:
      jj_la1[57] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return getToken(0);}
    throw new Error("Missing return statement in function");
  }

  static final public Token parseArgumentNameToken() throws ParseException {
    parseIdToken();
                    {if (true) return getToken(0);}
    throw new Error("Missing return statement in function");
  }

  static final public String parseArgumentName() throws ParseException {
  Token token;
    token = parseArgumentNameToken();
      {if (true) return token.image;}
    throw new Error("Missing return statement in function");
  }

/********************************/
/* Distributed Declaration Sets */
/********************************/
  static final public DataDistributedDeclarationSet parseDistributedDeclarationSet(DataDistributedDeclarationSet  theDataDistributedDeclarationSet) throws ParseException {
  DataDistributedDeclarationSet  thisDeclarationSet
    = (   ( theDataDistributedDeclarationSet != null )
        ?   theDataDistributedDeclarationSet
        :   new DataDistributedDeclarationSet() );

  thisDeclarationSet . clear();
    if (jj_2_12(2147483647)) {
      parseDistributedDeclarationSet_Direct(thisDeclarationSet);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case IN:
      case OUT:
      case INOUT:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        parseDistributedDeclarationSet_WithFormat(thisDeclarationSet);
        break;
      default:
        jj_la1[58] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return thisDeclarationSet;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDistributedDeclarationSet parseDistributedDeclarationSet_WithFormat(DataDistributedDeclarationSet  theDataDistributedDeclarationSet) throws ParseException {
  DataDistributedDeclarationSet  thisDeclarationSet
    = (   ( theDataDistributedDeclarationSet != null )
        ?   theDataDistributedDeclarationSet
        :   new DataDistributedDeclarationSet() );

  Token  token;
  int    declarationCount = 0;

  thisDeclarationSet . clear();

  if ( TDLParser.debugDistributedDeclarationSet )
    System.err.println( "parseDistributedDeclarationSet_WithFormat:  "
                        + getToken(1).image );
    parseTaskArgumentNoFormat(thisDeclarationSet . getFirstDeclarationCreatingIfNecessary());
    parseTaskArgument_TrailingDistributedFormatString(thisDeclarationSet . getLastExistingDeclaration(),
                                0);
          /* Store "fluff" as part of DataTaskArgument, *
	   * not DataDistributedDeclarationSet.         */
        processTrailingFluffBeforeTheseTokenKindsOnly (
                            thisDeclarationSet . getLastExistingDeclaration(),
                            getToken(1), 0, COMMA, SEMICOLON );
        thisDeclarationSet
          . setIndex ( DataDistributedDeclarationSet.DECLARATION_INDEX
                       + (declarationCount ++) );
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[59] = jj_gen;
        break label_11;
      }
      token = jj_consume_token(COMMA);
      parseTaskArgumentDeclaration(thisDeclarationSet . createNextDeclaration());
      parseTaskArgument_TrailingDistributedFormatString(thisDeclarationSet . getLastExistingDeclaration(),
                                  0);
            /* Store "fluff" as part of DataTaskArgument, *
	     * not DataDistributedDeclarationSet.         */
          processTrailingFluffBeforeTheseTokenKindsOnly (
                            thisDeclarationSet . getLastExistingDeclaration(),
                            getToken(1), 0, COMMA, SEMICOLON );
          thisDeclarationSet
            . setIndex ( DataDistributedDeclarationSet.DECLARATION_INDEX
                         + (declarationCount ++) );
    }
    /* parseDistributedDeclarationSet()'s LOOKAHEAD only works properly
    	 * because this <SEMICOLON> token ends both of the two choices.
    	 * (Otherwise we'd get a premature partial "_Direct" match when we
    	 *  wanted a full "_WithFormat" match.)
    	 */
        token = jj_consume_token(SEMICOLON);
      {if (true) return thisDeclarationSet;}
    throw new Error("Missing return statement in function");
  }

  static final public void parseDistributedDeclarationSet_Direct_subpart(DataTaskArgument theDataTaskArgument) throws ParseException {
    if (jj_2_13(2147483647)) {
      parseDistributedDeclaration_SecondIdentifierPart(theDataTaskArgument);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FORMAT:
        parseTaskArgument_TrailingDistributedFormatString(theDataTaskArgument, 0);
        break;
      default:
        jj_la1[60] = jj_gen;
        ;
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case ID:
        parseTaskArgumentDeclaration(theDataTaskArgument);
        parseTaskArgument_TrailingDistributedFormatString(theDataTaskArgument, 0);
        break;
      default:
        jj_la1[61] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
           /* Store "fluff" as part of this DataTaskArgument */
        processTrailingFluffBeforeTheseTokenKindsOnly (
           theDataTaskArgument, getToken(1), 0, COMMA, SEMICOLON );
  }

  static final public DataDistributedDeclarationSet parseDistributedDeclarationSet_Direct(DataDistributedDeclarationSet  theDataDistributedDeclarationSet) throws ParseException {
  DataDistributedDeclarationSet  thisDeclarationSet
    = (   ( theDataDistributedDeclarationSet != null )
        ?   theDataDistributedDeclarationSet
        :   new DataDistributedDeclarationSet() );

  Token  token;
  int    declarationCount = 0;

  thisDeclarationSet . clear();

  if ( TDLParser.debugDistributedDeclarationSet )
    System.err.println( "parseDistributedDeclarationSet_Direct:  "
                        + getToken(1).image );
    parseDistributedDeclaration_FirstTypePart_IncludingStructEnumDeclarations(thisDeclarationSet . getFirstDeclarationCreatingIfNecessary());
    parseDistributedDeclarationSet_Direct_subpart(thisDeclarationSet . getLastExistingDeclaration());
          thisDeclarationSet
            . setIndex ( DataDistributedDeclarationSet.DECLARATION_INDEX
                         + (declarationCount ++) );
    label_12:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[62] = jj_gen;
        break label_12;
      }
      token = jj_consume_token(COMMA);
      parseDistributedDeclarationSet_Direct_subpart(thisDeclarationSet . createNextDeclaration());
            thisDeclarationSet
              . setIndex ( DataDistributedDeclarationSet.DECLARATION_INDEX
                           + (declarationCount ++) );
    }
    /* parseDistributedDeclarationSet()'s LOOKAHEAD only works properly
    	 * because this <SEMICOLON> token ends both of the two choices.
    	 * (Otherwise we'd get a premature partial "_Direct" match when we
    	 *  wanted a full "_WithFormat" match.)
    	 */
        token = jj_consume_token(SEMICOLON);
      {if (true) return thisDeclarationSet;}
    throw new Error("Missing return statement in function");
  }

/*********************************************************/
/* Distributed Task Arguments / Distributed Declarations */
/*********************************************************/

/*
 * Caveat:  parseDistributedTaskArgument intentionally does *NOT*
 * parse struct { ... } or enum { ... }.  These must be parsed elsewhere.
 *
 * parseDistributedDeclaration_FirstTypePart_IncludingStructEnumDeclarations
 * does parse these.
 */
  static final public DataTaskArgument parseDistributedTaskArgument(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
    parseDistributedDeclaration_FirstTypePart(thisArgument);
    parseDistributedDeclaration_SecondIdentifierPart(thisArgument);
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseDistributedDeclaration_FirstTypePart(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
    parseDistributedDeclaration_internalLeadingConst(thisArgument);
    parseDistributedDeclaration_internalTypeItself(thisArgument);
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseDistributedDeclaration_FirstTypePart_IncludingStructEnumDeclarations(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
    parseDistributedDeclaration_internalLeadingConst(thisArgument);
    parseDistributedDeclaration_includingStructOrEnumDeclarations(thisArgument);
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseDistributedDeclaration_SecondIdentifierPart(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  Token             token;
    parseDistributedDeclaration_internalTrailingStuff(thisArgument);
    token = parseArgumentNameToken();
        parseFluff ( thisArgument, token, 0 );
        thisArgument . setArgumentNameWithoutParsingChecks ( token.image );
        thisArgument . setIndex ( DataTaskArgument.ARGUMENT_NAME_INDEX );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
    case OPEN_BRACKET:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPEN_BRACKET:
        parseDistributedTaskArgument_Array(thisArgument);
        break;
      case EQUAL:
        parseDistributedTaskArgument_DefaultValue(thisArgument);
        break;
      default:
        jj_la1[63] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[64] = jj_gen;
      ;
    }
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public void parseDistributedDeclaration_internalLeadingConst(DataTaskArgument theThisArgument) throws ParseException {
  Token   startToken = getToken(0);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONST:
      jj_consume_token(CONST);
      break;
    default:
      jj_la1[65] = jj_gen;
      ;
    }
      parseMiscTokens ( theThisArgument, startToken, 0 );
  }

  static final public void parseDistributedDeclaration_internalTypeItself(DataTaskArgument theThisArgument) throws ParseException {
  Token        token;
  Token        startToken    = getToken(0);
  boolean      intTypeSigned = true;
  StringBuffer stringBuffer = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIGNED:
      case UNSIGNED:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case UNSIGNED:
          jj_consume_token(UNSIGNED);
                  intTypeSigned = false;
          break;
        case SIGNED:
          jj_consume_token(SIGNED);
                  intTypeSigned = true;
          break;
        default:
          jj_la1[66] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CONST:
          jj_consume_token(CONST);
          break;
        default:
          jj_la1[67] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[68] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CHAR:
        jj_consume_token(CHAR);
                  theThisArgument
                    . setDistributedType (   ( intTypeSigned == true )
                                           ? DataTaskArgument.INT1
                                           : DataTaskArgument.U_INT1 );
        break;
      case SHORT:
        jj_consume_token(SHORT);
        if (jj_2_14(2)) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case CONST:
            jj_consume_token(CONST);
            break;
          default:
            jj_la1[69] = jj_gen;
            ;
          }
          jj_consume_token(INT);
        } else {
          ;
        }
                  theThisArgument
                    . setDistributedType (   ( intTypeSigned == true )
                                           ? DataTaskArgument.INT2
                                           : DataTaskArgument.U_INT2 );
        break;
      case INT:
        jj_consume_token(INT);
                  theThisArgument
                    . setDistributedType (   ( intTypeSigned == true )
                                           ? DataTaskArgument.INT4
                                           : DataTaskArgument.U_INT4 );
        break;
      case LONG:
        jj_consume_token(LONG);
        if (jj_2_15(2)) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case CONST:
            jj_consume_token(CONST);
            break;
          default:
            jj_la1[70] = jj_gen;
            ;
          }
          jj_consume_token(INT);
        } else {
          ;
        }
                  theThisArgument
                    . setDistributedType (   ( intTypeSigned == true )
                                           ? DataTaskArgument.INT4
                                           : DataTaskArgument.U_INT4 );
        break;
      default:
        jj_la1[71] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case FLOAT:
      jj_consume_token(FLOAT);
          theThisArgument . setDistributedType ( DataTaskArgument.FLOAT   );
      break;
    case DOUBLE:
      jj_consume_token(DOUBLE);
          theThisArgument . setDistributedType ( DataTaskArgument.DOUBLE  );
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      if (jj_2_17(2147483647)) {
        token = parseIdToken();
                  stringBuffer = new StringBuffer ( 100 /* Arbitrary */ );
                  stringBuffer . append ( token.image );
        label_13:
        while (true) {
          token = jj_consume_token(SCOPE);
                      stringBuffer . append ( token.image );
          token = parseIdToken();
                      stringBuffer . append ( token.image );
          if (jj_2_16(2147483647)) {
            ;
          } else {
            break label_13;
          }
        }
              theThisArgument
                . setDistributedType ( DataTaskArgument.IDENTIFIER );
              theThisArgument . setDistributedId   ( stringBuffer.toString() );
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case ID:
          token = parseIdToken();
            if ( token.image . equals ( "BOOLEAN" ) )
              theThisArgument . setDistributedType( DataTaskArgument.BOOLEAN );

            else if ( token.image . equals ( "STRING" ) )
              theThisArgument . setDistributedType( DataTaskArgument.STRING  );


            else if ( token.image . equals ( "u_int1" ) )
              theThisArgument . setDistributedType( DataTaskArgument.U_INT1  );

            else if ( token.image . equals ( "u_int2" ) )
              theThisArgument . setDistributedType( DataTaskArgument.U_INT2  );

            else if ( token.image . equals ( "u_int4" ) )
              theThisArgument . setDistributedType( DataTaskArgument.U_INT4  );

            else if ( token.image . equals ( "u_int8" ) )
              theThisArgument . setDistributedType( DataTaskArgument.U_INT8  );


            else if ( token.image . equals ( "int1" ) )
              theThisArgument . setDistributedType ( DataTaskArgument.INT1  );

            else if ( token.image . equals ( "int2" ) )
              theThisArgument . setDistributedType ( DataTaskArgument.INT2  );

            else if ( token.image . equals ( "int4" ) )
              theThisArgument . setDistributedType ( DataTaskArgument.INT4  );

            else if ( token.image . equals ( "int8" ) )
              theThisArgument . setDistributedType ( DataTaskArgument.INT8  );


            else /* Assume typedef/struct/enum by name */
            {
              theThisArgument
                . setDistributedType ( DataTaskArgument.IDENTIFIER );
              theThisArgument . setDistributedId   ( token.image );
            }
          break;
        default:
          jj_la1[72] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case STRUCT:
      jj_consume_token(STRUCT);
      token = parseIdToken();
          theThisArgument . setDistributedType ( DataTaskArgument.STRUCT );
          theThisArgument . setDistributedId ( token.image );
      break;
    case ENUM:
      jj_consume_token(ENUM);
      token = parseIdToken();
          theThisArgument . setDistributedType ( DataTaskArgument.ENUM );
          theThisArgument . setDistributedId ( token.image );
      break;
    default:
      jj_la1[73] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
     parseMiscTokens ( theThisArgument, startToken, 0 );
  }

  static final public void parseDistributedDeclaration_internalTrailingStuff(DataTaskArgument theThisArgument) throws ParseException {
  Token   startToken = getToken(0);

  theThisArgument . setDistributedPointer ( false );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONST:
      jj_consume_token(CONST);
      break;
    default:
      jj_la1[74] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ASTERISK:
      jj_consume_token(ASTERISK);
           theThisArgument . setDistributedPointer ( true );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CONST:
        jj_consume_token(CONST);
        break;
      default:
        jj_la1[75] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[76] = jj_gen;
      ;
    }
      parseMiscTokens ( theThisArgument, startToken, 0 );
  }

  static final public DataTaskArgument parseDistributedTaskArgument_Array(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );
  DataExpression    constantDataExpression;
  DataComponent     targetDataComponent;
  Token             token;
    label_14:
    while (true) {
      token = jj_consume_token(OPEN_BRACKET);
          parseFluff ( thisArgument, token, 0 );
          thisArgument . addSubcomponent ( token.image );
          constantDataExpression = null;
      constantDataExpression = parseConstantExpressionObject(0);
          thisArgument . addSubcomponent ( constantDataExpression );
          thisArgument
            . addDistributedArrayExpression ( constantDataExpression );
      token = jj_consume_token(CLOSE_BRACKET);
          parseFluff ( thisArgument, token, 0 );
          thisArgument . addSubcomponent ( token.image );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPEN_BRACKET:
        ;
        break;
      default:
        jj_la1[77] = jj_gen;
        break label_14;
      }
    }
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseDistributedTaskArgument_DefaultValue(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument = (   ( theDataTaskArgument != null )
                                     ?   theDataTaskArgument
                                     :   new DataTaskArgument() );

  Token             token, startToken = getToken(0);
    token = jj_consume_token(EQUAL);
        parseMiscTokens ( thisArgument, startToken, 0 );
        startToken = token;
                /* Set this to the subcomponent index OF the equals */
        thisArgument
          . setIndex ( DataTaskArgument.ARGUMENT_EQUALS_INDEX,
                       thisArgument . getSubcomponentsCount() - 1 );
    parseAssignmentExpression();
      parseMiscTokens ( thisArgument, startToken, 0 );
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

  static final public DataTaskArgument parseDistributedDeclaration_includingStructOrEnumDeclarations(DataTaskArgument theDataTaskArgument) throws ParseException {
  DataTaskArgument  thisArgument  = (   ( theDataTaskArgument != null )
                                      ?   theDataTaskArgument
                                      :   new DataTaskArgument() );

  DataDistributedStruct  nestedStruct;
  DataDistributedEnum    nestedEnum;
    if (jj_2_18(2147483647)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STRUCT:
        nestedStruct = parseDistributedStructInternal(null);
               thisArgument . setDistributedType (
                                DataTaskArgument.DATA_DISTRIBUTED_STRUCT );
               thisArgument . setDistributedStruct ( nestedStruct );
        break;
      case ENUM:
        nestedEnum = parseDistributedEnumInternal(null);
               thisArgument . setDistributedType (
                                DataTaskArgument.DATA_DISTRIBUTED_ENUM );
               thisArgument . setDistributedEnum ( nestedEnum );
        break;
      default:
        jj_la1[78] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case STRUCT:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case ID:
        parseDistributedDeclaration_internalTypeItself(thisArgument);
        break;
      default:
        jj_la1[79] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return thisArgument;}
    throw new Error("Missing return statement in function");
  }

/*******************/
/*** Constraints ***/
/*******************/


        /* Simple constraints have grown since their conception.
	 * They used to be just expand_first and delay_expansion.
	 * Now they contain all the constraints that can be applied
	 * as top task-level constraints to goals, commands, & monitors.
	 */
  static final public DataConstraint parseSimpleConstraint(DataConstraint  theDataConstraint,
                        int             theUnIndent) throws ParseException {
  Token               token, token_2;
  boolean             foundFirstToken      = false;
  DataSpawnTask       exceptionHandlerTask;
  DataSpawnTask       onTerminateSpawnTask = null;
  DataLabelStatement  dataLabel, oldLabel  = null;
  DataConstraint      thisConstraint = (   ( theDataConstraint != null )
                                         ?   theDataConstraint
                                         :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXPAND_FIRST:
    case DELAY_EXPANSION:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXPAND_FIRST:
        token = jj_consume_token(EXPAND_FIRST);
                thisConstraint
                  . setConstraintType ( DataConstraint.EXPAND_FIRST );
        break;
      case DELAY_EXPANSION:
        token = jj_consume_token(DELAY_EXPANSION);
                thisConstraint
                  . setConstraintType ( DataConstraint.DELAY_EXPANSION );
        break;
      default:
        jj_la1[80] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          thisConstraint . setLineNumber ( token.beginLine + 1 );
          parseFluff ( thisConstraint, token, theUnIndent );
          thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );
      break;
    case EXPAND:
    case DELAY:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXPAND:
        token = jj_consume_token(EXPAND);
        token_2 = jj_consume_token(FIRST);
              thisConstraint
                . setConstraintType ( DataConstraint.EXPAND_FIRST );
        break;
      case DELAY:
        token = jj_consume_token(DELAY);
        token_2 = jj_consume_token(EXPANSION);
              thisConstraint
                . setConstraintType ( DataConstraint.DELAY_EXPANSION );
        break;
      default:
        jj_la1[81] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          thisConstraint . setLineNumber ( token.beginLine + 1 );
          parseFluff ( thisConstraint, token, theUnIndent );
          thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );

          parseFluff ( thisConstraint, token_2, theUnIndent );
          thisConstraint . setIndex ( DataConstraint.KEYWORD + 1 );
      break;
    case EXCEPTION:
    case HANDLER:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXCEPTION:
        token = jj_consume_token(EXCEPTION);
              parseFluff ( thisConstraint, token, theUnIndent );
              thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );
              thisConstraint . setLineNumber ( token.beginLine + 1);
              foundFirstToken = true;
        break;
      default:
        jj_la1[82] = jj_gen;
        ;
      }
      token = jj_consume_token(HANDLER);
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 1 );
            if ( foundFirstToken == false )
            {
              thisConstraint . setLineNumber ( token.beginLine + 1);
              foundFirstToken = true;
            }
      exceptionHandlerTask = parseSpawnTask_TaskOnly(null, theUnIndent);
            thisConstraint
                . setConstraintType ( DataConstraint.EXCEPTION_HANDLER );
            thisConstraint . setExceptionHandlerTask ( exceptionHandlerTask );
      break;
    case ON:
    case ON_TERMINATE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ON_TERMINATE:
        token = jj_consume_token(ON_TERMINATE);
                  thisConstraint
                      . setConstraintType ( DataConstraint.ON_TERMINATE );
                  thisConstraint . setLineNumber ( token.beginLine + 1 );
                  parseFluff ( thisConstraint, token, theUnIndent );
                  thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );
                  thisConstraint . setHasOnTerminateSpawnKeyword ( false );
        break;
      case ON:
        token = jj_consume_token(ON);
                  thisConstraint
                      . setConstraintType ( DataConstraint.ON_TERMINATE );
                  thisConstraint . setLineNumber ( token.beginLine + 1 );
                  parseFluff ( thisConstraint, token, theUnIndent );
                  thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );
                  thisConstraint . setHasOnTerminateSpawnKeyword ( false );
        token = jj_consume_token(TERMINATE);
                  parseFluff ( thisConstraint, token, theUnIndent );
                  thisConstraint . setIndex ( DataConstraint.KEYWORD + 1 );
        break;
      default:
        jj_la1[83] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      label_15:
      while (true) {
        if (jj_2_19(2147483647)) {
          ;
        } else {
          break label_15;
        }
        dataLabel = parseLabel(theUnIndent, false);
                if ( onTerminateSpawnTask == null )
                  onTerminateSpawnTask = new DataSpawnTask();

                  /* Order is important here to preserve parent information */
                if ( oldLabel == null )
                  onTerminateSpawnTask . setLabel ( dataLabel );
                else
                  oldLabel . setLabel ( dataLabel );
                oldLabel = dataLabel;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SPAWN:
        token = jj_consume_token(SPAWN);
              thisConstraint . setHasOnTerminateSpawnKeyword ( true );
              parseFluff ( thisConstraint, token, theUnIndent );
              thisConstraint . setIndex ( DataConstraint.KEYWORD + 2 );
        break;
      default:
        jj_la1[84] = jj_gen;
        ;
      }
      onTerminateSpawnTask = parseSpawnTask_TaskOnly(onTerminateSpawnTask,
                                                               theUnIndent);
            thisConstraint . setOnTerminateTask ( onTerminateSpawnTask );
      break;
    default:
      jj_la1[85] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseMaximumActivateConstraint(DataConstraint  theDataConstraint,
                                 int             theUnIndent) throws ParseException {
  Token           token, token_2 = null;
  DataExpression  numericExpression;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case MAXIMUM_ACTIVATE:
      token = jj_consume_token(MAXIMUM_ACTIVATE);
      numericExpression = parseAssignmentExpressionObject(theUnIndent, true);
            thisConstraint
              . setConstraintType( DataConstraint.MAXIMUM_ACTIVATE );
            thisConstraint . setLineNumber ( token.beginLine + 1 );

            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );

            thisConstraint . setNumericExpression ( numericExpression );
      break;
    case MAXIMUM:
      token = jj_consume_token(MAXIMUM);
      token_2 = jj_consume_token(ACTIVATE);
      numericExpression = parseAssignmentExpressionObject(theUnIndent, true);
            thisConstraint
              . setConstraintType( DataConstraint.MAXIMUM_ACTIVATE );
            thisConstraint . setLineNumber ( token.beginLine + 1 );

            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );

            parseFluff ( thisConstraint, token_2, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 1 );

            thisConstraint . setNumericExpression ( numericExpression );
      break;
    default:
      jj_la1[86] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseMaximumTriggerConstraint(DataConstraint  theDataConstraint,
                                int             theUnIndent) throws ParseException {
  Token           token, token_2 = null;
  DataExpression  numericExpression;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case MAXIMUM_TRIGGER:
      token = jj_consume_token(MAXIMUM_TRIGGER);
      numericExpression = parseAssignmentExpressionObject(theUnIndent, true);
            thisConstraint
              . setConstraintType ( DataConstraint.MAXIMUM_TRIGGER );
            thisConstraint . setLineNumber ( token.beginLine + 1 );

            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );

            thisConstraint . setNumericExpression ( numericExpression );
      break;
    case MAXIMUM:
      token = jj_consume_token(MAXIMUM);
      token_2 = jj_consume_token(TRIGGER);
      numericExpression = parseAssignmentExpressionObject(theUnIndent, true);
            thisConstraint
              . setConstraintType ( DataConstraint.MAXIMUM_TRIGGER );
            thisConstraint . setLineNumber ( token.beginLine + 1 );

            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );

            parseFluff ( thisConstraint, token_2, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 1 );

            thisConstraint . setNumericExpression ( numericExpression );
      break;
    default:
      jj_la1[87] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseMonitorConstraint(DataConstraint  theDataConstraint,
                         int             theUnIndent) throws ParseException {
  Token           token, token_2 = null, numericToken;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXCEPTION:
    case HANDLER:
    case EXPAND:
    case DELAY:
    case ON:
    case EXPAND_FIRST:
    case DELAY_EXPANSION:
    case ON_TERMINATE:
      parseSimpleConstraint(thisConstraint, theUnIndent);
      break;
    case SEQUENTIAL:
    case SERIAL:
    case SEQUENTIAL_HANDLING:
    case SEQUENTIAL_EXPANSION:
    case SEQUENTIAL_EXECUTION:
    case SEQUENTIAL_PLANNING:
    case SEQUENTIAL_ACHIEVEMENT:
      parseSequentialOrSerialConstraint(thisConstraint, theUnIndent, true);
      break;
    case MAXIMUM:
    case MAXIMUM_ACTIVATE:
    case MAXIMUM_TRIGGER:
      if (jj_2_20(2)) {
        parseMaximumActivateConstraint(thisConstraint, theUnIndent);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case MAXIMUM:
        case MAXIMUM_TRIGGER:
          parseMaximumTriggerConstraint(thisConstraint, theUnIndent);
          break;
        default:
          jj_la1[88] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case MONITOR_PERIOD:
      token = jj_consume_token(MONITOR_PERIOD);
            thisConstraint
              . setConstraintType ( DataConstraint.MONITOR_PERIOD );
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.KEYWORD + 0 );
      parseRelativeTimeExpression(thisConstraint, theUnIndent);
      break;
    default:
      jj_la1[89] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseHandlerConstraint(DataConstraint  theDataConstraint,
                         int             theUnIndent) throws ParseException {
  DataConstraint  dataConstraint = null;
    dataConstraint = parseMaximumActivateConstraint(theDataConstraint,
                                                              theUnIndent);
      {if (true) return dataConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseSequentialOrSerialConstraint(DataConstraint  theDataConstraint,
                                    int             theUnIndent,
                                    boolean         theIsMonitorConstraint) throws ParseException {
  Token           token, token_2;
  int             keywordIndex = 0;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEQUENTIAL:
      token = jj_consume_token(SEQUENTIAL);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case HANDLING:
        token_2 = jj_consume_token(HANDLING);
                      thisConstraint . setConstraintType (
                                        DataConstraint.SEQUENTIAL_HANDLING );
        break;
      case EXPANSION:
        token_2 = jj_consume_token(EXPANSION);
                      thisConstraint . setConstraintType (
                                        DataConstraint.SEQUENTIAL_EXPANSION );
        break;
      case EXECUTION:
        token_2 = jj_consume_token(EXECUTION);
                      thisConstraint . setConstraintType (
                                        DataConstraint.SEQUENTIAL_EXECUTION );
        break;
      case PLANNING:
        token_2 = jj_consume_token(PLANNING);
                      thisConstraint . setConstraintType (
                                        DataConstraint.SEQUENTIAL_EXPANSION );
        break;
      case ACHIEVEMENT:
        token_2 = jj_consume_token(ACHIEVEMENT);
                      thisConstraint . setConstraintType (
                                        DataConstraint.SEQUENTIAL_EXECUTION );
        break;
      default:
        jj_la1[90] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
              . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );

            parseFluff ( thisConstraint, token_2, theUnIndent );
            thisConstraint
              . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );

            if ( theIsMonitorConstraint )
            {
              if ( token_2.kind == HANDLING )
              {
                {if (true) throw generateParseException ( token_2,
                    "Sequential Handling constraint is not yet "
                    + "available for monitors..." );}
              }

                /* Default to blank... */
              thisConstraint . setEventTagTask ( null );
            }
            else  /* Ie: Not a monitor constraint */
            {
                /* Default to previous */
              thisConstraint . setEventTagTask ( DataConstraint.PREVIOUS );
            }
      if (jj_2_21(2147483647) && (theIsMonitorConstraint == false)) {
        parseTagTask(thisConstraint, theUnIndent);
      } else {
        ;
      }
      break;
    case SERIAL:
    case SEQUENTIAL_HANDLING:
    case SEQUENTIAL_EXPANSION:
    case SEQUENTIAL_EXECUTION:
    case SEQUENTIAL_PLANNING:
    case SEQUENTIAL_ACHIEVEMENT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SEQUENTIAL_HANDLING:
        token = jj_consume_token(SEQUENTIAL_HANDLING);
                  thisConstraint . setConstraintType (
                                       DataConstraint.SEQUENTIAL_HANDLING );
        break;
      case SEQUENTIAL_EXPANSION:
        token = jj_consume_token(SEQUENTIAL_EXPANSION);
                  thisConstraint . setConstraintType (
                                       DataConstraint.SEQUENTIAL_EXPANSION );
        break;
      case SEQUENTIAL_EXECUTION:
        token = jj_consume_token(SEQUENTIAL_EXECUTION);
                  thisConstraint . setConstraintType (
                                       DataConstraint.SEQUENTIAL_EXECUTION );
        break;
      case SEQUENTIAL_PLANNING:
        token = jj_consume_token(SEQUENTIAL_PLANNING);
                  thisConstraint . setConstraintType (
                                       DataConstraint.SEQUENTIAL_EXPANSION );
        break;
      case SEQUENTIAL_ACHIEVEMENT:
        token = jj_consume_token(SEQUENTIAL_ACHIEVEMENT);
                  thisConstraint . setConstraintType (
                                       DataConstraint.SEQUENTIAL_EXECUTION );
        break;
      case SERIAL:
        token = jj_consume_token(SERIAL);
                  thisConstraint . setConstraintType (
                                       DataConstraint.SERIAL );
        break;
      default:
        jj_la1[91] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
              . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );

            if ( theIsMonitorConstraint )
            {
              if ( token.kind == SEQUENTIAL_HANDLING )
              {
                {if (true) throw generateParseException ( token,
                    "Sequential Handling constraint is not yet "
                    + "available for monitors..." );}
              }

                /* Default to blank... */
              thisConstraint . setEventTagTask ( null );
            }
            else  /* Ie: Not a monitor constraint */
            {
                /* Default to previous */
              thisConstraint . setEventTagTask ( DataConstraint.PREVIOUS );
            }
      if (jj_2_22(2147483647) && (theIsMonitorConstraint == false)) {
        parseTagTask(thisConstraint, theUnIndent);
      } else {
        ;
      }
      break;
    default:
      jj_la1[92] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseDistributedOnAgentConstraint(DataConstraint theDataConstraint,
                                    int            theUnIndent) throws ParseException {
  Token           token;
  int             keywordIndex = 0;
  DataExpression  agentDataExpression;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    /* ON "AGENT" constraint */
        token = jj_consume_token(ON);
        thisConstraint . setConstraintType ( DataConstraint.ON_AGENT );
        thisConstraint . setLineNumber     ( token.beginLine + 1     );
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint
          . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
    /* This will handle strings with IDs in them too. */
    //da0g: Double-check #line number macros
        agentDataExpression = parseAssignmentExpressionObject(theUnIndent, true);
        thisConstraint
          . setDistributedOnAgentExpression ( agentDataExpression );
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseConstraint(DataConstraint  theDataConstraint,
                  int             theUnIndent) throws ParseException {
  Token           token,
                  token_2,
                  timeBoundaryToken                = null,
                  constraintOptionToken            = null,
                  constrainerConstraintOptionToken = null;

  int             keywordIndex = 0;

  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXCEPTION:
    case HANDLER:
    case EXPAND:
    case DELAY:
    case SEQUENTIAL:
    case SERIAL:
    case MAXIMUM:
    case MONITOR_PERIOD:
    case ON:
    case EXPAND_FIRST:
    case DELAY_EXPANSION:
    case SEQUENTIAL_HANDLING:
    case SEQUENTIAL_EXPANSION:
    case SEQUENTIAL_EXECUTION:
    case SEQUENTIAL_PLANNING:
    case SEQUENTIAL_ACHIEVEMENT:
    case MAXIMUM_ACTIVATE:
    case MAXIMUM_TRIGGER:
    case ON_TERMINATE:
      if (jj_2_24(2147483647)) {
        parseSequentialOrSerialConstraint(thisConstraint,
                                                        theUnIndent,
                                                        false);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXCEPTION:
        case HANDLER:
        case EXPAND:
        case DELAY:
        case SEQUENTIAL:
        case SERIAL:
        case MAXIMUM:
        case MONITOR_PERIOD:
        case ON:
        case EXPAND_FIRST:
        case DELAY_EXPANSION:
        case SEQUENTIAL_HANDLING:
        case SEQUENTIAL_EXPANSION:
        case SEQUENTIAL_EXECUTION:
        case SEQUENTIAL_PLANNING:
        case SEQUENTIAL_ACHIEVEMENT:
        case MAXIMUM_ACTIVATE:
        case MAXIMUM_TRIGGER:
        case ON_TERMINATE:
          if (jj_2_23(2147483647)) {
            parseMonitorConstraint(thisConstraint, theUnIndent);
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case ON:
              parseDistributedOnAgentConstraint(thisConstraint,
                                                                 theUnIndent);
              break;
            default:
              jj_la1[93] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[94] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case PARALLEL:
    case WAIT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PARALLEL:
        token = jj_consume_token(PARALLEL);
                thisConstraint
                  . setConstraintType ( DataConstraint.PARALLEL );
        break;
      case WAIT:
        token = jj_consume_token(WAIT);
                thisConstraint
                  . setConstraintType ( DataConstraint.WAIT );
        break;
      default:
        jj_la1[95] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          thisConstraint . setLineNumber ( token.beginLine + 1 );
          parseFluff ( thisConstraint, token, theUnIndent );
          thisConstraint
            . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
      break;
    case DISABLE_UNTIL:
      token = jj_consume_token(DISABLE_UNTIL);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            thisConstraint . setConstraintOption ( DataConstraint.INVALID );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
                    . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
      if (jj_2_25(2147483647)) {
        parseEvent(thisConstraint, theUnIndent);
                   thisConstraint . setConstraintType (
                                          DataConstraint.DISABLE_UNTIL_EVENT );
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SIZEOF:
        case NEW:
        case DELETE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case NON_NEGATIVE_INTEGER_CONSTANT:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          parseAbsoluteTimeExpression(thisConstraint, theUnIndent);
                   thisConstraint . setConstraintType (
                                           DataConstraint.DISABLE_UNTIL_TIME );
          break;
        default:
          jj_la1[96] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case DISABLE_FOR:
      token = jj_consume_token(DISABLE_FOR);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            thisConstraint . setConstraintOption ( DataConstraint.INVALID );
      parseTrailingChunkIncludingAfterEvent(thisConstraint,
                                                      token, keywordIndex,
                                                      theUnIndent);
          thisConstraint
            . setConstraintType ( DataConstraint.DISABLE_FOR_TIME );
          keywordIndex += ( thisConstraint . getHasEventTagTask() ) ? 2 : 1;
      break;
    case DISABLE:
      token = jj_consume_token(DISABLE);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
              . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );

                /* Establish the no-event-option default */
            thisConstraint . setConstraintOption ( DataConstraint.INVALID );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case HANDLING:
      case EXPANSION:
      case EXECUTION:
      case PLANNING:
      case ACHIEVEMENT:
        constraintOptionToken = parseConstraintOption();
              thisConstraint . setConstraintOptionStringWithoutParsing (
                                             constraintOptionToken . image );
              parseFluff ( thisConstraint, constraintOptionToken, theUnIndent);
              thisConstraint . setIndex ( DataConstraint.CONSTRAINT_OPTION );
        break;
      default:
        jj_la1[97] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FOR_CS:
      case FOR_CI:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case FOR_CS:
          token = jj_consume_token(FOR_CS);
          break;
        case FOR_CI:
          token = jj_consume_token(FOR_CI);
          break;
        default:
          jj_la1[98] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        parseTrailingChunkIncludingAfterEvent(thisConstraint,
                                                              token, keywordIndex,
                                                              theUnIndent);
                  thisConstraint
                    . setConstraintType ( DataConstraint.DISABLE_FOR_TIME );
                  keywordIndex
                    += ( thisConstraint . getHasEventTagTask() ) ? 2 : 1;
        break;
      case UNTIL:
        token = jj_consume_token(UNTIL);
                  parseFluff ( thisConstraint, token, theUnIndent );
                  thisConstraint
                    . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
        if (jj_2_26(2147483647)) {
          parseEvent(thisConstraint, theUnIndent);
                      thisConstraint . setConstraintType (
                                          DataConstraint.DISABLE_UNTIL_EVENT );
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case SIZEOF:
          case NEW:
          case DELETE:
          case CHAR:
          case SHORT:
          case INT:
          case LONG:
          case SIGNED:
          case UNSIGNED:
          case FLOAT:
          case DOUBLE:
          case VOID:
          case OPERATOR:
          case TASK:
          case GOAL:
          case COMMAND:
          case MONITOR:
          case EXCEPTION:
          case HANDLER:
          case RESUME:
          case HANDLES:
          case TRIGGER:
          case DISTRIBUTED:
          case THREADED:
          case NAME:
          case TDL_REF:
          case GET_NUMBER_OF_TRIGGERS:
          case GET_NUMBER_OF_ACTIVATES:
          case NOT:
          case PLUS:
          case MINUS:
          case INCREMENT:
          case DECREMENT:
          case SCOPE:
          case OPEN_PAREN:
          case AMPERSAND:
          case ASTERISK:
          case TILDE:
          case INTEGER_CONSTANT:
          case CHARACTER_CONSTANT:
          case STRING_CONSTANT:
          case ID:
          case NON_NEGATIVE_INTEGER_CONSTANT:
          case FLOAT_CONSTANT_BASIC:
          case FLOATING_CONSTANT:
            parseAbsoluteTimeExpression(thisConstraint, theUnIndent);
                        thisConstraint . setConstraintType (
                                           DataConstraint.DISABLE_UNTIL_TIME );
            break;
          default:
            jj_la1[99] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
        break;
      default:
        jj_la1[100] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case TERMINATE_AT:
      token = jj_consume_token(TERMINATE_AT);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
                    . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
      if (jj_2_27(2147483647)) {
        parseEvent(thisConstraint, theUnIndent);
                 thisConstraint . setConstraintType (
                                           DataConstraint.TERMINATE_AT_EVENT );
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SIZEOF:
        case NEW:
        case DELETE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case NON_NEGATIVE_INTEGER_CONSTANT:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          parseAbsoluteTimeExpression(thisConstraint, theUnIndent);
                 thisConstraint . setConstraintType (
                                            DataConstraint.TERMINATE_AT_TIME );
          break;
        default:
          jj_la1[101] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case TERMINATE_IN:
      token = jj_consume_token(TERMINATE_IN);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
      parseTrailingChunkIncludingAfterEvent(thisConstraint,
                                                      token, keywordIndex,
                                                      theUnIndent);
          thisConstraint
            . setConstraintType ( DataConstraint.TERMINATE_IN_TIME );
          keywordIndex += ( thisConstraint . getHasEventTagTask() ) ? 2 : 1;
      break;
    case TERMINATE:
      token = jj_consume_token(TERMINATE);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
              . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
                /* Note that we have no "AFTER" event by default... */
            thisConstraint . setEventTagTask ( null );
                /* And NO time values by default. */
            thisConstraint . setHasTime ( false );
                /* Set default constraint-type (If not further qualified) */
            thisConstraint . setConstraintType ( DataConstraint.TERMINATE );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IN:
      case AT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IN:
          token = jj_consume_token(IN);
          parseTrailingChunkIncludingAfterEvent(thisConstraint,
                                                                token, keywordIndex,
                                                                theUnIndent);
                  thisConstraint
                    . setConstraintType ( DataConstraint.TERMINATE_IN_TIME );
                  keywordIndex
                    += ( thisConstraint . getHasEventTagTask() ) ? 2 : 1;
          break;
        case AT:
          token = jj_consume_token(AT);
                  parseFluff ( thisConstraint, token, theUnIndent );
                  thisConstraint
                    . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
          if (jj_2_28(2147483647)) {
            parseEvent(thisConstraint, theUnIndent);
                      thisConstraint . setConstraintType (
                                           DataConstraint.TERMINATE_AT_EVENT );
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case SIZEOF:
            case NEW:
            case DELETE:
            case CHAR:
            case SHORT:
            case INT:
            case LONG:
            case SIGNED:
            case UNSIGNED:
            case FLOAT:
            case DOUBLE:
            case VOID:
            case OPERATOR:
            case TASK:
            case GOAL:
            case COMMAND:
            case MONITOR:
            case EXCEPTION:
            case HANDLER:
            case RESUME:
            case HANDLES:
            case TRIGGER:
            case DISTRIBUTED:
            case THREADED:
            case NAME:
            case TDL_REF:
            case GET_NUMBER_OF_TRIGGERS:
            case GET_NUMBER_OF_ACTIVATES:
            case NOT:
            case PLUS:
            case MINUS:
            case INCREMENT:
            case DECREMENT:
            case SCOPE:
            case OPEN_PAREN:
            case AMPERSAND:
            case ASTERISK:
            case TILDE:
            case INTEGER_CONSTANT:
            case CHARACTER_CONSTANT:
            case STRING_CONSTANT:
            case ID:
            case NON_NEGATIVE_INTEGER_CONSTANT:
            case FLOAT_CONSTANT_BASIC:
            case FLOATING_CONSTANT:
              parseAbsoluteTimeExpression(thisConstraint, theUnIndent);
                      thisConstraint . setConstraintType (
                                           DataConstraint.TERMINATE_AT_TIME );
              break;
            default:
              jj_la1[102] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[103] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[104] = jj_gen;
        ;
      }
      break;
    case ACTIVATE_AT:
      token = jj_consume_token(ACTIVATE_AT);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
                    . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
      if (jj_2_29(2147483647)) {
        parseEvent(thisConstraint, theUnIndent);
                 thisConstraint . setConstraintType (
                                            DataConstraint.ACTIVATE_AT_EVENT );
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SIZEOF:
        case NEW:
        case DELETE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case NON_NEGATIVE_INTEGER_CONSTANT:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          parseAbsoluteTimeExpression(thisConstraint, theUnIndent);
                 thisConstraint . setConstraintType (
                                             DataConstraint.ACTIVATE_AT_TIME );
          break;
        default:
          jj_la1[105] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case ACTIVATE_IN:
      token = jj_consume_token(ACTIVATE_IN);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
      parseTrailingChunkIncludingAfterEvent(thisConstraint,
                                                      token, keywordIndex,
                                                      theUnIndent);
          thisConstraint
            . setConstraintType ( DataConstraint.ACTIVATE_IN_TIME );
          keywordIndex += ( thisConstraint . getHasEventTagTask() ) ? 2 : 1;
      break;
    case ACTIVATE:
      token = jj_consume_token(ACTIVATE);
            thisConstraint . setLineNumber ( token.beginLine + 1 );
            parseFluff ( thisConstraint, token, theUnIndent );
            thisConstraint
              . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
                /* Note that we have no "AFTER" event by default... */
            thisConstraint . setEventTagTask ( null );
                /* And NO time values by default. */
            thisConstraint . setHasTime ( false );
                /* Set default constraint-type (If not further qualified) */
            thisConstraint . setConstraintType ( DataConstraint.ACTIVATE );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IN:
      case AT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IN:
          token = jj_consume_token(IN);
          parseTrailingChunkIncludingAfterEvent(thisConstraint,
                                                                token, keywordIndex,
                                                                theUnIndent);
                  thisConstraint
                    . setConstraintType ( DataConstraint.ACTIVATE_IN_TIME );
                  keywordIndex
                    += ( thisConstraint . getHasEventTagTask() ) ? 2 : 1;
          break;
        case AT:
          token = jj_consume_token(AT);
                  parseFluff ( thisConstraint, token, theUnIndent );
                  thisConstraint
                    . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
          if (jj_2_30(2147483647)) {
            parseEvent(thisConstraint, theUnIndent);
                      thisConstraint . setConstraintType (
                                            DataConstraint.ACTIVATE_AT_EVENT );
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case SIZEOF:
            case NEW:
            case DELETE:
            case CHAR:
            case SHORT:
            case INT:
            case LONG:
            case SIGNED:
            case UNSIGNED:
            case FLOAT:
            case DOUBLE:
            case VOID:
            case OPERATOR:
            case TASK:
            case GOAL:
            case COMMAND:
            case MONITOR:
            case EXCEPTION:
            case HANDLER:
            case RESUME:
            case HANDLES:
            case TRIGGER:
            case DISTRIBUTED:
            case THREADED:
            case NAME:
            case TDL_REF:
            case GET_NUMBER_OF_TRIGGERS:
            case GET_NUMBER_OF_ACTIVATES:
            case NOT:
            case PLUS:
            case MINUS:
            case INCREMENT:
            case DECREMENT:
            case SCOPE:
            case OPEN_PAREN:
            case AMPERSAND:
            case ASTERISK:
            case TILDE:
            case INTEGER_CONSTANT:
            case CHARACTER_CONSTANT:
            case STRING_CONSTANT:
            case ID:
            case NON_NEGATIVE_INTEGER_CONSTANT:
            case FLOAT_CONSTANT_BASIC:
            case FLOATING_CONSTANT:
              parseAbsoluteTimeExpression(thisConstraint, theUnIndent);
                      thisConstraint . setConstraintType (
                                             DataConstraint.ACTIVATE_AT_TIME );
              break;
            default:
              jj_la1[106] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[107] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[108] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[109] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public Token parseConstraintOption() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case HANDLING:
      jj_consume_token(HANDLING);
      break;
    case EXPANSION:
      jj_consume_token(EXPANSION);
      break;
    case EXECUTION:
      jj_consume_token(EXECUTION);
      break;
    case ACHIEVEMENT:
      jj_consume_token(ACHIEVEMENT);
      break;
    case PLANNING:
      jj_consume_token(PLANNING);
      break;
    default:
      jj_la1[110] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return getToken(0);}
    throw new Error("Missing return statement in function");
  }

  static final public Token parseStateBoundary() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ENABLED:
      jj_consume_token(ENABLED);
      break;
    case ACTIVE:
      jj_consume_token(ACTIVE);
      break;
    case COMPLETED:
      jj_consume_token(COMPLETED);
      break;
    default:
      jj_la1[111] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return getToken(0);}
    throw new Error("Missing return statement in function");
  }

  static final public void parseTagTaskIdWithIndexes(DataConstraintTagTaskIndexes theTagTaskObject,
                          DataComponent                theTagTaskDataComponent,
                          int                          theUnIndent) throws ParseException {
  DataVector      indexes = null;
  Token           token;
  DataExpression  dataExpression;
    token = parseIdToken();
            theTagTaskObject . setTagTask ( token.image );
            parseFluff ( theTagTaskDataComponent, token, theUnIndent );
            theTagTaskDataComponent
              . setIndex ( DataConstraintTagTaskIndexes.TAG_TASK );
    label_16:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPEN_BRACKET:
        ;
        break;
      default:
        jj_la1[112] = jj_gen;
        break label_16;
      }
      token = jj_consume_token(OPEN_BRACKET);
              parseFluff ( theTagTaskDataComponent, token, theUnIndent );
              if ( indexes == null )
                indexes = new DataVector();
              theTagTaskDataComponent . setIndex (
                      DataConstraintTagTaskIndexes.BEGIN_TAG_TASK_INDEX
                    + indexes.count() );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        dataExpression = parseExpressionObject(theUnIndent);
                  theTagTaskDataComponent . setIndex ( "" + indexes.count() );
                  indexes . addElement ( dataExpression );
        break;
      case PERIOD:
        token = jj_consume_token(PERIOD);
                  parseFluff ( theTagTaskDataComponent, token, theUnIndent );
                  theTagTaskDataComponent . setIndex ( "" + indexes.count() );
                  indexes . addElement (
                        DataConstraintTagTaskIndexes.DEFAULT_TAG_TASK_INDEX );
        break;
      default:
        jj_la1[113] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      token = jj_consume_token(CLOSE_BRACKET);
              parseFluff ( theTagTaskDataComponent, token, theUnIndent );
              theTagTaskDataComponent . setIndex (
                      DataConstraintTagTaskIndexes.END_TAG_TASK_INDEX
                    + indexes.count() );
    }
             if ( indexes == null )
               theTagTaskObject . setTagTaskIndexesWithoutParsing( null );
             else
             {
               Object[]  tagIndexes = new Object [ indexes.count() ];
               for ( int i=0;   i < indexes.count();   i++ )
               {
                 tagIndexes [ i ] = indexes . elementAt(i);
               }
               theTagTaskObject . setTagTaskIndexesWithoutParsing (tagIndexes);
             }

  }

  static final public DataConstraint parseTagTask(DataConstraint  theDataConstraint,
               int             theUnIndent) throws ParseException {
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );

  DataVector      indexes = null;
  Token           token, periodToken;
  DataExpression  dataExpression;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case THIS_CS:
    case THIS_CI:
    case SELF:
    case CHILD:
    case PARENT:
    case PREVIOUS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PREVIOUS:
        token = jj_consume_token(PREVIOUS);
                thisConstraint . setEventTagTask ( DataConstraint.PREVIOUS );
        break;
      case THIS_CS:
      case THIS_CI:
      case PARENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PARENT:
          token = jj_consume_token(PARENT);
                    System.err.println (
                                    TDLParser.getFilenameWithoutPathPlusColon()
                                    + (token.beginLine + 1)
                                    + TDLParser.PARENT_WARNING );
          break;
        case THIS_CS:
          token = jj_consume_token(THIS_CS);
          break;
        case THIS_CI:
          token = jj_consume_token(THIS_CI);
          break;
        default:
          jj_la1[114] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
              thisConstraint . setEventTagTask ( DataConstraint.THIS );
        break;
      case SELF:
      case CHILD:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SELF:
          token = jj_consume_token(SELF);
                    System.err.println (
                                    TDLParser.getFilenameWithoutPathPlusColon()
                                    + (token.beginLine + 1)
                                    + TDLParser.SELF_WARNING );
          break;
        case CHILD:
          token = jj_consume_token(CHILD);
          break;
        default:
          jj_la1[115] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
              thisConstraint . setEventTagTask ( DataConstraint.CHILD );
        break;
      default:
        jj_la1[116] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          parseFluff ( thisConstraint, token, theUnIndent );
          thisConstraint . setIndex ( DataConstraint.TAG_TASK );
          thisConstraint . setEventTagTaskIndexesWithoutParsing ( null );
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      parseTagTaskIdWithIndexes(thisConstraint, thisConstraint,
                                          theUnIndent);
      break;
    default:
      jj_la1[117] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseEvent(DataConstraint  theDataConstraint,
             int             theUnIndent) throws ParseException {
  DataConstraint thisConstraint             = null;
  Token          eventConstraintOptionToken = null;
  Token          stateBoundaryToken         = null;
    thisConstraint = parseTagTask(theDataConstraint, theUnIndent);
           /* Establish default of NO ConstraintOption... */
        thisConstraint . setEventConstraintOption ( DataConstraint.INVALID );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case HANDLING:
    case EXPANSION:
    case EXECUTION:
    case PLANNING:
    case ACHIEVEMENT:
      eventConstraintOptionToken = parseConstraintOption();
          thisConstraint . setEventConstraintOptionStringWithoutParsing (
                                          eventConstraintOptionToken . image );
          parseFluff ( thisConstraint, eventConstraintOptionToken,
                       theUnIndent );
          thisConstraint . setIndex ( DataConstraint.EVENT_CONSTRAINT_OPTION );
      break;
    default:
      jj_la1[118] = jj_gen;
      ;
    }
    stateBoundaryToken = parseStateBoundary();
        thisConstraint . setStateBoundaryStringWithoutParsing (
                                                  stateBoundaryToken . image );
        parseFluff ( thisConstraint, stateBoundaryToken, theUnIndent );
        thisConstraint . setIndex ( DataConstraint.STATE_BOUNDARY );
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseAbsoluteTimeExpression(DataConstraint  theDataConstraint,
                              int             theUnIndent) throws ParseException {
  DataConstraint thisConstraint = (   ( theDataConstraint != null )
                                    ?   theDataConstraint
                                    :   new DataConstraint() );
  DataExpression dataExpression;
    if (jj_2_31(2147483647)) {
      parseAbsoluteTime(thisConstraint, theUnIndent);
          thisConstraint . setTimeExpression ( null );
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        dataExpression = parseAssignmentExpressionObject(getToken(0).endColumn,
                                                                 false);
          thisConstraint . setTimeExpression ( dataExpression );
        break;
      default:
        jj_la1[119] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseRelativeTimeExpression(DataConstraint  theDataConstraint,
                              int             theUnIndent) throws ParseException {
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
  DataExpression dataExpression;
    if (jj_2_32(2147483647)) {
      parseRelativeTime(thisConstraint, theUnIndent);
          thisConstraint . setTimeExpression ( null );
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        dataExpression = parseAssignmentExpressionObject(getToken(0).endColumn,
                                                                 false);
          thisConstraint . setTimeExpression ( dataExpression );
        break;
      default:
        jj_la1[120] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseAbsoluteTime(DataConstraint  theDataConstraint,
                    int             theUnIndent) throws ParseException {
  DataConstraint thisConstraint = (   ( theDataConstraint != null )
                                    ?   theDataConstraint
                                    :   new DataConstraint() );
  Token    token,
           hours             = null,
           minutes           = null,
           seconds           = null,
           fractionOfASecond = null;
  int      intValue;
  String   errorString       = null;
  String   tmpString;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER_CONSTANT:
      hours = jj_consume_token(INTEGER_CONSTANT);
      break;
    case NON_NEGATIVE_INTEGER_CONSTANT:
      hours = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
      break;
    default:
      jj_la1[121] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        parseFluff ( thisConstraint, hours, theUnIndent );
        intValue = Integer.parseInt ( hours.image );
        if ( intValue < 0 )
          errorString =  "Hours (" + hours.image + ") < 0.";
        if ( intValue > 23 )
          errorString = "Hours (" + hours.image + ") > 23.";
        if ( errorString != null )
        {
          {if (true) throw generateParseException ( hours, errorString );}
        }
        else
        {
          thisConstraint . setHoursWithoutParsing ( hours.image );
          thisConstraint . setIndex ( DataConstraint.PRE_TIME_HOURS );
        }
    token = jj_consume_token(COLON);
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint . setIndex ( DataConstraint.POST_TIME_HOURS );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER_CONSTANT:
      minutes = jj_consume_token(INTEGER_CONSTANT);
      break;
    case NON_NEGATIVE_INTEGER_CONSTANT:
      minutes = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
      break;
    default:
      jj_la1[122] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        parseFluff ( thisConstraint, minutes, theUnIndent );
        intValue = Integer.parseInt ( minutes.image );
        if ( intValue < 0 )
          errorString = "Minutes (" + minutes.image + ") < 0.";
        if ( intValue > 59 )
          errorString = "Minutes (" + minutes.image + ") > 59.";
        if ( errorString != null )
        {
          {if (true) throw generateParseException ( minutes, errorString );}
        }
        else
        {
          thisConstraint . setMinutesWithoutParsing ( minutes.image );
          thisConstraint . setIndex ( DataConstraint.PRE_TIME_MINUTES );
        }
    token = jj_consume_token(COLON);
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint . setIndex ( DataConstraint.POST_TIME_MINUTES);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case FLOAT_CONSTANT_BASIC:
      seconds = jj_consume_token(FLOAT_CONSTANT_BASIC);
              parseFluff ( thisConstraint, seconds, theUnIndent );
              thisConstraint . setIndex ( DataConstraint.PRE_TIME_SECONDS );
              thisConstraint . removeIndex( DataConstraint.POST_TIME_SECONDS );
              thisConstraint . removeIndex (
                               DataConstraint.PRE_TIME_FRACTIONS_OF_A_SECOND );

                    /* If there is no period, something is very very wrong. */
              if ( seconds.image . indexOf ( '.' ) == -1 )
              {
                {if (true) throw generateParseException ( seconds,
                                           "Internal error:  No <PERIOD> "
                                         + "found in floating point number." );}
              }

                    /* If the period is the first character */
              else if ( seconds.image . startsWith ( "." ) )
              {
                thisConstraint . setSecondsWithoutParsing ( "0" );
              }

                    /* Lets extract the seconds the hard way... */
              else
              {
                tmpString = seconds.image
                              . substring ( 0,
                                            seconds.image . indexOf( '.' ) );
                intValue = Integer.parseInt ( tmpString );

                if ( intValue < 0 )
                  errorString =  "Seconds (" + seconds.image + ") < 0.";
                if ( intValue > 59 )
                  errorString = "Seconds (" + seconds.image + ") > 59.";
                if ( errorString != null )
                  {if (true) throw generateParseException ( seconds, errorString );}
                else
                  thisConstraint . setSecondsWithoutParsing ( tmpString );
              }

                    /* And set the fractions-of-a-second value... */
              if (    ( seconds.image . indexOf ( '.' ) + 1 )
                   >= ( seconds.image . length()            ) )
              {
                thisConstraint . setFractionsOfASecondWithoutParsing ( "0" );
              }
              else
              {
                thisConstraint . setFractionsOfASecondWithoutParsing (
                    seconds.image . substring ( seconds.image . indexOf ( '.' )
                                                + 1 ) );
              }
      break;
    case INTEGER_CONSTANT:
    case NON_NEGATIVE_INTEGER_CONSTANT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_CONSTANT:
        seconds = jj_consume_token(INTEGER_CONSTANT);
        break;
      case NON_NEGATIVE_INTEGER_CONSTANT:
        seconds = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
        break;
      default:
        jj_la1[123] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
              parseFluff ( thisConstraint, seconds, theUnIndent );
              intValue = Integer.parseInt ( seconds.image );
              if ( intValue < 0 )
                errorString =  "Seconds (" + seconds.image + ") < 0.";
              if ( intValue > 59 )
                errorString = "Seconds (" + seconds.image + ") > 59.";
              if ( errorString != null )
                {if (true) throw generateParseException ( seconds, errorString );}
              else
              {
                thisConstraint . setSecondsWithoutParsing ( seconds.image );
                thisConstraint . setIndex ( DataConstraint.PRE_TIME_SECONDS);
              }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PERIOD:
        token = jj_consume_token(PERIOD);
                parseFluff ( thisConstraint, token, theUnIndent );
                thisConstraint.setIndex ( DataConstraint.POST_TIME_SECONDS);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_CONSTANT:
          fractionOfASecond = jj_consume_token(INTEGER_CONSTANT);
          break;
        case NON_NEGATIVE_INTEGER_CONSTANT:
          fractionOfASecond = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
          break;
        default:
          jj_la1[124] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                parseFluff ( thisConstraint, fractionOfASecond, theUnIndent );
                thisConstraint . setFractionsOfASecondWithoutParsing (
                                                     fractionOfASecond.image );
                thisConstraint . setIndex (
                               DataConstraint.PRE_TIME_FRACTIONS_OF_A_SECOND );
        break;
      default:
        jj_la1[125] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[126] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseRelativeTime(DataConstraint  theDataConstraint,
                    int             theUnIndent) throws ParseException {
  Token           token, hours, minutes, seconds, fractionOfASecond ;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :   new DataConstraint() );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER_CONSTANT:
      hours = jj_consume_token(INTEGER_CONSTANT);
      break;
    case NON_NEGATIVE_INTEGER_CONSTANT:
      hours = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
      break;
    default:
      jj_la1[127] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        parseFluff ( thisConstraint, hours, theUnIndent );
        thisConstraint . setHoursWithoutParsing ( hours.image );
        thisConstraint . setIndex ( DataConstraint.PRE_TIME_HOURS );
    token = jj_consume_token(COLON);
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint . setIndex ( DataConstraint.POST_TIME_HOURS );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER_CONSTANT:
      minutes = jj_consume_token(INTEGER_CONSTANT);
      break;
    case NON_NEGATIVE_INTEGER_CONSTANT:
      minutes = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
      break;
    default:
      jj_la1[128] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        parseFluff ( thisConstraint, minutes, theUnIndent );
        thisConstraint . setMinutesWithoutParsing ( minutes.image );
        thisConstraint . setIndex ( DataConstraint.PRE_TIME_MINUTES );
    token = jj_consume_token(COLON);
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint . setIndex ( DataConstraint.POST_TIME_MINUTES );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case FLOAT_CONSTANT_BASIC:
      seconds = jj_consume_token(FLOAT_CONSTANT_BASIC);
            parseFluff ( thisConstraint, seconds, theUnIndent );
            thisConstraint . setIndex ( DataConstraint.PRE_TIME_SECONDS );
            thisConstraint . removeIndex ( DataConstraint.POST_TIME_SECONDS );
            thisConstraint
              . removeIndex ( DataConstraint.PRE_TIME_FRACTIONS_OF_A_SECOND );

                /* If there is no period, something is very very wrong. */
            if ( seconds.image . indexOf ( '.' ) == -1 )
            {
              {if (true) throw generateParseException ( seconds,
                                           "Internal error:  No <PERIOD> "
                                         + "found in floating point number." );}
            }

                /* If the period is the first character */
            else if ( seconds.image . startsWith ( "." ) )
            {
              thisConstraint . setSecondsWithoutParsing ( "0" );
            }

                /* Lets extract the seconds the hard way... */
            else
            {
              thisConstraint . setSecondsWithoutParsing (
                seconds.image . substring ( 0,
                                            seconds.image . indexOf( '.' ) ) );
            }


                /* And set the fractions-of-a-second value... */
            if (    ( seconds.image . indexOf ( '.' ) + 1 )
                 >= ( seconds.image . length()            ) )
            {
              thisConstraint . setFractionsOfASecondWithoutParsing ( "0" );
            }
            else
            {
              thisConstraint . setFractionsOfASecondWithoutParsing (
                seconds.image . substring( seconds.image . indexOf('.') + 1 ));
            }
      break;
    case INTEGER_CONSTANT:
    case NON_NEGATIVE_INTEGER_CONSTANT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER_CONSTANT:
        seconds = jj_consume_token(INTEGER_CONSTANT);
        break;
      case NON_NEGATIVE_INTEGER_CONSTANT:
        seconds = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
        break;
      default:
        jj_la1[129] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
              parseFluff ( thisConstraint, seconds, theUnIndent );
              thisConstraint . setSecondsWithoutParsing ( seconds.image );
              thisConstraint . setIndex ( DataConstraint.PRE_TIME_SECONDS );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PERIOD:
        token = jj_consume_token(PERIOD);
                parseFluff ( thisConstraint, token, theUnIndent );
                thisConstraint . setIndex ( DataConstraint.POST_TIME_SECONDS );
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case INTEGER_CONSTANT:
          fractionOfASecond = jj_consume_token(INTEGER_CONSTANT);
          break;
        case NON_NEGATIVE_INTEGER_CONSTANT:
          fractionOfASecond = jj_consume_token(NON_NEGATIVE_INTEGER_CONSTANT);
          break;
        default:
          jj_la1[130] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                parseFluff ( thisConstraint, fractionOfASecond, theUnIndent );
                thisConstraint . setFractionsOfASecondWithoutParsing (
                                                     fractionOfASecond.image );
                thisConstraint
                  . setIndex ( DataConstraint.PRE_TIME_FRACTIONS_OF_A_SECOND );
        break;
      default:
        jj_la1[131] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[132] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

/** Extremely useful, if somewhat hard to describe routine...
  * It processes the last token, then parses <relative-time>,
  * followed by an optional "AFTER event" clause.
  */
  static final public DataConstraint parseTrailingChunkIncludingAfterEvent(DataConstraint  theDataConstraint,
                                        Token           theInitialToken,
                                        int             theKeywordIndex,
                                        int             theUnIndent) throws ParseException {
  DataConstraint thisConstraint = (   ( theDataConstraint != null )
                                    ?   theDataConstraint
                                    :   new DataConstraint() );
  Token    token;

        /* Handle initial token processing */
  parseFluff ( thisConstraint, theInitialToken, theUnIndent );
  thisConstraint . setIndex ( DataConstraint.KEYWORD + (theKeywordIndex++) );
        /* Note that we have no "AFTER" event by default... */
  thisConstraint . setEventTagTask ( null );
    parseRelativeTimeExpression(thisConstraint, theUnIndent);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case AFTER:
      token = jj_consume_token(AFTER);
           parseFluff ( thisConstraint, token, theUnIndent );
           thisConstraint
             . setIndex ( DataConstraint.KEYWORD + (theKeywordIndex++) );
      parseEvent(thisConstraint, theUnIndent);
      break;
    default:
      jj_la1[133] = jj_gen;
      ;
    }
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraintStatement parseConstraintStatement(int theUnIndent) throws ParseException {
  DataVector               indexes = null;
  Token                    token = getToken(1); /* The First Token */
  DataConstraintStatement  constraintStatement = new DataConstraintStatement();
  DataExpression           dataExpression;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case THIS_CS:
    case THIS_CI:
    case PARENT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PARENT:
        token = jj_consume_token(PARENT);
                  System.err.println (
                                    TDLParser.getFilenameWithoutPathPlusColon()
                                    + (token.beginLine + 1)
                                    + TDLParser.PARENT_WARNING );
        break;
      case THIS_CS:
        token = jj_consume_token(THIS_CS);
        break;
      case THIS_CI:
        token = jj_consume_token(THIS_CI);
        break;
      default:
        jj_la1[134] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
            constraintStatement . setTaskTag ( DataConstraintStatement.THIS );
            parseFluff ( constraintStatement, token, theUnIndent );
            constraintStatement . setIndex ( DataConstraintStatement.TAG_TASK);
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      parseTagTaskIdWithIndexes(constraintStatement, constraintStatement,
                                            theUnIndent);
      break;
    default:
      jj_la1[135] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        constraintStatement . setLineNumber ( token.beginLine + 1 );
    parseConstraint(constraintStatement . getConstraint(), theUnIndent);
    token = jj_consume_token(SEMICOLON);
        parseFluff ( constraintStatement, token, theUnIndent );
        constraintStatement . setIndex ( DataConstraintStatement.SEMICOLON );
      {if (true) return constraintStatement;}
    throw new Error("Missing return statement in function");
  }

/*
 * This constraint, unlike most constraints, assume's the "PARENT" value
 * is a TCM_Task_Tree_Ref object.
 */
  static final public DataConstraint parseTcmTaskTreeParentConstraint(DataConstraint theDataConstraint,
                                   int            theUnIndent) throws ParseException {
  Token           token;
  int             keywordIndex = 0;
  DataExpression  parentDataExpression;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :  new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    /* PARENT "TCM_Task_Tree_Ref" constraint */
        token = jj_consume_token(PARENT);
        thisConstraint
        . setConstraintType ( DataConstraint.TCM_TASK_TREE_PARENT );
        thisConstraint . setLineNumber ( token.beginLine + 1 );
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint
          . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
    parentDataExpression = parseAssignmentExpressionObject(theUnIndent, true);
        thisConstraint
          . setTcmTaskTreeParentExpression ( parentDataExpression );
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

/*
 * This constraint, unlike most constraints, assume's the "TDL_REF_IN" value
 * is a TCM_Task_Tree_Ref object.
 */
  static final public DataConstraint parseTdlRefInConstraint(DataConstraint theDataConstraint,
                          int            theUnIndent) throws ParseException {
  Token           token;
  int             keywordIndex = 0;
  DataExpression  tdlRefInExpression;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :  new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TDL_REF:
      token = jj_consume_token(TDL_REF);
              thisConstraint . setConstraintType ( DataConstraint.TDL_REF_IN );
              thisConstraint . setLineNumber ( token.beginLine + 1 );
              parseFluff ( thisConstraint, token, theUnIndent );
              thisConstraint
                . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IN:
        token = jj_consume_token(IN);
                parseFluff ( thisConstraint, token, theUnIndent );
                thisConstraint
                  . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
        break;
      default:
        jj_la1[136] = jj_gen;
        ;
      }
      break;
    case TDL_REF_IN:
      token = jj_consume_token(TDL_REF_IN);
              thisConstraint . setConstraintType ( DataConstraint.TDL_REF_IN );
              thisConstraint . setLineNumber ( token.beginLine + 1 );
              parseFluff ( thisConstraint, token, theUnIndent );
              thisConstraint
                . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
      break;
    default:
      jj_la1[137] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    //da0g: Double-check #line number macros
        tdlRefInExpression = parseAssignmentExpressionObject(theUnIndent, true);
        thisConstraint . setTdlRefInExpression ( tdlRefInExpression );
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

/*
 * Assume's the "NAME" value evaluates to a TCM (STRING) type.
 */
  static final public DataConstraint parseTcmTaskTreeNameConstraint(DataConstraint theDataConstraint,
                                 int            theUnIndent) throws ParseException {
  Token           token;
  int             keywordIndex = 0;
  DataExpression  nameDataExpression;
  DataConstraint  thisConstraint = (   ( theDataConstraint != null )
                                     ?   theDataConstraint
                                     :  new DataConstraint() );
  if ( theDataConstraint != null )
    theDataConstraint . clearConstraint();
    /* NAME "(STRING)" constraint */
        token = jj_consume_token(NAME);
        thisConstraint
        . setConstraintType ( DataConstraint.TCM_TASK_TREE_NAME );
        thisConstraint . setLineNumber ( token.beginLine + 1 );
        parseFluff ( thisConstraint, token, theUnIndent );
        thisConstraint
          . setIndex ( DataConstraint.KEYWORD + (keywordIndex++) );
    nameDataExpression = parseAssignmentExpressionObject(theUnIndent, true);
        thisConstraint . setTcmTaskTreeNameExpression ( nameDataExpression );
      {if (true) return thisConstraint;}
    throw new Error("Missing return statement in function");
  }

/************************/
/*** Task Spawning... ***/
/************************/
  static final public DataSpawnTask parseSpawnTask_TaskOnly(DataSpawnTask theDataSpawnTask, int theUnIndent) throws ParseException {
  Token           token;
  DataExpression  dataExpression = null;
  DataSpawnTask   spawnTask = ( ( theDataSpawnTask != null )
                               ?  theDataSpawnTask : new DataSpawnTask() );
    token = parseIdToken();
        parseFluff ( spawnTask, token, theUnIndent );
        spawnTask . setIndex ( DataSpawnTask.TASK_NAME_INDEX );
        spawnTask . setTaskName ( token.image );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( spawnTask, token, theUnIndent );
        spawnTask . setIndex ( DataSpawnTask.OPEN_PAREN );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      dataExpression = parseAssignmentExpressionObject(theUnIndent, false);
          spawnTask . addArgument ( dataExpression );
      label_17:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          ;
          break;
        default:
          jj_la1[138] = jj_gen;
          break label_17;
        }
        token = jj_consume_token(COMMA);
            parseFluff ( dataExpression, token, theUnIndent );
        dataExpression = parseAssignmentExpressionObject(theUnIndent, false);
            spawnTask . addArgument ( dataExpression );
      }
      break;
    default:
      jj_la1[139] = jj_gen;
      ;
    }
    token = jj_consume_token(CLOSE_PAREN);
        if ( dataExpression != null )
          parseFluff ( dataExpression, token, theUnIndent );
        else
          parseFluff ( spawnTask, token, theUnIndent );
        spawnTask . setIndex ( DataSpawnTask.CLOSE_PAREN );
      {if (true) return spawnTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataConstraint parseSpawnTask_IndividualSpawnConstraint(int theUnIndent) throws ParseException {
  DataConstraint  dataConstraint;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXCEPTION:
    case HANDLER:
    case EXPAND:
    case DELAY:
    case SEQUENTIAL:
    case SERIAL:
    case PARALLEL:
    case WAIT:
    case DISABLE:
    case TERMINATE:
    case MAXIMUM:
    case ACTIVATE:
    case MONITOR_PERIOD:
    case ON:
    case EXPAND_FIRST:
    case DELAY_EXPANSION:
    case SEQUENTIAL_HANDLING:
    case SEQUENTIAL_EXPANSION:
    case SEQUENTIAL_EXECUTION:
    case SEQUENTIAL_PLANNING:
    case SEQUENTIAL_ACHIEVEMENT:
    case DISABLE_UNTIL:
    case DISABLE_FOR:
    case TERMINATE_AT:
    case TERMINATE_IN:
    case ACTIVATE_AT:
    case ACTIVATE_IN:
    case MAXIMUM_ACTIVATE:
    case MAXIMUM_TRIGGER:
    case ON_TERMINATE:
      dataConstraint = parseConstraint(null, theUnIndent);
      break;
    case PARENT:
      dataConstraint = parseTcmTaskTreeParentConstraint(null, theUnIndent);
      break;
    case TDL_REF:
    case TDL_REF_IN:
      dataConstraint = parseTdlRefInConstraint(null, theUnIndent);
      break;
    case NAME:
      dataConstraint = parseTcmTaskTreeNameConstraint(null, theUnIndent);
      break;
    default:
      jj_la1[140] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return dataConstraint;}
    throw new Error("Missing return statement in function");
  }

  static final public DataSpawnTask parseSpawnTask_ConstraintsOnly(DataSpawnTask  theDataSpawnTask,
                                 int            theUnIndent) throws ParseException {
  Token           token;
  DataConstraint  dataConstraint = null;
  DataSpawnTask   spawnTask = ( ( theDataSpawnTask != null )
                               ?  theDataSpawnTask : new DataSpawnTask() );
    dataConstraint = parseSpawnTask_IndividualSpawnConstraint(theUnIndent);
        spawnTask . addConstraint ( dataConstraint );
    label_18:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[141] = jj_gen;
        break label_18;
      }
      token = jj_consume_token(COMMA);
          parseFluff ( dataConstraint, token, theUnIndent );
      dataConstraint = parseSpawnTask_IndividualSpawnConstraint(theUnIndent);
          spawnTask . addConstraint ( dataConstraint );
    }
      {if (true) return spawnTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataSpawnTask parseSpawnTask(DataSpawnTask  theDataSpawnTask, int theUnIndent) throws ParseException {
  Token           token;
  DataSpawnTask   spawnTask = ( ( theDataSpawnTask != null )
                               ?  theDataSpawnTask : new DataSpawnTask() );
    token = jj_consume_token(SPAWN);
        spawnTask . setLineNumber ( token.beginLine + 1 );
        parseFluff ( spawnTask, token, theUnIndent );
        spawnTask . setIndex ( DataSpawnTask.SPAWN );
    parseSpawnTask_TaskOnly(spawnTask, theUnIndent);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case WITH:
      token = jj_consume_token(WITH);
          parseFluff ( spawnTask, token, theUnIndent );
          spawnTask . setIndex ( DataSpawnTask.WITH );
      parseSpawnTask_ConstraintsOnly(spawnTask, theUnIndent);
      break;
    default:
      jj_la1[142] = jj_gen;
      ;
    }
    token = jj_consume_token(SEMICOLON);
        parseFluff ( spawnTask, token, theUnIndent );
        spawnTask . setIndex ( DataSpawnTask.SEMICOLON );
      {if (true) return spawnTask;}
    throw new Error("Missing return statement in function");
  }

  static final public DataSpawnTask parseLabeledSpawnTask(DataSpawnTask  theDataSpawnTask, int theUnIndent) throws ParseException {
  DataLabelStatement  dataLabel, oldLabel  = null;
  DataSpawnTask       spawnTask = ( ( theDataSpawnTask != null )
                                   ?  theDataSpawnTask : new DataSpawnTask() );
    label_19:
    while (true) {
      if (jj_2_33(2147483647)) {
        ;
      } else {
        break label_19;
      }
      dataLabel = parseLabel(theUnIndent, false);
                  /* Order is important here to preserve parent information */
        if ( oldLabel == null )
          spawnTask . setLabel ( dataLabel );
        else
          oldLabel . setLabel ( dataLabel );
        oldLabel = dataLabel;
    }
    parseSpawnTask(spawnTask, theUnIndent);
      {if (true) return spawnTask;}
    throw new Error("Missing return statement in function");
  }

/*************************/
/*** TCM Task Binding ****/
/*************************/
  static final public DataBindTaskStatement parseBindTaskStatement(int theUnIndent) throws ParseException {
  Token                   token;
  DataBindTaskStatement   dataBindTaskStatement = new DataBindTaskStatement();
  DataExpression          dataExpression = null;
    token = jj_consume_token(TDL_BIND);
        dataBindTaskStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataBindTaskStatement, token, theUnIndent );
        dataBindTaskStatement
          . setIndex ( DataBindTaskStatement.BIND_INDEX );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataBindTaskStatement, token, theUnIndent );
        dataBindTaskStatement
          . setIndex ( DataBindTaskStatement.OPEN_PAREN );
    if (jj_2_34(2147483647)) {
      dataExpression = parseAssignmentExpressionObject(theUnIndent, false);
              dataBindTaskStatement
                . setLineNumberOfTaskValueToBind ( token.next.beginLine + 1 );
                /*parseFluff is dealt with in parseAssignmentExpressionObject*/
              dataBindTaskStatement
                . setTaskValueToBind ( dataExpression . toString() );
              dataBindTaskStatement
                . setIndex ( DataBindTaskStatement.TASK_VALUE );
      token = jj_consume_token(COMMA);
              parseFluff ( dataBindTaskStatement, token, theUnIndent );
              dataBindTaskStatement
                . setIndex ( DataBindTaskStatement.COMMA );
      token = parseIdToken();
              parseFluff ( dataBindTaskStatement, token, theUnIndent );
              dataBindTaskStatement . setTaskNameToBind( token.image );
              dataBindTaskStatement
                . setIndex ( DataBindTaskStatement.TASK_NAME );
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case ID:
        token = parseIdToken();
            dataBindTaskStatement
              . setLineNumberOfTaskValueToBind ( token.beginLine + 1 );
            parseFluff ( dataBindTaskStatement, token, theUnIndent );
            dataBindTaskStatement . setTaskValueToBind ( token.image );
            dataBindTaskStatement . setTaskNameToBind  ( null );
            dataBindTaskStatement
            . setIndex ( DataBindTaskStatement.TASK_VALUE );
        break;
      default:
        jj_la1[143] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    token = jj_consume_token(CLOSE_PAREN);
        parseFluff ( dataBindTaskStatement, token, theUnIndent );
        dataBindTaskStatement
          . setIndex ( DataBindTaskStatement.CLOSE_PAREN );
    token = jj_consume_token(SEMICOLON);
        parseFluff ( dataBindTaskStatement, token, theUnIndent );
        dataBindTaskStatement
          . setIndex ( DataBindTaskStatement.SEMICOLON );
      {if (true) return dataBindTaskStatement;}
    throw new Error("Missing return statement in function");
  }

/******************/
/*** Statements ***/
/******************/
  static final public DataStatement parseStatement(int theUnIndent, int theCompoundUnIndent) throws ParseException {
  DataStatement returnValue = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPEN_BRACE:
      returnValue = parseCompoundStatement(theCompoundUnIndent);
      break;
    case WITH:
      returnValue = parseWithDo(theUnIndent);
      break;
    case SPAWN:
      returnValue = parseSpawnTask(null, theUnIndent);
      break;
    case TDL_BIND:
      returnValue = parseBindTaskStatement(theUnIndent);
      break;
    case IF:
    case SWITCH:
      returnValue = parseSelectionStatement(theUnIndent);
      break;
    case DO:
    case FOR_CS:
    case WHILE:
      returnValue = parseIterationStatement(theUnIndent);
      break;
    case BREAK:
    case CONTINUE:
    case RETURN:
    case SUCCESS:
    case POSTPONE:
    case FAIL:
      returnValue = parseJumpStatement(theUnIndent);
      break;
    case EXTERN_CS:
    case DEFAULT_LABEL:
    case CASE:
    case SIZEOF:
    case NEW:
    case DELETE:
    case FRIEND:
    case TYPEDEF:
    case AUTO:
    case REGISTER:
    case STATIC:
    case INLINE:
    case VIRTUAL:
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case ASM:
    case OPERATOR:
    case GOTO:
    case THROW:
    case CATCH:
    case FINALLY:
    case SETJMP:
    case LONGJMP:
    case _SETJMP:
    case _LONGJMP:
    case SIGSETJMP:
    case SIGLONGJMP:
    case THIS_CS:
    case THIS_CI:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case PARENT:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case SEMICOLON:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      if (jj_2_37(2147483647)) {
        /* Was it a label? */
                  returnValue = parseLabeledStatement(theUnIndent);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXTERN_CS:
        case SIZEOF:
        case NEW:
        case DELETE:
        case FRIEND:
        case TYPEDEF:
        case AUTO:
        case REGISTER:
        case STATIC:
        case INLINE:
        case VIRTUAL:
        case CONST:
        case VOLATILE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case CLASS:
        case STRUCT:
        case UNION:
        case ENUM:
        case ASM:
        case OPERATOR:
        case GOTO:
        case THROW:
        case CATCH:
        case FINALLY:
        case SETJMP:
        case LONGJMP:
        case _SETJMP:
        case _LONGJMP:
        case SIGSETJMP:
        case SIGLONGJMP:
        case THIS_CS:
        case THIS_CI:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case PARENT:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case SEMICOLON:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          if (jj_2_36(2147483647)) {
            catchIllegalCode();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case EXTERN_CS:
            case SIZEOF:
            case NEW:
            case DELETE:
            case FRIEND:
            case TYPEDEF:
            case AUTO:
            case REGISTER:
            case STATIC:
            case INLINE:
            case VIRTUAL:
            case CONST:
            case VOLATILE:
            case CHAR:
            case SHORT:
            case INT:
            case LONG:
            case SIGNED:
            case UNSIGNED:
            case FLOAT:
            case DOUBLE:
            case VOID:
            case CLASS:
            case STRUCT:
            case UNION:
            case ENUM:
            case ASM:
            case OPERATOR:
            case THIS_CS:
            case THIS_CI:
            case TASK:
            case GOAL:
            case COMMAND:
            case MONITOR:
            case EXCEPTION:
            case HANDLER:
            case RESUME:
            case HANDLES:
            case PARENT:
            case TRIGGER:
            case DISTRIBUTED:
            case THREADED:
            case NAME:
            case TDL_REF:
            case GET_NUMBER_OF_TRIGGERS:
            case GET_NUMBER_OF_ACTIVATES:
            case NOT:
            case PLUS:
            case MINUS:
            case INCREMENT:
            case DECREMENT:
            case SCOPE:
            case OPEN_PAREN:
            case SEMICOLON:
            case AMPERSAND:
            case ASTERISK:
            case TILDE:
            case INTEGER_CONSTANT:
            case CHARACTER_CONSTANT:
            case STRING_CONSTANT:
            case ID:
            case FLOAT_CONSTANT_BASIC:
            case FLOATING_CONSTANT:
              if (jj_2_35(2147483647)) {
                /* Was it a constraintStatement? */
                                  returnValue = parseConstraintStatement(theUnIndent);
              } else {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case EXTERN_CS:
                case SIZEOF:
                case NEW:
                case DELETE:
                case FRIEND:
                case TYPEDEF:
                case AUTO:
                case REGISTER:
                case STATIC:
                case INLINE:
                case VIRTUAL:
                case CONST:
                case VOLATILE:
                case CHAR:
                case SHORT:
                case INT:
                case LONG:
                case SIGNED:
                case UNSIGNED:
                case FLOAT:
                case DOUBLE:
                case VOID:
                case CLASS:
                case STRUCT:
                case UNION:
                case ENUM:
                case ASM:
                case OPERATOR:
                case TASK:
                case GOAL:
                case COMMAND:
                case MONITOR:
                case EXCEPTION:
                case HANDLER:
                case RESUME:
                case HANDLES:
                case TRIGGER:
                case DISTRIBUTED:
                case THREADED:
                case NAME:
                case TDL_REF:
                case GET_NUMBER_OF_TRIGGERS:
                case GET_NUMBER_OF_ACTIVATES:
                case NOT:
                case PLUS:
                case MINUS:
                case INCREMENT:
                case DECREMENT:
                case SCOPE:
                case OPEN_PAREN:
                case SEMICOLON:
                case AMPERSAND:
                case ASTERISK:
                case TILDE:
                case INTEGER_CONSTANT:
                case CHARACTER_CONSTANT:
                case STRING_CONSTANT:
                case ID:
                case FLOAT_CONSTANT_BASIC:
                case FLOATING_CONSTANT:
                  returnValue = parseForInitStatement(theUnIndent);
                  break;
                default:
                  jj_la1[144] = jj_gen;
                  jj_consume_token(-1);
                  throw new ParseException();
                }
              }
              break;
            default:
              jj_la1[145] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[146] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[147] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      if ( returnValue == null )
      {
        System.err.println ( "[TDLParser:parseStatement] Error:  "
                   + "returnValue is null.  Possibly programmer error..." );
      }
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

  static final public DataLabelStatement parseLabel(int theUnIndent, boolean theAllowCaseOrDefaultLabels) throws ParseException {
  Token               token;
  DataLabelStatement  dataLabel = new DataLabelStatement();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      token = parseIdToken();
              dataLabel . setLineNumber ( token.beginLine + 1 );
              parseFluff ( dataLabel, token, theUnIndent );
              dataLabel . setId    ( token.image );
              dataLabel . setIndex ( DataLabelStatement.FIRST_TOKEN_INDEX );
      break;
    case CASE:
      token = jj_consume_token(CASE);
              if ( theAllowCaseOrDefaultLabels == false )
              {
                {if (true) throw generateParseException ( token,
                              "A \"case ...:\" label is not permitted here." );}
              }
              dataLabel . setIsCase ( true );
              dataLabel . setLineNumber ( token.beginLine + 1 );
              parseFluff ( dataLabel, token, theUnIndent );
              dataLabel . addSubcomponent ( token.image );
              dataLabel . setIndex ( DataLabelStatement.FIRST_TOKEN_INDEX );
      parseConstantExpression();
              parseMiscTokens ( dataLabel, token, theUnIndent );
      break;
    case DEFAULT_LABEL:
      token = jj_consume_token(DEFAULT_LABEL);
              if ( theAllowCaseOrDefaultLabels == false )
              {
                {if (true) throw generateParseException ( token,
                               "A \"default:\" label is not permitted here." );}
              }
              dataLabel . setIsDefault ( true );
              dataLabel . setLineNumber ( token.beginLine + 1 );
              parseFluff ( dataLabel, token, theUnIndent );
              dataLabel . addSubcomponent ( token.image );
              dataLabel . setIndex ( DataLabelStatement.FIRST_TOKEN_INDEX );
      break;
    default:
      jj_la1[148] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    token = jj_consume_token(COLON);
        parseFluff ( dataLabel, token, theUnIndent );
        dataLabel . setIndex ( DataLabelStatement.COLON );
      {if (true) return dataLabel;}
    throw new Error("Missing return statement in function");
  }

  static final public DataStatement parseLabeledStatement(int theUnIndent) throws ParseException {
  DataLabelStatement   dataLabel, oldStatmentLabel;
  DataStatement        dataStatement;
    dataLabel = parseLabel(theUnIndent, true);
    dataStatement = parseStatement(theUnIndent, theUnIndent);
        /* Order is important here to preserve parent information */
      oldStatmentLabel = dataStatement . getLabel();
      dataStatement . setLabel ( dataLabel );
      dataLabel     . setLabel ( oldStatmentLabel );
      {if (true) return dataStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataExpressionStatement parseExpressionStatement(int theUnIndent) throws ParseException {
  Token                    token;
  Token                    firstToken     = getToken(1);
  DataExpression           dataExpression = null;
  DataExpressionStatement  dataExpressionStatement
                                          = new DataExpressionStatement();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      dataExpression = parseExpressionObject(theUnIndent);
           dataExpressionStatement . setIndex (
                                    DataExpressionStatement.EXPRESSION_INDEX );
      break;
    default:
      jj_la1[149] = jj_gen;
      ;
    }
    token = jj_consume_token(SEMICOLON);
         dataExpressionStatement . setLineNumber ( firstToken.beginLine + 1 );
         dataExpressionStatement . setExpression ( dataExpression );
         parseFluff ( dataExpressionStatement, token, theUnIndent );
         dataExpressionStatement . setIndex (
                                        DataExpressionStatement.SEMICOLON );
      {if (true) return dataExpressionStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataCompoundStatement parseCompoundStatement(int theUnIndent) throws ParseException {
  Token                  token;
  DataCompoundStatement  dataCompound = new DataCompoundStatement();
  DataStatement          dataStatement;
    token = jj_consume_token(OPEN_BRACE);
        dataCompound . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataCompound, token, theUnIndent );
        dataCompound . setIndex ( DataCompoundStatement.OPEN_BRACE );
    label_20:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case DO:
      case IF:
      case SWITCH:
      case DEFAULT_LABEL:
      case FOR_CS:
      case WHILE:
      case BREAK:
      case CONTINUE:
      case RETURN:
      case CASE:
      case SIZEOF:
      case NEW:
      case DELETE:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case ASM:
      case OPERATOR:
      case GOTO:
      case THROW:
      case CATCH:
      case FINALLY:
      case SETJMP:
      case LONGJMP:
      case _SETJMP:
      case _LONGJMP:
      case SIGSETJMP:
      case SIGLONGJMP:
      case THIS_CS:
      case THIS_CI:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case SUCCESS:
      case POSTPONE:
      case FAIL:
      case PARENT:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SPAWN:
      case WITH:
      case TDL_REF:
      case TDL_BIND:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case OPEN_BRACE:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        ;
        break;
      default:
        jj_la1[150] = jj_gen;
        break label_20;
      }
      dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                            theUnIndent + DataComponent.getIndent());
          dataCompound . addSubcomponent ( dataStatement );
    }
    token = jj_consume_token(CLOSE_BRACE);
        dataCompound . setLineNumberOfCloseBrace ( token.beginLine + 1 );
        parseFluff ( dataCompound, token, theUnIndent );
        dataCompound . setIndex ( DataCompoundStatement.CLOSE_BRACE );
      {if (true) return dataCompound;}
    throw new Error("Missing return statement in function");
  }

  static final public DataWithDoStatement parseWithDo_Constraints(DataWithDoStatement  theDataWithDoStatement,
                          int                  theUnIndent) throws ParseException {
  Token                token;
  DataConstraint       dataConstraint = null;
  DataWithDoStatement  dataWithDoStatement
                         = (   ( theDataWithDoStatement != null )
                             ? theDataWithDoStatement
                             : new DataWithDoStatement() );
    dataConstraint = parseConstraint(null, theUnIndent);
        dataWithDoStatement . addConstraint ( dataConstraint );
    label_21:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[151] = jj_gen;
        break label_21;
      }
      token = jj_consume_token(COMMA);
          parseFluff ( dataConstraint, token, theUnIndent );
      dataConstraint = parseConstraint(null, theUnIndent);
          dataWithDoStatement . addConstraint ( dataConstraint );
    }
        /* Parse the fluff off the next (future) token... */
      parseFluff ( dataConstraint, getToken(1), theUnIndent );
      {if (true) return dataWithDoStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataWithDoStatement parseWithDo(int theUnIndent) throws ParseException {
  Token                token;
  DataWithDoStatement  dataWithDoStatement = new DataWithDoStatement();
  DataConstraint       dataConstraint      = null;
  DataStatement        dataStatement       = null;
    token = jj_consume_token(WITH);
        dataWithDoStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataWithDoStatement, token, theUnIndent );
        dataWithDoStatement . setIndex ( DataWithDoStatement.WITH );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataWithDoStatement, token, theUnIndent );
        dataWithDoStatement . setIndex ( DataWithDoStatement.OPEN_PAREN );
    parseWithDo_Constraints(dataWithDoStatement, theUnIndent);
    token = jj_consume_token(CLOSE_PAREN);
        dataWithDoStatement . setIndex ( DataWithDoStatement.CLOSE_PAREN );
    dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                         theUnIndent);
        dataWithDoStatement . setStatement ( dataStatement );
      {if (true) return dataWithDoStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataSelectionStatement parseSelectionStatement(int theUnIndent) throws ParseException {
  DataSelectionStatement   dataSelectionStatement;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IF:
      dataSelectionStatement = parseIfElse(theUnIndent);
      break;
    case SWITCH:
      dataSelectionStatement = parseSwitch(theUnIndent);
      break;
    default:
      jj_la1[152] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return dataSelectionStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataIterationStatement parseIterationStatement(int theUnIndent) throws ParseException {
  DataIterationStatement  dataIterationStatement = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case FOR_CS:
      dataIterationStatement = parseFor(theUnIndent);
      break;
    case WHILE:
      dataIterationStatement = parseWhile(theUnIndent);
      break;
    case DO:
      dataIterationStatement = parseDoWhile(theUnIndent);
      break;
    default:
      jj_la1[153] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return dataIterationStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataJumpStatement parseJumpStatement(int theUnIndent) throws ParseException {
  Token                 token;
  DataJumpStatement     dataJumpStatement    = new DataJumpStatement();
  DataExpression        dataExpression       = null;
  DataSpawnTask         exceptionTask        = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case BREAK:
      token = jj_consume_token(BREAK);
            dataJumpStatement.setType ( DataJumpStatement.BREAK_TYPE    );
      break;
    case CONTINUE:
      token = jj_consume_token(CONTINUE);
            dataJumpStatement.setType ( DataJumpStatement.CONTINUE_TYPE );
      break;
    case RETURN:
      token = jj_consume_token(RETURN);
              dataJumpStatement.setType ( DataJumpStatement.RETURN_TYPE );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        dataExpression = parseExpressionObject(theUnIndent);
        break;
      default:
        jj_la1[154] = jj_gen;
        ;
      }
      break;
    case SUCCESS:
      token = jj_consume_token(SUCCESS);
            dataJumpStatement.setType ( DataJumpStatement.SUCCESS_TYPE  );
      break;
    case POSTPONE:
      token = jj_consume_token(POSTPONE);
            dataJumpStatement.setType ( DataJumpStatement.POSTPONE_TYPE );
      break;
    case FAIL:
      token = jj_consume_token(FAIL);
              dataJumpStatement.setType ( DataJumpStatement.FAIL_TYPE   );
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case ID:
        exceptionTask = parseSpawnTask_TaskOnly(null,
                                                              getToken(0).endColumn);
        break;
      default:
        jj_la1[155] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[156] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
        parseFluff ( dataJumpStatement, token, theUnIndent );
        dataJumpStatement . setIndex ( DataJumpStatement.FIRST_TOKEN_INDEX );
        dataJumpStatement . setLineNumber     ( token.beginLine + 1 );
        dataJumpStatement . setDataExpression ( dataExpression );
        dataJumpStatement . setExceptionTask  ( exceptionTask );
    token = jj_consume_token(SEMICOLON);
        parseFluff ( dataJumpStatement, token, theUnIndent );
        dataJumpStatement . setIndex ( DataJumpStatement.SEMICOLON );
      {if (true) return dataJumpStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public void catchIllegalCode() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SCOPE:
      jj_consume_token(SCOPE);
      break;
    default:
      jj_la1[157] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case GOTO:
      jj_consume_token(GOTO);
      break;
    case THROW:
      jj_consume_token(THROW);
      break;
    case CATCH:
      jj_consume_token(CATCH);
      break;
    case FINALLY:
      jj_consume_token(FINALLY);
      break;
    case SETJMP:
      jj_consume_token(SETJMP);
      break;
    case LONGJMP:
      jj_consume_token(LONGJMP);
      break;
    case _SETJMP:
      jj_consume_token(_SETJMP);
      break;
    case _LONGJMP:
      jj_consume_token(_LONGJMP);
      break;
    case SIGSETJMP:
      jj_consume_token(SIGSETJMP);
      break;
    case SIGLONGJMP:
      jj_consume_token(SIGLONGJMP);
      break;
    default:
      jj_la1[158] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) throw generateParseException ( getToken(0),
                     "\"" + getToken(0).image + "\" "
                   + "Is not permitted inside Task Statements.\n"
                   + "(Consider using \"break\", \"continue\", or \"return\".)"
                   );}
  }

  static final public DataDeclarationStatement parseDeclarationStatement(int theUnIndent) throws ParseException {
  Token                      token      = getToken(0);
  Token                      firstToken = getToken(1);
  DataDeclarationStatement   dataDeclarationStatement
                                        = new DataDeclarationStatement();
    parseDeclaration();
        dataDeclarationStatement . setLineNumber ( firstToken.beginLine + 1 );
        parseMiscTokens ( dataDeclarationStatement, token, theUnIndent );
        dataDeclarationStatement
          . setIndex ( DataDeclarationStatement.FIRST_TOKEN_INDEX,
                       firstToken.image );
      {if (true) return dataDeclarationStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataIfElseStatement parseIfElse(int theUnIndent) throws ParseException {
  Token                token;
  DataExpression       dataExpression;
  DataStatement        dataStatement;
  DataIfElseStatement  dataIfElseStatement = new DataIfElseStatement();
    token = jj_consume_token(IF);
        dataIfElseStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataIfElseStatement, token, theUnIndent );
        dataIfElseStatement . setIndex ( DataIfElseStatement.IF );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataIfElseStatement, token, theUnIndent );
        dataIfElseStatement . setIndex ( DataIfElseStatement.OPEN_PAREN );
    /* conditional expression */
        dataExpression = parseExpressionObject(theUnIndent);
        dataIfElseStatement . setExpression ( dataExpression );
    token = jj_consume_token(CLOSE_PAREN);
        parseFluff ( dataExpression, token, theUnIndent );
        dataIfElseStatement . setIndex ( DataIfElseStatement.CLOSE_PAREN );
    dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                         theUnIndent);
        dataIfElseStatement . setIfStatement ( dataStatement );
    if (jj_2_38(2147483647)) {
      token = jj_consume_token(ELSE);
          dataIfElseStatement . setLineNumberOfElse ( token.beginLine + 1 );
          parseFluff ( dataIfElseStatement, token, theUnIndent );
          dataIfElseStatement . setIndex ( DataIfElseStatement.ELSE );
      dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                             theUnIndent);
          dataIfElseStatement . setElseStatement ( dataStatement );
    } else {
      ;
    }
      {if (true) return dataIfElseStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataSwitchStatement parseSwitch(int theUnIndent) throws ParseException {
  Token                token;
  DataExpression       dataExpression;
  DataStatement        dataStatement;
  DataSwitchStatement  dataSwitchStatement = new DataSwitchStatement();
    token = jj_consume_token(SWITCH);
        dataSwitchStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataSwitchStatement, token, theUnIndent );
        dataSwitchStatement . setIndex ( dataSwitchStatement.SWITCH );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataSwitchStatement, token, theUnIndent );
        dataSwitchStatement . setIndex ( dataSwitchStatement.OPEN_PAREN );
    /* conditional expression */
        dataExpression = parseExpressionObject(theUnIndent);
        dataSwitchStatement . setExpression ( dataExpression );
    token = jj_consume_token(CLOSE_PAREN);
        parseFluff ( dataSwitchStatement, token, theUnIndent );
        dataSwitchStatement . setIndex ( dataSwitchStatement.CLOSE_PAREN );
    dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                         theUnIndent);
        dataSwitchStatement . setStatement ( dataStatement );
      {if (true) return dataSwitchStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataForStatement parseFor(int theUnIndent) throws ParseException {
  Token             token;
  DataStatement     initialStatement    = null;
  DataExpression    testExpression      = null;
  DataExpression    iterationExpression = null;
  DataStatement     dataStatement;
  DataForStatement  dataForStatement = new DataForStatement();
    token = jj_consume_token(FOR_CS);
        dataForStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataForStatement, token, theUnIndent );
        dataForStatement . setIndex ( DataForStatement.FOR );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataForStatement, token, theUnIndent );
        dataForStatement . setIndex ( DataForStatement.OPEN_PAREN );
    /* optional initializer expression/declaration */
        initialStatement = parseForInitStatement(theUnIndent);
        dataForStatement
          . setInitialExpressionOrDeclarationStatement ( initialStatement );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      testExpression = parseExpressionObject(theUnIndent);
      break;
    default:
      jj_la1[159] = jj_gen;
      ;
    }
    token = jj_consume_token(SEMICOLON);
        parseFluff ( dataForStatement, token, theUnIndent );
        dataForStatement . setIndex ( DataForStatement.SEMICOLON );
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      iterationExpression = parseExpressionObject(theUnIndent);
      break;
    default:
      jj_la1[160] = jj_gen;
      ;
    }
    token = jj_consume_token(CLOSE_PAREN);
        parseFluff ( dataForStatement, token, theUnIndent );
        dataForStatement . setIndex ( DataForStatement.CLOSE_PAREN );
    dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                         theUnIndent);
        dataForStatement . setStatement ( dataStatement );
        /* Store these here so we can set them to null if they don't exist.. */
      dataForStatement . setTestExpression      ( testExpression      );
      dataForStatement . setIterationExpression ( iterationExpression );

        /* And return the result. */
      {if (true) return dataForStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataStatement parseForInitStatement(int theUnIndent) throws ParseException {
  DataStatement returnValue;
    if (jj_2_39(2147483647)) {
      returnValue = parseDeclarationStatement(theUnIndent);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        returnValue = parseExpressionStatement(theUnIndent);
        break;
      default:
        jj_la1[161] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
      {if (true) return returnValue;}
    throw new Error("Missing return statement in function");
  }

  static final public DataWhileStatement parseWhile(int theUnIndent) throws ParseException {
  Token               token;
  DataExpression      dataExpression;
  DataStatement       dataStatement;
  DataWhileStatement  dataWhileStatement = new DataWhileStatement();
    token = jj_consume_token(WHILE);
        dataWhileStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataWhileStatement, token, theUnIndent );
        dataWhileStatement . setIndex ( DataWhileStatement.WHILE );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataWhileStatement, token, theUnIndent );
        dataWhileStatement . setIndex ( DataWhileStatement.OPEN_PAREN );
    /* conditional expression */
        dataExpression = parseExpressionObject(theUnIndent);
        dataWhileStatement . setExpression ( dataExpression );
    token = jj_consume_token(CLOSE_PAREN);
        parseFluff ( dataWhileStatement, token, theUnIndent );
        dataWhileStatement . setIndex ( DataWhileStatement.CLOSE_PAREN );
    dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                         theUnIndent);
        dataWhileStatement . setStatement ( dataStatement );
      {if (true) return dataWhileStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataDoWhileStatement parseDoWhile(int theUnIndent) throws ParseException {
  Token                 token;
  DataExpression        dataExpression;
  DataStatement         dataStatement;
  DataDoWhileStatement  dataDoWhileStatement = new DataDoWhileStatement();
    token = jj_consume_token(DO);
        dataDoWhileStatement . setLineNumber ( token.beginLine + 1 );
        parseFluff ( dataDoWhileStatement, token, theUnIndent );
        dataDoWhileStatement . setIndex ( DataDoWhileStatement.DO );
    dataStatement = parseStatement(theUnIndent + DataComponent.getIndent(),
                                         theUnIndent);
        dataDoWhileStatement . setStatement ( dataStatement );
    token = jj_consume_token(WHILE);
        parseFluff ( dataDoWhileStatement, token, theUnIndent );
        dataDoWhileStatement . setIndex ( DataDoWhileStatement.WHILE );
    token = jj_consume_token(OPEN_PAREN);
        parseFluff ( dataDoWhileStatement, token, theUnIndent );
        dataDoWhileStatement . setIndex ( DataDoWhileStatement.OPEN_PAREN );
    /* conditional expression */
        dataExpression = parseExpressionObject(theUnIndent);
        dataDoWhileStatement . setExpression ( dataExpression );
    token = jj_consume_token(CLOSE_PAREN);
        parseFluff ( dataDoWhileStatement, token, theUnIndent );
        dataDoWhileStatement . setIndex ( DataDoWhileStatement.CLOSE_PAREN );
    token = jj_consume_token(SEMICOLON);
        parseFluff ( dataDoWhileStatement, token, theUnIndent );
        dataDoWhileStatement . setIndex ( DataDoWhileStatement.SEMICOLON );
      {if (true) return dataDoWhileStatement;}
    throw new Error("Missing return statement in function");
  }

  static final public DataExpression parseExpressionObject(int theUnIndent) throws ParseException {
  Token           token          = getToken(0);
  Token           firstToken     = getToken(1);
  DataExpression  dataExpression = new DataExpression();
    parseExpression();
        dataExpression . setLineNumber ( firstToken.beginLine + 1 );
        parseMiscTokens ( dataExpression, token, theUnIndent );
        dataExpression . setIndex ( DataExpression.FIRST_TOKEN_INDEX,
                                    firstToken.image );
      {if (true) return dataExpression;}
    throw new Error("Missing return statement in function");
  }

  static final public DataExpression parseConstantExpressionObject(int theUnIndent) throws ParseException {
  Token           token          = getToken(0);
  Token           firstToken     = getToken(1);
  DataExpression  dataExpression = new DataExpression();
    parseConstantExpression();
        dataExpression . setLineNumber ( firstToken.beginLine + 1 );
        parseMiscTokens ( dataExpression, token, theUnIndent );
        dataExpression . setIndex ( DataExpression.FIRST_TOKEN_INDEX,
                                    firstToken.image );
      {if (true) return dataExpression;}
    throw new Error("Missing return statement in function");
  }

        /* Sometime we just can't deal with the comma operator
	 * like in with-do constrants, or argument defaults...
	 */
  static final public DataExpression parseAssignmentExpressionObject(int      theUnIndent,
                                  boolean  theLineNumberStartsAtFirstToken) throws ParseException {
  Token           token          = getToken(0);
  Token           firstToken     = getToken(1);
  DataExpression  dataExpression = new DataExpression();
    parseAssignmentExpression();
        parseMiscTokens ( dataExpression, token, theUnIndent );

        if ( theLineNumberStartsAtFirstToken == false )
        {
            /* "token" is the last token before our Assignment-Expression */
          dataExpression . setLineNumber ( token . endLine + 1 );
        }
        else
        {
          dataExpression . setLineNumber ( firstToken.beginLine + 1 );
          dataExpression . setIndex ( DataExpression.FIRST_TOKEN_INDEX,
                                      firstToken.image );
        }
      {if (true) return dataExpression;}
    throw new Error("Missing return statement in function");
  }

/********************/
/***  Basic Types ***/
/********************/

  /* Note:  Includes templateClassNames as class-names. */
  static final public void parseClassName() throws ParseException {
    if (jj_2_40(2147483647)) {
      parseTemplateClassName();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case ID:
        parseIdToken();
        break;
      default:
        jj_la1[162] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseEnumName() throws ParseException {
    parseIdToken();

  }

  static final public void parseTypedefName() throws ParseException {
    parseIdToken();

  }

  static final public void parseTemplateName() throws ParseException {
    parseIdToken();

  }

/******************************/
/***  Expression parsing..  ***/
/******************************/
  static final public void parseExpression() throws ParseException {
    parseAssignmentExpression();
    label_22:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[163] = jj_gen;
        break label_22;
      }
      jj_consume_token(COMMA);
      parseAssignmentExpression();
    }

  }

  static final public void parseAssignmentExpression_Subpart() throws ParseException {
    parseUnaryExpression();
    parseAssignmentOperator();
    parseAssignmentExpression();

  }

  static final public void parseAssignmentExpression() throws ParseException {
    if (jj_2_41(2147483647)) {
      parseAssignmentExpression_Subpart();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parseConditionalExpression();
        break;
      default:
        jj_la1[164] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseAssignmentOperator() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
      jj_consume_token(EQUAL);
      break;
    case MULTIPLY_EQUAL:
      jj_consume_token(MULTIPLY_EQUAL);
      break;
    case DIVIDE_EQUAL:
      jj_consume_token(DIVIDE_EQUAL);
      break;
    case MODULO_EQUAL:
      jj_consume_token(MODULO_EQUAL);
      break;
    case PLUS_EQUAL:
      jj_consume_token(PLUS_EQUAL);
      break;
    case MINUS_EQUAL:
      jj_consume_token(MINUS_EQUAL);
      break;
    case RIGHTSHIFT_EQUAL:
      jj_consume_token(RIGHTSHIFT_EQUAL);
      break;
    case LEFTSHIFT_EQUAL:
      jj_consume_token(LEFTSHIFT_EQUAL);
      break;
    case AND_EQUAL:
      jj_consume_token(AND_EQUAL);
      break;
    case XOR_EQUAL:
      jj_consume_token(XOR_EQUAL);
      break;
    case OR_EQUAL:
      jj_consume_token(OR_EQUAL);
      break;
    default:
      jj_la1[165] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

/* AKA:  parseConstantExpression() */
  static final public void parseConditionalExpression() throws ParseException {
    parseLogicalOrExpression();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case QUESTION_MARK:
      jj_consume_token(QUESTION_MARK);
      parseExpression();
      jj_consume_token(COLON);
      parseAssignmentExpression();
      break;
    default:
      jj_la1[166] = jj_gen;
      ;
    }

  }

  static final public void parseLogicalOrExpression() throws ParseException {
    parseLogicalAndExpression();
    label_23:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOGICAL_OR:
        ;
        break;
      default:
        jj_la1[167] = jj_gen;
        break label_23;
      }
      jj_consume_token(LOGICAL_OR);
      parseLogicalAndExpression();
    }

  }

  static final public void parseLogicalAndExpression() throws ParseException {
    parseInclusiveOrExpression();
    label_24:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOGICAL_AND:
        ;
        break;
      default:
        jj_la1[168] = jj_gen;
        break label_24;
      }
      jj_consume_token(LOGICAL_AND);
      parseInclusiveOrExpression();
    }

  }

  static final public void parseInclusiveOrExpression() throws ParseException {
    parseExclusiveOrExpression();
    label_25:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INCLUSIVE_OR:
        ;
        break;
      default:
        jj_la1[169] = jj_gen;
        break label_25;
      }
      jj_consume_token(INCLUSIVE_OR);
      parseExclusiveOrExpression();
    }

  }

  static final public void parseExclusiveOrExpression() throws ParseException {
    parseAndExpression();
    label_26:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXCLUSIVE_OR:
        ;
        break;
      default:
        jj_la1[170] = jj_gen;
        break label_26;
      }
      jj_consume_token(EXCLUSIVE_OR);
      parseAndExpression();
    }

  }

  static final public void parseAndExpression() throws ParseException {
    parseEqualityExpression();
    label_27:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AMPERSAND:
        ;
        break;
      default:
        jj_la1[171] = jj_gen;
        break label_27;
      }
      jj_consume_token(AMPERSAND);
      parseEqualityExpression();
    }

  }

  static final public void parseEqualityExpression() throws ParseException {
    parseRelationalExpression();
    label_28:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQUALITY:
      case INEQUALITY:
        ;
        break;
      default:
        jj_la1[172] = jj_gen;
        break label_28;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQUALITY:
        jj_consume_token(EQUALITY);
        break;
      case INEQUALITY:
        jj_consume_token(INEQUALITY);
        break;
      default:
        jj_la1[173] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parseRelationalExpression();
    }

  }

  static final public void parseRelationalExpression() throws ParseException {
    parseShiftExpression();
    label_29:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LESS_THAN:
      case GREATER_THAN:
      case LESS_THAN_OR_EQUALS:
      case GREATER_THAN_OR_EQUALS:
        ;
        break;
      default:
        jj_la1[174] = jj_gen;
        break label_29;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LESS_THAN:
        jj_consume_token(LESS_THAN);
        break;
      case GREATER_THAN:
        jj_consume_token(GREATER_THAN);
        break;
      case LESS_THAN_OR_EQUALS:
        jj_consume_token(LESS_THAN_OR_EQUALS);
        break;
      case GREATER_THAN_OR_EQUALS:
        jj_consume_token(GREATER_THAN_OR_EQUALS);
        break;
      default:
        jj_la1[175] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parseShiftExpression();
    }

  }

        /* TemplateArg's have a problem with <GREATER_THAN> */
  static final public void parseRelationalExpression_ExcludingGreaterThan() throws ParseException {
    parseShiftExpression();
    label_30:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LESS_THAN:
      case LESS_THAN_OR_EQUALS:
      case GREATER_THAN_OR_EQUALS:
        ;
        break;
      default:
        jj_la1[176] = jj_gen;
        break label_30;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LESS_THAN:
        jj_consume_token(LESS_THAN);
        break;
      case LESS_THAN_OR_EQUALS:
        jj_consume_token(LESS_THAN_OR_EQUALS);
        break;
      case GREATER_THAN_OR_EQUALS:
        jj_consume_token(GREATER_THAN_OR_EQUALS);
        break;
      default:
        jj_la1[177] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parseShiftExpression();
    }

  }

  static final public void parseShiftExpression() throws ParseException {
    parseAdditiveExpression();
    label_31:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LEFT_SHIFT:
      case RIGHT_SHIFT:
        ;
        break;
      default:
        jj_la1[178] = jj_gen;
        break label_31;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LEFT_SHIFT:
        jj_consume_token(LEFT_SHIFT);
        break;
      case RIGHT_SHIFT:
        jj_consume_token(RIGHT_SHIFT);
        break;
      default:
        jj_la1[179] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parseAdditiveExpression();
    }

  }

  static final public void parseAdditiveExpression() throws ParseException {
    parseMultiplicativeExpression();
    label_32:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PLUS:
      case MINUS:
        ;
        break;
      default:
        jj_la1[180] = jj_gen;
        break label_32;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PLUS:
        jj_consume_token(PLUS);
        break;
      case MINUS:
        jj_consume_token(MINUS);
        break;
      default:
        jj_la1[181] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parseMultiplicativeExpression();
    }

  }

  static final public void parseMultiplicativeExpression() throws ParseException {
    parsePointerToMemberExpression();
    label_33:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DIVIDE:
      case MODULO:
      case ASTERISK:
        ;
        break;
      default:
        jj_la1[182] = jj_gen;
        break label_33;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ASTERISK:
        jj_consume_token(ASTERISK);
        break;
      case DIVIDE:
        jj_consume_token(DIVIDE);
        break;
      case MODULO:
        jj_consume_token(MODULO);
        break;
      default:
        jj_la1[183] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parsePointerToMemberExpression();
    }

  }

  static final public void parsePointerToMemberExpression() throws ParseException {
    parseCastExpression();
    label_34:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case POINTER_TO_MEMBER:
      case POINTER_TO_MEMBER_DEREFERENCE:
        ;
        break;
      default:
        jj_la1[184] = jj_gen;
        break label_34;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case POINTER_TO_MEMBER:
        jj_consume_token(POINTER_TO_MEMBER);
        break;
      case POINTER_TO_MEMBER_DEREFERENCE:
        jj_consume_token(POINTER_TO_MEMBER_DEREFERENCE);
        break;
      default:
        jj_la1[185] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      parseCastExpression();
    }

  }

  static final public void parseCastExpression_Subpart() throws ParseException {
    jj_consume_token(OPEN_PAREN);
    parseTypeName();
    jj_consume_token(CLOSE_PAREN);
    parseCastExpression();

  }

  static final public void parseCastExpression() throws ParseException {
    if (jj_2_42(2147483647)) {
      parseCastExpression_Subpart();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parseUnaryExpression();
        break;
      default:
        jj_la1[186] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseUnaryExpression() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INCREMENT:
      jj_consume_token(INCREMENT);
      parseUnaryExpression();
      break;
    case DECREMENT:
      jj_consume_token(DECREMENT);
      parseUnaryExpression();
      break;
    case SIZEOF:
      jj_consume_token(SIZEOF);
      if (jj_2_43(2147483647)) {
        parseCastExpression_Subpart();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SIZEOF:
        case NEW:
        case DELETE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          parseUnaryExpression();
          break;
        default:
          jj_la1[187] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      if (jj_2_46(2147483647)) {
        parseDeallocationExpression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case NEW:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          if (jj_2_45(2147483647)) {
            parseAllocationExpression();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case CHAR:
            case SHORT:
            case INT:
            case LONG:
            case SIGNED:
            case UNSIGNED:
            case FLOAT:
            case DOUBLE:
            case VOID:
            case OPERATOR:
            case TASK:
            case GOAL:
            case COMMAND:
            case MONITOR:
            case EXCEPTION:
            case HANDLER:
            case RESUME:
            case HANDLES:
            case TRIGGER:
            case DISTRIBUTED:
            case THREADED:
            case NAME:
            case TDL_REF:
            case GET_NUMBER_OF_TRIGGERS:
            case GET_NUMBER_OF_ACTIVATES:
            case NOT:
            case PLUS:
            case MINUS:
            case SCOPE:
            case OPEN_PAREN:
            case AMPERSAND:
            case ASTERISK:
            case TILDE:
            case INTEGER_CONSTANT:
            case CHARACTER_CONSTANT:
            case STRING_CONSTANT:
            case ID:
            case FLOAT_CONSTANT_BASIC:
            case FLOATING_CONSTANT:
              if (jj_2_44(2147483647)) {
                parseUnaryOperator();
                parseCastExpression();
              } else {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case CHAR:
                case SHORT:
                case INT:
                case LONG:
                case SIGNED:
                case UNSIGNED:
                case FLOAT:
                case DOUBLE:
                case VOID:
                case OPERATOR:
                case TASK:
                case GOAL:
                case COMMAND:
                case MONITOR:
                case EXCEPTION:
                case HANDLER:
                case RESUME:
                case HANDLES:
                case TRIGGER:
                case DISTRIBUTED:
                case THREADED:
                case NAME:
                case TDL_REF:
                case GET_NUMBER_OF_TRIGGERS:
                case GET_NUMBER_OF_ACTIVATES:
                case SCOPE:
                case OPEN_PAREN:
                case TILDE:
                case INTEGER_CONSTANT:
                case CHARACTER_CONSTANT:
                case STRING_CONSTANT:
                case ID:
                case FLOAT_CONSTANT_BASIC:
                case FLOATING_CONSTANT:
                  parsePostfixExpression();
                  break;
                default:
                  jj_la1[188] = jj_gen;
                  jj_consume_token(-1);
                  throw new ParseException();
                }
              }
              break;
            default:
              jj_la1[189] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[190] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[191] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  static final public void parseUnaryOperator() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ASTERISK:
      jj_consume_token(ASTERISK);
      break;
    case AMPERSAND:
      jj_consume_token(AMPERSAND);
      break;
    case PLUS:
      jj_consume_token(PLUS);
      break;
    case MINUS:
      jj_consume_token(MINUS);
      break;
    case NOT:
      jj_consume_token(NOT);
      break;
    case TILDE:
      jj_consume_token(TILDE);
      break;
    default:
      jj_la1[192] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseAllocationExpression() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SCOPE:
      jj_consume_token(SCOPE);
      break;
    default:
      jj_la1[193] = jj_gen;
      ;
    }
    jj_consume_token(NEW);
    if (jj_2_47(2147483647)) {
      parsePlacement();
    } else {
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      parseNewTypeName();
      break;
    case OPEN_PAREN:
      jj_consume_token(OPEN_PAREN);
      parseTypeName();
      jj_consume_token(CLOSE_PAREN);
      break;
    default:
      jj_la1[194] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPEN_PAREN:
      parseNewInitializer();
      break;
    default:
      jj_la1[195] = jj_gen;
      ;
    }

  }

  static final public void parsePlacement() throws ParseException {
    jj_consume_token(OPEN_PAREN);
    parseExpressionList();
    jj_consume_token(CLOSE_PAREN);

  }

  static final public void parseNewTypeName() throws ParseException {
    parseTypeSpecifier();
    if (jj_2_49(2147483647)) {
      parseNewDeclarator();
    } else {
      if (jj_2_48(2147483647)) {
        parseNewTypeName();
      } else {
        ;
      }
    }

  }

  static final public void parseNewDeclarator_Subpart() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      parseCompleteClassName();
      jj_consume_token(SCOPE);
      break;
    default:
      jj_la1[196] = jj_gen;
      ;
    }
    jj_consume_token(ASTERISK);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONST:
    case VOLATILE:
      parseCvQualifierList();
      break;
    default:
      jj_la1[197] = jj_gen;
      ;
    }

  }

  static final public void parseNewDeclarator() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ASTERISK:
    case ID:
      label_35:
      while (true) {
        parseNewDeclarator_Subpart();
        if (jj_2_50(2147483647)) {
          ;
        } else {
          break label_35;
        }
      }
      label_36:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPEN_BRACKET:
          ;
          break;
        default:
          jj_la1[198] = jj_gen;
          break label_36;
        }
        jj_consume_token(OPEN_BRACKET);
        parseExpression();
        jj_consume_token(CLOSE_BRACKET);
      }
      break;
    case OPEN_BRACKET:
      label_37:
      while (true) {
        jj_consume_token(OPEN_BRACKET);
        parseExpression();
        jj_consume_token(CLOSE_BRACKET);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPEN_BRACKET:
          ;
          break;
        default:
          jj_la1[199] = jj_gen;
          break label_37;
        }
      }
      break;
    default:
      jj_la1[200] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseNewInitializer() throws ParseException {
    jj_consume_token(OPEN_PAREN);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case OPEN_BRACE:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      parseInitializerList();
      break;
    default:
      jj_la1[201] = jj_gen;
      ;
    }
    jj_consume_token(CLOSE_PAREN);

  }

  static final public void parseDeallocationExpression() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SCOPE:
      jj_consume_token(SCOPE);
      break;
    default:
      jj_la1[202] = jj_gen;
      ;
    }
    jj_consume_token(DELETE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPEN_BRACKET:
      jj_consume_token(OPEN_BRACKET);
      jj_consume_token(CLOSE_BRACKET);
      break;
    default:
      jj_la1[203] = jj_gen;
      ;
    }
    parseCastExpression();

  }

  static final public void parsePostfixExpression_internalSimpleTypeNameBit() throws ParseException {
    parseSimpleTypeName();
    jj_consume_token(OPEN_PAREN);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      parseExpressionList();
      break;
    default:
      jj_la1[204] = jj_gen;
      ;
    }
    jj_consume_token(CLOSE_PAREN);

  }

  static final public void parsePostfixExpression() throws ParseException {
    if (jj_2_51(2147483647)) {
      parsePostfixExpression_internalSimpleTypeNameBit();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case SCOPE:
      case OPEN_PAREN:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parsePrimaryExpression();
        break;
      default:
        jj_la1[205] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    label_38:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DEREFERENCE:
      case INCREMENT:
      case DECREMENT:
      case OPEN_PAREN:
      case OPEN_BRACKET:
      case PERIOD:
        ;
        break;
      default:
        jj_la1[206] = jj_gen;
        break label_38;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPEN_BRACKET:
        jj_consume_token(OPEN_BRACKET);
        parseExpression();
        jj_consume_token(CLOSE_BRACKET);
        break;
      case OPEN_PAREN:
        jj_consume_token(OPEN_PAREN);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SIZEOF:
        case NEW:
        case DELETE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          parseExpressionList();
          break;
        default:
          jj_la1[207] = jj_gen;
          ;
        }
        jj_consume_token(CLOSE_PAREN);
        break;
      case PERIOD:
        jj_consume_token(PERIOD);
        parseName();
        break;
      case DEREFERENCE:
        jj_consume_token(DEREFERENCE);
        parseName();
        break;
      case INCREMENT:
        jj_consume_token(INCREMENT);
        break;
      case DECREMENT:
        jj_consume_token(DECREMENT);
        break;
      default:
        jj_la1[208] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseExpressionList() throws ParseException {
    parseAssignmentExpression();
    label_39:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[209] = jj_gen;
        break label_39;
      }
      jj_consume_token(COMMA);
      parseAssignmentExpression();
    }

  }

  static final public String parseTdlRefTaskName() throws ParseException {
  Token    token;
  String   taskName;
    jj_consume_token(TDL_REF);
            /* <TDL_REF> matches regardless of case and underscores. *
	     * We want uppercaes only.                               */
          getToken ( 0 ) . image = "TDL_REF";
    jj_consume_token(OPEN_PAREN);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case THIS_CS:
    case THIS_CI:
    case PARENT:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PARENT:
        jj_consume_token(PARENT);
                   System.err.println (
                                    TDLParser.getFilenameWithoutPathPlusColon()
                                    + ( getToken( 0 ) . beginLine + 1 )
                                    + TDLParser.PARENT_WARNING );
        break;
      case THIS_CS:
        jj_consume_token(THIS_CS);
        break;
      case THIS_CI:
        jj_consume_token(THIS_CI);
        break;
      default:
        jj_la1[210] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                  /* We want uppercase "THIS" only. */
               getToken ( 0 ) . image = "THIS";
               taskName = "THIS";
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      token = parseIdToken();
               taskName = token.image;
      break;
    default:
      jj_la1[211] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    jj_consume_token(CLOSE_PAREN);
      {if (true) return taskName;}
    throw new Error("Missing return statement in function");
  }

  static final public void parsePrimaryExpression() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      if (jj_2_53(2147483647)) {
        parseLiteral();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          if (jj_2_52(2147483647)) {
            parseName();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case TASK:
            case GOAL:
            case COMMAND:
            case MONITOR:
            case EXCEPTION:
            case HANDLER:
            case RESUME:
            case HANDLES:
            case DISTRIBUTED:
            case THREADED:
            case NAME:
            case INTEGER_CONSTANT:
            case CHARACTER_CONSTANT:
            case STRING_CONSTANT:
            case ID:
            case FLOAT_CONSTANT_BASIC:
            case FLOATING_CONSTANT:
              parseLiteral();
              break;
            default:
              jj_la1[212] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[213] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case SCOPE:
      jj_consume_token(SCOPE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPERATOR:
        parseOperatorFunctionName();
        break;
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case ID:
        if (jj_2_54(2147483647)) {
          parseQualifiedName();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TASK:
          case GOAL:
          case COMMAND:
          case MONITOR:
          case EXCEPTION:
          case HANDLER:
          case RESUME:
          case HANDLES:
          case DISTRIBUTED:
          case THREADED:
          case NAME:
          case ID:
            parseIdToken();
            break;
          default:
            jj_la1[214] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
        break;
      default:
        jj_la1[215] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case OPEN_PAREN:
      jj_consume_token(OPEN_PAREN);
      parseExpression();
      jj_consume_token(CLOSE_PAREN);
      break;
    case TRIGGER:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TRIGGER:
        jj_consume_token(TRIGGER);
                   /* Trigger can only be used inside Monitors! */
                if ( getIsParsingMonitorBody() != true )
                {
                  {if (true) throw generateParseException ( getToken ( 0 ),
                        "Encountered TRIGGER in a non-Monitor Task." );}
                }
                   /* <TRIGGER> matches regardless of case. *
		    *  We want uppercase only.              */
                getToken ( 0 ) . image = "TRIGGER";
        jj_consume_token(OPEN_PAREN);
        jj_consume_token(CLOSE_PAREN);
        break;
      case TDL_REF:
        parseTdlRefTaskName();
        break;
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case GET_NUMBER_OF_TRIGGERS:
          jj_consume_token(GET_NUMBER_OF_TRIGGERS);
          break;
        case GET_NUMBER_OF_ACTIVATES:
          jj_consume_token(GET_NUMBER_OF_ACTIVATES);
          break;
        default:
          jj_la1[216] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                   /* These can only be used inside Monitors! */
                if ( getIsParsingMonitorBody() != true )
                {
                  {if (true) throw generateParseException ( getToken ( 0 ),
                              "Encountered " + getToken ( 0 ) . image
                            + "() in a non-Monitor Task." );}
                }
                   /* These match regardless of case.      *
		    * We want these specific strings only. */
                if      ( getToken ( 0 ) . kind == GET_NUMBER_OF_TRIGGERS  )
                  getToken ( 0 ) . image = "getNumberOfTriggers";
                else if ( getToken ( 0 ) . kind == GET_NUMBER_OF_ACTIVATES )
                  getToken ( 0 ) . image = "getNumberOfActivates";
        jj_consume_token(OPEN_PAREN);
        jj_consume_token(CLOSE_PAREN);
        break;
      default:
        jj_la1[217] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[218] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

/*
 * Used as a hack to avoid declaring Operator() and Conversion functions
 * inside classes inside TDL code.
 */
  static final public void parseName_WithoutOperatorOrConversionFunctionNames() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      if (jj_2_55(2147483647)) {
        parseQualifiedName();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case ID:
          parseIdToken();
          break;
        default:
          jj_la1[219] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case TILDE:
      jj_consume_token(TILDE);
      parseClassName();
      break;
    default:
      jj_la1[220] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseName() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TILDE:
    case ID:
      parseName_WithoutOperatorOrConversionFunctionNames();
      break;
    case OPERATOR:
      if (jj_2_56(2147483647)) {
        parseOperatorFunctionName();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPERATOR:
          parseConversionFunctionName();
          break;
        default:
          jj_la1[221] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[222] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseQualifiedName() throws ParseException {
    parseClassName();
    jj_consume_token(SCOPE);
    parseName();

  }

  static final public void parseLiteral() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER_CONSTANT:
      jj_consume_token(INTEGER_CONSTANT);
      break;
    case FLOAT_CONSTANT_BASIC:
      jj_consume_token(FLOAT_CONSTANT_BASIC);
      break;
    case FLOATING_CONSTANT:
      jj_consume_token(FLOATING_CONSTANT);
      break;
    case CHARACTER_CONSTANT:
      jj_consume_token(CHARACTER_CONSTANT);
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case STRING_CONSTANT:
    case ID:
      parseStringConstantAndIdsAssumingTheyAreMacros();
      break;
    default:
      jj_la1[223] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

/*******************************/
/***  Declaration parsing..  ***/
/*******************************/
  static final public void parseDeclaration_Subpart() throws ParseException {
    if (jj_2_57(2147483647)) {
      parseDeclaratorList();
      jj_consume_token(SEMICOLON);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case SEMICOLON:
      case ID:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SEMICOLON:
          jj_consume_token(SEMICOLON);
          break;
        case EXTERN_CS:
        case FRIEND:
        case TYPEDEF:
        case AUTO:
        case REGISTER:
        case STATIC:
        case INLINE:
        case VIRTUAL:
        case CONST:
        case VOLATILE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case CLASS:
        case STRUCT:
        case UNION:
        case ENUM:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case SCOPE:
        case ID:
          parseDeclSpecifier();
          parseDeclaration_Subpart();
          break;
        default:
          jj_la1[224] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[225] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseDeclaration() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
    case FRIEND:
    case TYPEDEF:
    case AUTO:
    case REGISTER:
    case STATIC:
    case INLINE:
    case VIRTUAL:
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case OPEN_PAREN:
    case SEMICOLON:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case ID:
      if (jj_2_58(2147483647)) {
        parseLinkageSpecification();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXTERN_CS:
        case FRIEND:
        case TYPEDEF:
        case AUTO:
        case REGISTER:
        case STATIC:
        case INLINE:
        case VIRTUAL:
        case CONST:
        case VOLATILE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case CLASS:
        case STRUCT:
        case UNION:
        case ENUM:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case SCOPE:
        case OPEN_PAREN:
        case SEMICOLON:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case ID:
          parseDeclaration_Subpart();
          break;
        default:
          jj_la1[226] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case ASM:
      parseAsmDeclaration();
      break;
    default:
      jj_la1[227] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseDeclSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
    case AUTO:
    case REGISTER:
    case STATIC:
      parseStorageClassSpecifier();
      break;
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      parseTypeSpecifier();
      break;
    case INLINE:
    case VIRTUAL:
      parseFctSpecifier();
      break;
    case FRIEND:
      jj_consume_token(FRIEND);
      break;
    case TYPEDEF:
      jj_consume_token(TYPEDEF);
      break;
    default:
      jj_la1[228] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseDeclSpecifiers() throws ParseException {
    label_40:
    while (true) {
      parseDeclSpecifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        ;
        break;
      default:
        jj_la1[229] = jj_gen;
        break label_40;
      }
    }

  }

  static final public void parseStorageClassSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case AUTO:
      jj_consume_token(AUTO);
      break;
    case REGISTER:
      jj_consume_token(REGISTER);
      break;
    case STATIC:
      jj_consume_token(STATIC);
      break;
    case EXTERN_CS:
      jj_consume_token(EXTERN_CS);
      break;
    default:
      jj_la1[230] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseFctSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INLINE:
      jj_consume_token(INLINE);
      break;
    case VIRTUAL:
      jj_consume_token(VIRTUAL);
      break;
    default:
      jj_la1[231] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseTypeSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      parseSimpleTypeName();
      break;
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
      if (jj_2_60(2147483647)) {
        parseEnumSpecifier();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case CLASS:
        case STRUCT:
        case UNION:
        case ENUM:
          if (jj_2_59(2147483647)) {
            parseClassSpecifier();
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case CLASS:
            case STRUCT:
            case UNION:
            case ENUM:
              parseElaboratedTypeSpecifier();
              break;
            default:
              jj_la1[232] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
        default:
          jj_la1[233] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case CONST:
      jj_consume_token(CONST);
      break;
    case VOLATILE:
      jj_consume_token(VOLATILE);
      break;
    default:
      jj_la1[234] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseSimpleTypeName() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      if (jj_2_61(2147483647)) {
        parseCompleteClassName();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case ID:
          parseQualifiedTypeName();
          break;
        default:
          jj_la1[235] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case CHAR:
      jj_consume_token(CHAR);
      break;
    case SHORT:
      jj_consume_token(SHORT);
      break;
    case INT:
      jj_consume_token(INT);
      break;
    case LONG:
      jj_consume_token(LONG);
      break;
    case SIGNED:
      jj_consume_token(SIGNED);
      break;
    case UNSIGNED:
      jj_consume_token(UNSIGNED);
      break;
    case FLOAT:
      jj_consume_token(FLOAT);
      break;
    case DOUBLE:
      jj_consume_token(DOUBLE);
      break;
    case VOID:
      jj_consume_token(VOID);
      break;
    default:
      jj_la1[236] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseElaboratedTypeSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CLASS:
    case STRUCT:
    case UNION:
      parseClassKey();
      parseClassName();
      break;
    case ENUM:
      jj_consume_token(ENUM);
      parseEnumName();
      break;
    default:
      jj_la1[237] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseClassKey() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CLASS:
      jj_consume_token(CLASS);
      break;
    case STRUCT:
      jj_consume_token(STRUCT);
      break;
    case UNION:
      jj_consume_token(UNION);
      break;
    default:
      jj_la1[238] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseQualifiedTypeName_Subpart() throws ParseException {
    parseClassName();
    jj_consume_token(SCOPE);

  }

  static final public void parseQualifiedTypeName() throws ParseException {
    label_41:
    while (true) {
      if (jj_2_62(2147483647)) {
        ;
      } else {
        break label_41;
      }
      parseQualifiedTypeName_Subpart();
    }
    parseTypedefName();

  }

  static final public void parseCompleteClassName() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SCOPE:
      jj_consume_token(SCOPE);
      break;
    default:
      jj_la1[239] = jj_gen;
      ;
    }
    parseQualifiedClassName();

  }

  static final public void parseQualifiedClassName_LeaveTrailingScope() throws ParseException {
    parseClassName();
    label_42:
    while (true) {
      if (jj_2_63(2147483647)) {
        ;
      } else {
        break label_42;
      }
      jj_consume_token(SCOPE);
      parseClassName();
    }

  }

  static final public void parseQualifiedClassName() throws ParseException {
    parseClassName();
    label_43:
    while (true) {
      if (jj_2_64(2147483647)) {
        ;
      } else {
        break label_43;
      }
      jj_consume_token(SCOPE);
      parseClassName();
    }

  }

  static final public void parseEnumSpecifier() throws ParseException {
    jj_consume_token(ENUM);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      parseIdToken();
      break;
    default:
      jj_la1[240] = jj_gen;
      ;
    }
    jj_consume_token(OPEN_BRACE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      parseEnumList();
      break;
    default:
      jj_la1[241] = jj_gen;
      ;
    }
    jj_consume_token(CLOSE_BRACE);

  }

  static final public void parseEnumList() throws ParseException {
    parseEnumerator();
    label_44:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[242] = jj_gen;
        break label_44;
      }
      jj_consume_token(COMMA);
      parseEnumerator();
    }

  }

  static final public void parseEnumerator() throws ParseException {
    parseIdToken();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
      jj_consume_token(EQUAL);
      parseConstantExpression();
      break;
    default:
      jj_la1[243] = jj_gen;
      ;
    }

  }

  static final public void parseConstantExpression() throws ParseException {
    parseConditionalExpression();
  }

  static final public void parseLinkageSpecification() throws ParseException {
    jj_consume_token(EXTERN_CS);
    jj_consume_token(STRING_CONSTANT);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPEN_BRACE:
      jj_consume_token(OPEN_BRACE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case ASM:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case ID:
        parseDeclarationList();
        break;
      default:
        jj_la1[244] = jj_gen;
        ;
      }
      jj_consume_token(CLOSE_BRACE);
      break;
    case EXTERN_CS:
    case FRIEND:
    case TYPEDEF:
    case AUTO:
    case REGISTER:
    case STATIC:
    case INLINE:
    case VIRTUAL:
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case ASM:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case OPEN_PAREN:
    case SEMICOLON:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case ID:
      parseDeclaration();
      break;
    default:
      jj_la1[245] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseDeclarationList() throws ParseException {
    label_45:
    while (true) {
      parseDeclaration();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case ASM:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case ID:
        ;
        break;
      default:
        jj_la1[246] = jj_gen;
        break label_45;
      }
    }

  }

  static final public void parseAsmDeclaration() throws ParseException {
    jj_consume_token(ASM);
    jj_consume_token(OPEN_PAREN);
    parseStringConstantAndIdsAssumingTheyAreMacros();
    jj_consume_token(CLOSE_PAREN);
    jj_consume_token(SEMICOLON);

  }

/*******************************/
/***  Declarators parsing..  ***/
/*******************************/
  static final public void parseDeclaratorList() throws ParseException {
    parseInitDeclarator();
    label_46:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[247] = jj_gen;
        break label_46;
      }
      jj_consume_token(COMMA);
      parseInitDeclarator();
    }

  }

  static final public void parseInitDeclarator() throws ParseException {
    parseDeclarator();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
    case OPEN_PAREN:
      parseInitializer();
      break;
    default:
      jj_la1[248] = jj_gen;
      ;
    }

  }

  static final public void parseDeclarator_Subpart() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPEN_PAREN:
      parseArgumentDeclarationList();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CONST:
      case VOLATILE:
        parseCvQualifierList();
        break;
      default:
        jj_la1[249] = jj_gen;
        ;
      }
      break;
    case OPEN_BRACKET:
      jj_consume_token(OPEN_BRACKET);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parseConstantExpression();
        break;
      default:
        jj_la1[250] = jj_gen;
        ;
      }
      jj_consume_token(CLOSE_BRACKET);
      break;
    default:
      jj_la1[251] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

/*
 * Used as a hack to avoid declaring methods inside classes inside TDL code.
 */
  static final public void parseDeclarator_WithoutFunctions() throws ParseException {
    label_47:
    while (true) {
      if (jj_2_65(2147483647)) {
        ;
      } else {
        break label_47;
      }
      parsePtrOperator();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TILDE:
    case ID:
      parseDname_WithoutOperatorOrConversionFunctionNames();
      break;
    case OPEN_PAREN:
      jj_consume_token(OPEN_PAREN);
      parseDeclarator();
      jj_consume_token(CLOSE_PAREN);
      break;
    default:
      jj_la1[252] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    label_48:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPEN_BRACKET:
        ;
        break;
      default:
        jj_la1[253] = jj_gen;
        break label_48;
      }
      jj_consume_token(OPEN_BRACKET);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parseConstantExpression();
        break;
      default:
        jj_la1[254] = jj_gen;
        ;
      }
      jj_consume_token(CLOSE_BRACKET);
    }

  }

  static final public void parseDeclarator() throws ParseException {
    label_49:
    while (true) {
      if (jj_2_66(2147483647)) {
        ;
      } else {
        break label_49;
      }
      parsePtrOperator();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TILDE:
    case ID:
      parseDname();
      break;
    case OPEN_PAREN:
      jj_consume_token(OPEN_PAREN);
      parseDeclarator();
      jj_consume_token(CLOSE_PAREN);
      break;
    default:
      jj_la1[255] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    label_50:
    while (true) {
      if (jj_2_67(2147483647)) {
        ;
      } else {
        break label_50;
      }
      parseDeclarator_Subpart();
    }

  }

  static final public void parsePtrOperator() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case ASTERISK:
      jj_consume_token(ASTERISK);
      break;
    case AMPERSAND:
      jj_consume_token(AMPERSAND);
      break;
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      parseCompleteClassName();
      jj_consume_token(SCOPE);
      jj_consume_token(ASTERISK);
      break;
    default:
      jj_la1[256] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONST:
    case VOLATILE:
      parseCvQualifierList();
      break;
    default:
      jj_la1[257] = jj_gen;
      ;
    }

  }

  static final public void parseCvQualifierList() throws ParseException {
    label_51:
    while (true) {
      parseCvQualifer();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CONST:
      case VOLATILE:
        ;
        break;
      default:
        jj_la1[258] = jj_gen;
        break label_51;
      }
    }

  }

  static final public void parseCvQualifer() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case CONST:
      jj_consume_token(CONST);
      break;
    case VOLATILE:
      jj_consume_token(VOLATILE);
      break;
    default:
      jj_la1[259] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

/*
 * Used as a hack to avoid declaring Operator() and Conversion functions
 * inside classes inside TDL code.
 */
  static final public void parseDname_WithoutOperatorOrConversionFunctionNames() throws ParseException {
    if (jj_2_69(2147483647)) {
      parseQualifiedTypeName();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TILDE:
      case ID:
        if (jj_2_68(2147483647)) {
          parseClassName();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case TASK:
          case GOAL:
          case COMMAND:
          case MONITOR:
          case EXCEPTION:
          case HANDLER:
          case RESUME:
          case HANDLES:
          case DISTRIBUTED:
          case THREADED:
          case NAME:
          case TILDE:
          case ID:
            parseName_WithoutOperatorOrConversionFunctionNames();
            break;
          default:
            jj_la1[260] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
        break;
      default:
        jj_la1[261] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseDname() throws ParseException {
    if (jj_2_71(2147483647)) {
      parseQualifiedTypeName();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TILDE:
      case ID:
        if (jj_2_70(2147483647)) {
          parseClassName();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case OPERATOR:
          case TASK:
          case GOAL:
          case COMMAND:
          case MONITOR:
          case EXCEPTION:
          case HANDLER:
          case RESUME:
          case HANDLES:
          case DISTRIBUTED:
          case THREADED:
          case NAME:
          case TILDE:
          case ID:
            parseName();
            break;
          default:
            jj_la1[262] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
        break;
      default:
        jj_la1[263] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseTypeName() throws ParseException {
    parseTypeSpecifier();
    if (jj_2_73(2147483647)) {
      parseAbstractDeclarator();
    } else {
      if (jj_2_72(2147483647)) {
        parseTypeName();
      } else {
        ;
      }
    }

  }

  static final public void parseTypeSpecifierList() throws ParseException {
    label_52:
    while (true) {
      parseTypeSpecifier();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        ;
        break;
      default:
        jj_la1[264] = jj_gen;
        break label_52;
      }
    }

  }

  static final public void parseAbstractDeclarator() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case AMPERSAND:
    case ASTERISK:
    case ID:
      label_53:
      while (true) {
        parsePtrOperator();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case SCOPE:
        case AMPERSAND:
        case ASTERISK:
        case ID:
          ;
          break;
        default:
          jj_la1[265] = jj_gen;
          break label_53;
        }
      }
      if (jj_2_74(2147483647)) {
        jj_consume_token(OPEN_PAREN);
        parseAbstractDeclarator();
        jj_consume_token(CLOSE_PAREN);
      } else {
        ;
      }
      label_54:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPEN_PAREN:
        case OPEN_BRACKET:
          ;
          break;
        default:
          jj_la1[266] = jj_gen;
          break label_54;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPEN_PAREN:
          parseArgumentDeclarationList();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case CONST:
          case VOLATILE:
            parseCvQualifierList();
            break;
          default:
            jj_la1[267] = jj_gen;
            ;
          }
          break;
        case OPEN_BRACKET:
          jj_consume_token(OPEN_BRACKET);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case SIZEOF:
          case NEW:
          case DELETE:
          case CHAR:
          case SHORT:
          case INT:
          case LONG:
          case SIGNED:
          case UNSIGNED:
          case FLOAT:
          case DOUBLE:
          case VOID:
          case OPERATOR:
          case TASK:
          case GOAL:
          case COMMAND:
          case MONITOR:
          case EXCEPTION:
          case HANDLER:
          case RESUME:
          case HANDLES:
          case TRIGGER:
          case DISTRIBUTED:
          case THREADED:
          case NAME:
          case TDL_REF:
          case GET_NUMBER_OF_TRIGGERS:
          case GET_NUMBER_OF_ACTIVATES:
          case NOT:
          case PLUS:
          case MINUS:
          case INCREMENT:
          case DECREMENT:
          case SCOPE:
          case OPEN_PAREN:
          case AMPERSAND:
          case ASTERISK:
          case TILDE:
          case INTEGER_CONSTANT:
          case CHARACTER_CONSTANT:
          case STRING_CONSTANT:
          case ID:
          case FLOAT_CONSTANT_BASIC:
          case FLOATING_CONSTANT:
            parseConstantExpression();
            break;
          default:
            jj_la1[268] = jj_gen;
            ;
          }
          jj_consume_token(CLOSE_BRACKET);
          break;
        default:
          jj_la1[269] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    case OPEN_PAREN:
    case OPEN_BRACKET:
      if (jj_2_75(2147483647)) {
        jj_consume_token(OPEN_PAREN);
        parseAbstractDeclarator();
        jj_consume_token(CLOSE_PAREN);
        label_55:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case OPEN_PAREN:
          case OPEN_BRACKET:
            ;
            break;
          default:
            jj_la1[270] = jj_gen;
            break label_55;
          }
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case OPEN_PAREN:
            parseArgumentDeclarationList();
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case CONST:
            case VOLATILE:
              parseCvQualifierList();
              break;
            default:
              jj_la1[271] = jj_gen;
              ;
            }
            break;
          case OPEN_BRACKET:
            jj_consume_token(OPEN_BRACKET);
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case SIZEOF:
            case NEW:
            case DELETE:
            case CHAR:
            case SHORT:
            case INT:
            case LONG:
            case SIGNED:
            case UNSIGNED:
            case FLOAT:
            case DOUBLE:
            case VOID:
            case OPERATOR:
            case TASK:
            case GOAL:
            case COMMAND:
            case MONITOR:
            case EXCEPTION:
            case HANDLER:
            case RESUME:
            case HANDLES:
            case TRIGGER:
            case DISTRIBUTED:
            case THREADED:
            case NAME:
            case TDL_REF:
            case GET_NUMBER_OF_TRIGGERS:
            case GET_NUMBER_OF_ACTIVATES:
            case NOT:
            case PLUS:
            case MINUS:
            case INCREMENT:
            case DECREMENT:
            case SCOPE:
            case OPEN_PAREN:
            case AMPERSAND:
            case ASTERISK:
            case TILDE:
            case INTEGER_CONSTANT:
            case CHARACTER_CONSTANT:
            case STRING_CONSTANT:
            case ID:
            case FLOAT_CONSTANT_BASIC:
            case FLOATING_CONSTANT:
              parseConstantExpression();
              break;
            default:
              jj_la1[272] = jj_gen;
              ;
            }
            jj_consume_token(CLOSE_BRACKET);
            break;
          default:
            jj_la1[273] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case OPEN_PAREN:
        case OPEN_BRACKET:
          label_56:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case OPEN_PAREN:
              parseArgumentDeclarationList();
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case CONST:
              case VOLATILE:
                parseCvQualifierList();
                break;
              default:
                jj_la1[274] = jj_gen;
                ;
              }
              break;
            case OPEN_BRACKET:
              jj_consume_token(OPEN_BRACKET);
              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
              case SIZEOF:
              case NEW:
              case DELETE:
              case CHAR:
              case SHORT:
              case INT:
              case LONG:
              case SIGNED:
              case UNSIGNED:
              case FLOAT:
              case DOUBLE:
              case VOID:
              case OPERATOR:
              case TASK:
              case GOAL:
              case COMMAND:
              case MONITOR:
              case EXCEPTION:
              case HANDLER:
              case RESUME:
              case HANDLES:
              case TRIGGER:
              case DISTRIBUTED:
              case THREADED:
              case NAME:
              case TDL_REF:
              case GET_NUMBER_OF_TRIGGERS:
              case GET_NUMBER_OF_ACTIVATES:
              case NOT:
              case PLUS:
              case MINUS:
              case INCREMENT:
              case DECREMENT:
              case SCOPE:
              case OPEN_PAREN:
              case AMPERSAND:
              case ASTERISK:
              case TILDE:
              case INTEGER_CONSTANT:
              case CHARACTER_CONSTANT:
              case STRING_CONSTANT:
              case ID:
              case FLOAT_CONSTANT_BASIC:
              case FLOATING_CONSTANT:
                parseConstantExpression();
                break;
              default:
                jj_la1[275] = jj_gen;
                ;
              }
              jj_consume_token(CLOSE_BRACKET);
              break;
            default:
              jj_la1[276] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case OPEN_PAREN:
            case OPEN_BRACKET:
              ;
              break;
            default:
              jj_la1[277] = jj_gen;
              break label_56;
            }
          }
          break;
        default:
          jj_la1[278] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[279] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseArgumentDeclarationList_Subpart() throws ParseException {
    parseArgDeclarationList_AndTrailingToken();

  }

  static final public void parseArgumentDeclarationList() throws ParseException {
    jj_consume_token(OPEN_PAREN);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
    case FRIEND:
    case TYPEDEF:
    case AUTO:
    case REGISTER:
    case STATIC:
    case INLINE:
    case VIRTUAL:
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case ID:
      parseArgumentDeclarationList_Subpart();
      break;
    case CLOSE_PAREN:
      jj_consume_token(CLOSE_PAREN);
      break;
    default:
      jj_la1[280] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseArgDeclarationList_AndTrailingToken() throws ParseException {
    label_57:
    while (true) {
      if (jj_2_76(2147483647)) {
        ;
      } else {
        break label_57;
      }
      parseArgumentDeclaration_AndTrailing_Comma();
    }
    parseArgumentDeclaration_AndTrailing_CloseParen();

  }

  static final public void parseArgumentDeclaration_Subpart() throws ParseException {
    if (jj_2_77(2147483647)) {
      parseDeclarator();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case OPEN_BRACKET:
      case AMPERSAND:
      case ASTERISK:
      case ID:
        parseAbstractDeclarator();
        break;
      default:
        jj_la1[281] = jj_gen;
        ;
      }
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
      jj_consume_token(EQUAL);
      parseAssignmentExpression();
      break;
    default:
      jj_la1[282] = jj_gen;
      ;
    }

  }

  static final public void parseArgumentDeclaration_AndTrailing_Comma() throws ParseException {
    parseDeclSpecifier();
    if (jj_2_78(2147483647)) {
      parseArgumentDeclaration_Subpart();
      jj_consume_token(COMMA);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        parseArgumentDeclaration_AndTrailing_Comma();
        break;
      default:
        jj_la1[283] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseArgumentDeclaration_AndTrailing_CloseParen() throws ParseException {
    parseDeclSpecifier();
    if (jj_2_79(2147483647)) {
      parseArgumentDeclaration_Subpart();
      jj_consume_token(CLOSE_PAREN);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case ID:
        parseArgumentDeclaration_AndTrailing_CloseParen();
        break;
      default:
        jj_la1[284] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

        /* No Functions inside TDL code... */
// void
// parseFunctionDefinition ( ) :
// {}
// {
//   (
//     [ parseDeclSpecifiers() ]
//     parseDeclarator()
//     [ parseCtorInitializer() ]
//     parseFctBody()
//   )
//     {}
// }

        /* No Functions inside TDL code... */
// void
// parseFctBody ( ) :
// {}
// {
//   (
//     parseCompoundStatement()
//   )
//     {}
// }
  static final public void parseInitializer() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EQUAL:
      jj_consume_token(EQUAL);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parseAssignmentExpression();
        break;
      case OPEN_BRACE:
        jj_consume_token(OPEN_BRACE);
        parseInitializerList();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case COMMA:
          jj_consume_token(COMMA);
          break;
        default:
          jj_la1[285] = jj_gen;
          ;
        }
        jj_consume_token(CLOSE_BRACE);
        break;
      default:
        jj_la1[286] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    case OPEN_PAREN:
      jj_consume_token(OPEN_PAREN);
      parseExpressionList();
      jj_consume_token(CLOSE_PAREN);
      break;
    default:
      jj_la1[287] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseInitializerList_Subpart() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      parseAssignmentExpression();
      break;
    case OPEN_BRACE:
      jj_consume_token(OPEN_BRACE);
      parseInitializerList();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        jj_consume_token(COMMA);
        break;
      default:
        jj_la1[288] = jj_gen;
        ;
      }
      jj_consume_token(CLOSE_BRACE);
      break;
    default:
      jj_la1[289] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseInitializerList() throws ParseException {
    parseInitializerList_Subpart();
    label_58:
    while (true) {
      if (jj_2_80(2147483647)) {
        ;
      } else {
        break label_58;
      }
      jj_consume_token(COMMA);
      parseInitializerList_Subpart();
    }

  }

/**************************************/
/***  Class Declarations Parsing..  ***/
/**************************************/
  static final public void parseClassSpecifier() throws ParseException {
    parseClassHead();
    jj_consume_token(OPEN_BRACE);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case EXTERN_CS:
    case FRIEND:
    case TYPEDEF:
    case AUTO:
    case REGISTER:
    case STATIC:
    case INLINE:
    case VIRTUAL:
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case PRIVATE:
    case PROTECTED:
    case PUBLIC:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case OPEN_PAREN:
    case SEMICOLON:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case COLON:
    case ID:
      parseMembersList();
      break;
    default:
      jj_la1[290] = jj_gen;
      ;
    }
    jj_consume_token(CLOSE_BRACE);

  }

  static final public void parseClassHead() throws ParseException {
    parseClassKey();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      parseClassName();
      break;
    default:
      jj_la1[291] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case COLON:
      parseBaseSpec();
      break;
    default:
      jj_la1[292] = jj_gen;
      ;
    }

  }

  static final public void parseMembersList() throws ParseException {
    label_59:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case COLON:
      case ID:
        parseMemeberDeclaration();
        break;
      case PRIVATE:
      case PROTECTED:
      case PUBLIC:
        parseAccessSpecifier();
        jj_consume_token(COLON);
        break;
      default:
        jj_la1[293] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case PRIVATE:
      case PROTECTED:
      case PUBLIC:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case COLON:
      case ID:
        ;
        break;
      default:
        jj_la1[294] = jj_gen;
        break label_59;
      }
    }

  }

  static final public void parseMemeberDeclaration_Subpart() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SEMICOLON:
      jj_consume_token(SEMICOLON);
      break;
    case EXTERN_CS:
    case FRIEND:
    case TYPEDEF:
    case AUTO:
    case REGISTER:
    case STATIC:
    case INLINE:
    case VIRTUAL:
    case CONST:
    case VOLATILE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case CLASS:
    case STRUCT:
    case UNION:
    case ENUM:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case COLON:
    case ID:
      if (jj_2_81(2147483647)) {
        parseMemberDeclaratorList();
        jj_consume_token(SEMICOLON);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXTERN_CS:
        case FRIEND:
        case TYPEDEF:
        case AUTO:
        case REGISTER:
        case STATIC:
        case INLINE:
        case VIRTUAL:
        case CONST:
        case VOLATILE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case CLASS:
        case STRUCT:
        case UNION:
        case ENUM:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case SCOPE:
        case ID:
          parseDeclSpecifier();
          parseMemeberDeclaration_Subpart();
          break;
        default:
          jj_la1[295] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      break;
    default:
      jj_la1[296] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseMemeberDeclaration() throws ParseException {
    if (jj_2_82(2147483647)) {
      parseQualifiedName();
      jj_consume_token(SEMICOLON);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXTERN_CS:
      case FRIEND:
      case TYPEDEF:
      case AUTO:
      case REGISTER:
      case STATIC:
      case INLINE:
      case VIRTUAL:
      case CONST:
      case VOLATILE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case CLASS:
      case STRUCT:
      case UNION:
      case ENUM:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case SEMICOLON:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case COLON:
      case ID:
        parseMemeberDeclaration_Subpart();
        break;
      default:
        jj_la1[297] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

  static final public void parseMemberDeclaratorList() throws ParseException {
    parseMemberDeclarator();
    label_60:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[298] = jj_gen;
        break label_60;
      }
      jj_consume_token(COMMA);
      parseMemberDeclarator();
    }

  }

  static final public void parseMemberDeclarator_Subpart() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case ID:
      parseIdToken();
      break;
    default:
      jj_la1[299] = jj_gen;
      ;
    }
    jj_consume_token(COLON);
    parseConstantExpression();

  }

  static final public void parseMemberDeclarator() throws ParseException {
    if (jj_2_83(2147483647)) {
      parseMemberDeclarator_Subpart();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case ID:
        parseDeclarator_WithoutFunctions();
        break;
      default:
        jj_la1[300] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }

  }

        /* I'll disallow this since it could only be used for a pure-virtual
	 * FUNCTION (method), which are disallowed in TDL
	 */
// void
// parsePureSpecifier ( ) :
// {}
// {
//   (
// 	/* Zero is an INTEGER_CONSTANT, so this may bomb.
// 	 * But then again, we should never have pure virtual methods
// 	 * inside TDL code to begin with...
// 	 *
// 	 * (But it's too much trouble to dike them out...)
// 	 */
//     <EQUAL>  "0" //<ZERO>
//   )
//     {}
// }
  static final public void parseBaseSpec() throws ParseException {
    jj_consume_token(COLON);
    parseBaseList();

  }

  static final public void parseBaseList() throws ParseException {
    parseBaseSpecifier();
    label_61:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[301] = jj_gen;
        break label_61;
      }
      jj_consume_token(COMMA);
      parseBaseSpecifier();
    }

  }

  static final public void parseBaseSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case VIRTUAL:
    case PRIVATE:
    case PROTECTED:
    case PUBLIC:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case VIRTUAL:
        jj_consume_token(VIRTUAL);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
          parseAccessSpecifier();
          break;
        default:
          jj_la1[302] = jj_gen;
          ;
        }
        break;
      case PRIVATE:
      case PROTECTED:
      case PUBLIC:
        parseAccessSpecifier();
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case VIRTUAL:
          jj_consume_token(VIRTUAL);
          break;
        default:
          jj_la1[303] = jj_gen;
          ;
        }
        break;
      default:
        jj_la1[304] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[305] = jj_gen;
      ;
    }
    parseCompleteClassName();

  }

  static final public void parseAccessSpecifier() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PRIVATE:
      jj_consume_token(PRIVATE);
      break;
    case PROTECTED:
      jj_consume_token(PROTECTED);
      break;
    case PUBLIC:
      jj_consume_token(PUBLIC);
      break;
    default:
      jj_la1[306] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

  static final public void parseConversionFunctionName() throws ParseException {
    jj_consume_token(OPERATOR);
    parseConversionTypeName();

  }

  static final public void parseConversionTypeName() throws ParseException {
    parseTypeSpecifier();
    if (jj_2_85(2147483647)) {
      parsePtrOperator();
    } else {
      if (jj_2_84(2147483647)) {
        parseConversionTypeName();
      } else {
        ;
      }
    }

  }

  static final public void parseCtorInitializer() throws ParseException {
    jj_consume_token(COLON);
    parseMemInitializerList();

  }

  static final public void parseMemInitializerList() throws ParseException {
    parseMemInitializer();
    label_62:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[307] = jj_gen;
        break label_62;
      }
      jj_consume_token(COMMA);
      parseMemInitializer();
    }

  }

  static final public void parseMemInitializer() throws ParseException {
    parseCompleteClassName();
    jj_consume_token(OPEN_PAREN);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SIZEOF:
    case NEW:
    case DELETE:
    case CHAR:
    case SHORT:
    case INT:
    case LONG:
    case SIGNED:
    case UNSIGNED:
    case FLOAT:
    case DOUBLE:
    case VOID:
    case OPERATOR:
    case TASK:
    case GOAL:
    case COMMAND:
    case MONITOR:
    case EXCEPTION:
    case HANDLER:
    case RESUME:
    case HANDLES:
    case TRIGGER:
    case DISTRIBUTED:
    case THREADED:
    case NAME:
    case TDL_REF:
    case GET_NUMBER_OF_TRIGGERS:
    case GET_NUMBER_OF_ACTIVATES:
    case NOT:
    case PLUS:
    case MINUS:
    case INCREMENT:
    case DECREMENT:
    case SCOPE:
    case OPEN_PAREN:
    case AMPERSAND:
    case ASTERISK:
    case TILDE:
    case INTEGER_CONSTANT:
    case CHARACTER_CONSTANT:
    case STRING_CONSTANT:
    case ID:
    case FLOAT_CONSTANT_BASIC:
    case FLOATING_CONSTANT:
      parseExpressionList();
      break;
    default:
      jj_la1[308] = jj_gen;
      ;
    }
    jj_consume_token(CLOSE_PAREN);

  }

  static final public void parseOperatorFunctionName() throws ParseException {
    jj_consume_token(OPERATOR);
    parseOperator();

  }

  static final public void parseOperator() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case NEW:
      jj_consume_token(NEW);
      break;
    case DELETE:
      jj_consume_token(DELETE);
      break;
    case PLUS:
      jj_consume_token(PLUS);
      break;
    case MINUS:
      jj_consume_token(MINUS);
      break;
    case ASTERISK:
      jj_consume_token(ASTERISK);
      break;
    case DIVIDE:
      jj_consume_token(DIVIDE);
      break;
    case MODULO:
      jj_consume_token(MODULO);
      break;
    case EXCLUSIVE_OR:
      jj_consume_token(EXCLUSIVE_OR);
      break;
    case AMPERSAND:
      jj_consume_token(AMPERSAND);
      break;
    case INCLUSIVE_OR:
      jj_consume_token(INCLUSIVE_OR);
      break;
    case TILDE:
      jj_consume_token(TILDE);
      break;
    case NOT:
      jj_consume_token(NOT);
      break;
    case EQUAL:
      jj_consume_token(EQUAL);
      break;
    case LESS_THAN:
      jj_consume_token(LESS_THAN);
      break;
    case GREATER_THAN:
      jj_consume_token(GREATER_THAN);
      break;
    case PLUS_EQUAL:
      jj_consume_token(PLUS_EQUAL);
      break;
    case MINUS_EQUAL:
      jj_consume_token(MINUS_EQUAL);
      break;
    case MULTIPLY_EQUAL:
      jj_consume_token(MULTIPLY_EQUAL);
      break;
    case DIVIDE_EQUAL:
      jj_consume_token(DIVIDE_EQUAL);
      break;
    case MODULO_EQUAL:
      jj_consume_token(MODULO_EQUAL);
      break;
    case XOR_EQUAL:
      jj_consume_token(XOR_EQUAL);
      break;
    case AND_EQUAL:
      jj_consume_token(AND_EQUAL);
      break;
    case OR_EQUAL:
      jj_consume_token(OR_EQUAL);
      break;
    case LEFT_SHIFT:
      jj_consume_token(LEFT_SHIFT);
      break;
    case RIGHT_SHIFT:
      jj_consume_token(RIGHT_SHIFT);
      break;
    case LEFTSHIFT_EQUAL:
      jj_consume_token(LEFTSHIFT_EQUAL);
      break;
    case RIGHTSHIFT_EQUAL:
      jj_consume_token(RIGHTSHIFT_EQUAL);
      break;
    case EQUALITY:
      jj_consume_token(EQUALITY);
      break;
    case INEQUALITY:
      jj_consume_token(INEQUALITY);
      break;
    case LESS_THAN_OR_EQUALS:
      jj_consume_token(LESS_THAN_OR_EQUALS);
      break;
    case GREATER_THAN_OR_EQUALS:
      jj_consume_token(GREATER_THAN_OR_EQUALS);
      break;
    case LOGICAL_AND:
      jj_consume_token(LOGICAL_AND);
      break;
    case LOGICAL_OR:
      jj_consume_token(LOGICAL_OR);
      break;
    case INCREMENT:
      jj_consume_token(INCREMENT);
      break;
    case DECREMENT:
      jj_consume_token(DECREMENT);
      break;
    case COMMA:
      jj_consume_token(COMMA);
      break;
    case POINTER_TO_MEMBER_DEREFERENCE:
      jj_consume_token(POINTER_TO_MEMBER_DEREFERENCE);
      break;
    case DEREFERENCE:
      jj_consume_token(DEREFERENCE);
      break;
    case OPEN_PAREN:
      jj_consume_token(OPEN_PAREN);
      jj_consume_token(CLOSE_PAREN);
      break;
    case OPEN_BRACKET:
      jj_consume_token(OPEN_BRACKET);
      jj_consume_token(CLOSE_BRACKET);
      break;
    default:
      jj_la1[309] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

  }

/*************************/
/***  Template parsing ***/
/*************************/


        /* Templates must be declared GLOBAL, and are therefore **NOT**
	 * part of the TDL syntax.
	 */

// void
// parseTemplateDeclaration ( ) :
// {}
// {
//   (
//     <TEMPLATE>  <LESS_THAN>  parseTemplateArgumentList()  <GREATER_THAN>
//     parseDeclaration()
//   )
//     {}
// }


// void
// parseTemplateArgumentList ( ) :
// {}
// {
//   (
//     parseTemplateArgument() ( <COMMA> parseTemplateArgument() ) *
//   )
//     {}
// }


// void
// parseTemplateArgument ( ) :
// {}
// {
//   (
//       parseTypeArgument()
//     | parseArgumentDeclaration()
//   )
//     {}
// }


// void
// parseTypeArgument ( ) :
// {}
// {
//   (
//     <CLASS> parseIdToken()
//   )
//     {}
// }


        /* Of course, TDL code can USE PRE-EXISTING GLOBAL Templated classes */
  static final public void parseTemplateClassName() throws ParseException {
    parseTemplateName();
    jj_consume_token(LESS_THAN);
    if (jj_2_86(2147483647)) {
      parseTypeName();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SIZEOF:
      case NEW:
      case DELETE:
      case CHAR:
      case SHORT:
      case INT:
      case LONG:
      case SIGNED:
      case UNSIGNED:
      case FLOAT:
      case DOUBLE:
      case VOID:
      case OPERATOR:
      case TASK:
      case GOAL:
      case COMMAND:
      case MONITOR:
      case EXCEPTION:
      case HANDLER:
      case RESUME:
      case HANDLES:
      case TRIGGER:
      case DISTRIBUTED:
      case THREADED:
      case NAME:
      case TDL_REF:
      case GET_NUMBER_OF_TRIGGERS:
      case GET_NUMBER_OF_ACTIVATES:
      case NOT:
      case PLUS:
      case MINUS:
      case INCREMENT:
      case DECREMENT:
      case SCOPE:
      case OPEN_PAREN:
      case AMPERSAND:
      case ASTERISK:
      case TILDE:
      case INTEGER_CONSTANT:
      case CHARACTER_CONSTANT:
      case STRING_CONSTANT:
      case ID:
      case FLOAT_CONSTANT_BASIC:
      case FLOATING_CONSTANT:
        parseRelationalExpression_ExcludingGreaterThan();
        break;
      default:
        jj_la1[310] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    label_63:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[311] = jj_gen;
        break label_63;
      }
      jj_consume_token(COMMA);
      if (jj_2_87(2147483647)) {
        parseTypeName();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case SIZEOF:
        case NEW:
        case DELETE:
        case CHAR:
        case SHORT:
        case INT:
        case LONG:
        case SIGNED:
        case UNSIGNED:
        case FLOAT:
        case DOUBLE:
        case VOID:
        case OPERATOR:
        case TASK:
        case GOAL:
        case COMMAND:
        case MONITOR:
        case EXCEPTION:
        case HANDLER:
        case RESUME:
        case HANDLES:
        case TRIGGER:
        case DISTRIBUTED:
        case THREADED:
        case NAME:
        case TDL_REF:
        case GET_NUMBER_OF_TRIGGERS:
        case GET_NUMBER_OF_ACTIVATES:
        case NOT:
        case PLUS:
        case MINUS:
        case INCREMENT:
        case DECREMENT:
        case SCOPE:
        case OPEN_PAREN:
        case AMPERSAND:
        case ASTERISK:
        case TILDE:
        case INTEGER_CONSTANT:
        case CHARACTER_CONSTANT:
        case STRING_CONSTANT:
        case ID:
        case FLOAT_CONSTANT_BASIC:
        case FLOATING_CONSTANT:
          parseRelationalExpression_ExcludingGreaterThan();
          break;
        default:
          jj_la1[312] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
    jj_consume_token(GREATER_THAN);

  }

  static final private boolean jj_2_1(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_1();
    jj_save(0, xla);
    return retval;
  }

  static final private boolean jj_2_2(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_2();
    jj_save(1, xla);
    return retval;
  }

  static final private boolean jj_2_3(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_3();
    jj_save(2, xla);
    return retval;
  }

  static final private boolean jj_2_4(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_4();
    jj_save(3, xla);
    return retval;
  }

  static final private boolean jj_2_5(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_5();
    jj_save(4, xla);
    return retval;
  }

  static final private boolean jj_2_6(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_6();
    jj_save(5, xla);
    return retval;
  }

  static final private boolean jj_2_7(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_7();
    jj_save(6, xla);
    return retval;
  }

  static final private boolean jj_2_8(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_8();
    jj_save(7, xla);
    return retval;
  }

  static final private boolean jj_2_9(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_9();
    jj_save(8, xla);
    return retval;
  }

  static final private boolean jj_2_10(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_10();
    jj_save(9, xla);
    return retval;
  }

  static final private boolean jj_2_11(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_11();
    jj_save(10, xla);
    return retval;
  }

  static final private boolean jj_2_12(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_12();
    jj_save(11, xla);
    return retval;
  }

  static final private boolean jj_2_13(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_13();
    jj_save(12, xla);
    return retval;
  }

  static final private boolean jj_2_14(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_14();
    jj_save(13, xla);
    return retval;
  }

  static final private boolean jj_2_15(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_15();
    jj_save(14, xla);
    return retval;
  }

  static final private boolean jj_2_16(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_16();
    jj_save(15, xla);
    return retval;
  }

  static final private boolean jj_2_17(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_17();
    jj_save(16, xla);
    return retval;
  }

  static final private boolean jj_2_18(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_18();
    jj_save(17, xla);
    return retval;
  }

  static final private boolean jj_2_19(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_19();
    jj_save(18, xla);
    return retval;
  }

  static final private boolean jj_2_20(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_20();
    jj_save(19, xla);
    return retval;
  }

  static final private boolean jj_2_21(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_21();
    jj_save(20, xla);
    return retval;
  }

  static final private boolean jj_2_22(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_22();
    jj_save(21, xla);
    return retval;
  }

  static final private boolean jj_2_23(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_23();
    jj_save(22, xla);
    return retval;
  }

  static final private boolean jj_2_24(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_24();
    jj_save(23, xla);
    return retval;
  }

  static final private boolean jj_2_25(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_25();
    jj_save(24, xla);
    return retval;
  }

  static final private boolean jj_2_26(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_26();
    jj_save(25, xla);
    return retval;
  }

  static final private boolean jj_2_27(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_27();
    jj_save(26, xla);
    return retval;
  }

  static final private boolean jj_2_28(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_28();
    jj_save(27, xla);
    return retval;
  }

  static final private boolean jj_2_29(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_29();
    jj_save(28, xla);
    return retval;
  }

  static final private boolean jj_2_30(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_30();
    jj_save(29, xla);
    return retval;
  }

  static final private boolean jj_2_31(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_31();
    jj_save(30, xla);
    return retval;
  }

  static final private boolean jj_2_32(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_32();
    jj_save(31, xla);
    return retval;
  }

  static final private boolean jj_2_33(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_33();
    jj_save(32, xla);
    return retval;
  }

  static final private boolean jj_2_34(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_34();
    jj_save(33, xla);
    return retval;
  }

  static final private boolean jj_2_35(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_35();
    jj_save(34, xla);
    return retval;
  }

  static final private boolean jj_2_36(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_36();
    jj_save(35, xla);
    return retval;
  }

  static final private boolean jj_2_37(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_37();
    jj_save(36, xla);
    return retval;
  }

  static final private boolean jj_2_38(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_38();
    jj_save(37, xla);
    return retval;
  }

  static final private boolean jj_2_39(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_39();
    jj_save(38, xla);
    return retval;
  }

  static final private boolean jj_2_40(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_40();
    jj_save(39, xla);
    return retval;
  }

  static final private boolean jj_2_41(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_41();
    jj_save(40, xla);
    return retval;
  }

  static final private boolean jj_2_42(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_42();
    jj_save(41, xla);
    return retval;
  }

  static final private boolean jj_2_43(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_43();
    jj_save(42, xla);
    return retval;
  }

  static final private boolean jj_2_44(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_44();
    jj_save(43, xla);
    return retval;
  }

  static final private boolean jj_2_45(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_45();
    jj_save(44, xla);
    return retval;
  }

  static final private boolean jj_2_46(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_46();
    jj_save(45, xla);
    return retval;
  }

  static final private boolean jj_2_47(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_47();
    jj_save(46, xla);
    return retval;
  }

  static final private boolean jj_2_48(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_48();
    jj_save(47, xla);
    return retval;
  }

  static final private boolean jj_2_49(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_49();
    jj_save(48, xla);
    return retval;
  }

  static final private boolean jj_2_50(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_50();
    jj_save(49, xla);
    return retval;
  }

  static final private boolean jj_2_51(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_51();
    jj_save(50, xla);
    return retval;
  }

  static final private boolean jj_2_52(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_52();
    jj_save(51, xla);
    return retval;
  }

  static final private boolean jj_2_53(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_53();
    jj_save(52, xla);
    return retval;
  }

  static final private boolean jj_2_54(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_54();
    jj_save(53, xla);
    return retval;
  }

  static final private boolean jj_2_55(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_55();
    jj_save(54, xla);
    return retval;
  }

  static final private boolean jj_2_56(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_56();
    jj_save(55, xla);
    return retval;
  }

  static final private boolean jj_2_57(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_57();
    jj_save(56, xla);
    return retval;
  }

  static final private boolean jj_2_58(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_58();
    jj_save(57, xla);
    return retval;
  }

  static final private boolean jj_2_59(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_59();
    jj_save(58, xla);
    return retval;
  }

  static final private boolean jj_2_60(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_60();
    jj_save(59, xla);
    return retval;
  }

  static final private boolean jj_2_61(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_61();
    jj_save(60, xla);
    return retval;
  }

  static final private boolean jj_2_62(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_62();
    jj_save(61, xla);
    return retval;
  }

  static final private boolean jj_2_63(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_63();
    jj_save(62, xla);
    return retval;
  }

  static final private boolean jj_2_64(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_64();
    jj_save(63, xla);
    return retval;
  }

  static final private boolean jj_2_65(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_65();
    jj_save(64, xla);
    return retval;
  }

  static final private boolean jj_2_66(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_66();
    jj_save(65, xla);
    return retval;
  }

  static final private boolean jj_2_67(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_67();
    jj_save(66, xla);
    return retval;
  }

  static final private boolean jj_2_68(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_68();
    jj_save(67, xla);
    return retval;
  }

  static final private boolean jj_2_69(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_69();
    jj_save(68, xla);
    return retval;
  }

  static final private boolean jj_2_70(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_70();
    jj_save(69, xla);
    return retval;
  }

  static final private boolean jj_2_71(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_71();
    jj_save(70, xla);
    return retval;
  }

  static final private boolean jj_2_72(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_72();
    jj_save(71, xla);
    return retval;
  }

  static final private boolean jj_2_73(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_73();
    jj_save(72, xla);
    return retval;
  }

  static final private boolean jj_2_74(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_74();
    jj_save(73, xla);
    return retval;
  }

  static final private boolean jj_2_75(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_75();
    jj_save(74, xla);
    return retval;
  }

  static final private boolean jj_2_76(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_76();
    jj_save(75, xla);
    return retval;
  }

  static final private boolean jj_2_77(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_77();
    jj_save(76, xla);
    return retval;
  }

  static final private boolean jj_2_78(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_78();
    jj_save(77, xla);
    return retval;
  }

  static final private boolean jj_2_79(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_79();
    jj_save(78, xla);
    return retval;
  }

  static final private boolean jj_2_80(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_80();
    jj_save(79, xla);
    return retval;
  }

  static final private boolean jj_2_81(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_81();
    jj_save(80, xla);
    return retval;
  }

  static final private boolean jj_2_82(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_82();
    jj_save(81, xla);
    return retval;
  }

  static final private boolean jj_2_83(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_83();
    jj_save(82, xla);
    return retval;
  }

  static final private boolean jj_2_84(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_84();
    jj_save(83, xla);
    return retval;
  }

  static final private boolean jj_2_85(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_85();
    jj_save(84, xla);
    return retval;
  }

  static final private boolean jj_2_86(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_86();
    jj_save(85, xla);
    return retval;
  }

  static final private boolean jj_2_87(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_87();
    jj_save(86, xla);
    return retval;
  }

  static final private boolean jj_3R_125() {
    if (jj_3R_262()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_263()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_83() {
    if (jj_scan_token(0)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_754() {
    if (jj_3R_776()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_690() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_82() {
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_81() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_629() {
    if (jj_scan_token(AT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_690()) {
    jj_scanpos = xsp;
    if (jj_3R_691()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_452() {
    if (jj_3R_565()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_547() {
    if (jj_scan_token(ASM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_633()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_11() {
    if (jj_3R_80()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_81()) {
    jj_scanpos = xsp;
    if (jj_3R_82()) {
    jj_scanpos = xsp;
    if (jj_3R_83()) {
    jj_scanpos = xsp;
    if (jj_3R_84()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_648() {
    if (jj_3R_226()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_565() {
    Token xsp;
    if (jj_3R_648()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_648()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_753() {
    if (jj_3R_80()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_722() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_753()) {
    jj_scanpos = xsp;
    if (jj_3R_754()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_628() {
    if (jj_scan_token(IN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_535()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_541() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_628()) {
    jj_scanpos = xsp;
    if (jj_3R_629()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_265() {
    if (jj_3R_226()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_264() {
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_452()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_269() {
    if (jj_3R_457()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_652() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_126() {
    if (jj_scan_token(EXTERN_CS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(STRING_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_264()) {
    jj_scanpos = xsp;
    if (jj_3R_265()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_572() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_571()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_64() {
    if (jj_3R_145()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_366() {
    if (jj_scan_token(TERMINATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_541()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_571() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_652()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_27() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_365() {
    if (jj_scan_token(TERMINATE_IN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_535()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_268() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_540() {
    if (jj_3R_622()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_503() {
    if (jj_scan_token(FORMAT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_605()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_457() {
    if (jj_3R_571()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_572()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_79() {
    if (jj_scan_token(FORMAT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_64() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_539() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_78() {
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_128() {
    if (jj_scan_token(ENUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_268()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_269()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_77() {
    if (jj_scan_token(0)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_834() {
    if (jj_3R_776()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_76() {
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_75() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_26() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_458() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_364() {
    if (jj_scan_token(TERMINATE_AT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_539()) {
    jj_scanpos = xsp;
    if (jj_3R_540()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_63() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_627() {
    if (jj_3R_622()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_271() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_458()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_10() {
    if (jj_3R_74()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_75()) {
    jj_scanpos = xsp;
    if (jj_3R_76()) {
    jj_scanpos = xsp;
    if (jj_3R_77()) {
    jj_scanpos = xsp;
    if (jj_3R_78()) {
    jj_scanpos = xsp;
    if (jj_3R_79()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_626() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_833() {
    if (jj_3R_74()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_538() {
    if (jj_scan_token(UNTIL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_626()) {
    jj_scanpos = xsp;
    if (jj_3R_627()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_270() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_62() {
    if (jj_3R_130()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_776() {
    if (jj_3R_278()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_833()) {
    jj_scanpos = xsp;
    if (jj_3R_834()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_129() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_270()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_271()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_625() {
    if (jj_scan_token(FOR_CI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_624() {
    if (jj_scan_token(FOR_CS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_274() {
    if (jj_3R_130()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_537() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_624()) {
    jj_scanpos = xsp;
    if (jj_3R_625()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_535()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_132() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_274()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_3R_275()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_536() {
    if (jj_3R_344()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_130() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_568() {
    if (jj_scan_token(UNION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_567() {
    if (jj_scan_token(STRUCT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_164() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_566() {
    if (jj_scan_token(CLASS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_363() {
    if (jj_scan_token(DISABLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_536()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_537()) {
    jj_scanpos = xsp;
    if (jj_3R_538()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_453() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_566()) {
    jj_scanpos = xsp;
    if (jj_3R_567()) {
    jj_scanpos = xsp;
    if (jj_3R_568()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_74() {
    if (jj_3R_163()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_164()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_704() {
    if (jj_scan_token(ENUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_739()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_703() {
    if (jj_3R_453()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_9() {
    if (jj_3R_73()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_642() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_703()) {
    jj_scanpos = xsp;
    if (jj_3R_704()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_25() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_362() {
    if (jj_scan_token(DISABLE_FOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_535()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_61() {
    if (jj_3R_129()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_534() {
    if (jj_3R_622()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_407() {
    if (jj_scan_token(VOID)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_406() {
    if (jj_scan_token(DOUBLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_405() {
    if (jj_scan_token(FLOAT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_404() {
    if (jj_scan_token(UNSIGNED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_314() {
    if (jj_3R_73()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_403() {
    if (jj_scan_token(SIGNED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_402() {
    if (jj_scan_token(LONG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_560() {
    if (jj_3R_132()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_401() {
    if (jj_scan_token(INT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_400() {
    if (jj_scan_token(SHORT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_533() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_399() {
    if (jj_scan_token(CHAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_559() {
    if (jj_3R_129()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_398() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_559()) {
    jj_scanpos = xsp;
    if (jj_3R_560()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_59() {
    if (jj_3R_127()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_257() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_398()) {
    jj_scanpos = xsp;
    if (jj_3R_399()) {
    jj_scanpos = xsp;
    if (jj_3R_400()) {
    jj_scanpos = xsp;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_405()) {
    jj_scanpos = xsp;
    if (jj_3R_406()) {
    jj_scanpos = xsp;
    if (jj_3R_407()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_558() {
    if (jj_3R_642()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_313() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_163()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_60() {
    if (jj_3R_128()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_361() {
    if (jj_scan_token(DISABLE_UNTIL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_533()) {
    jj_scanpos = xsp;
    if (jj_3R_534()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_8() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_252() {
    if (jj_scan_token(VOLATILE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_251() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_557() {
    if (jj_3R_127()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_394() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_557()) {
    jj_scanpos = xsp;
    if (jj_3R_558()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_312() {
    if (jj_3R_170()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_23() {
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_393() {
    if (jj_3R_128()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_532() {
    if (jj_scan_token(WAIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_311() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_250() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_393()) {
    jj_scanpos = xsp;
    if (jj_3R_394()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_531() {
    if (jj_scan_token(PARALLEL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_249() {
    if (jj_3R_257()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_621() {
    if (jj_3R_687()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_163() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_311()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_312()) {
    jj_scanpos = xsp;
    if (jj_3R_313()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_314()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_360() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_531()) {
    jj_scanpos = xsp;
    if (jj_3R_532()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_116() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_249()) {
    jj_scanpos = xsp;
    if (jj_3R_250()) {
    jj_scanpos = xsp;
    if (jj_3R_251()) {
    jj_scanpos = xsp;
    if (jj_3R_252()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_620() {
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_530() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_620()) {
    jj_scanpos = xsp;
    if (jj_3R_621()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_664() {
    if (jj_scan_token(VIRTUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_663() {
    if (jj_scan_token(INLINE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_24() {
    if (jj_3R_100()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_578() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_663()) {
    jj_scanpos = xsp;
    if (jj_3R_664()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_662() {
    if (jj_scan_token(EXTERN_CS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_661() {
    if (jj_scan_token(STATIC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_529() {
    if (jj_3R_100()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_660() {
    if (jj_scan_token(REGISTER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_659() {
    if (jj_scan_token(AUTO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_359() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_529()) {
    jj_scanpos = xsp;
    if (jj_3R_530()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_577() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_659()) {
    jj_scanpos = xsp;
    if (jj_3R_660()) {
    jj_scanpos = xsp;
    if (jj_3R_661()) {
    jj_scanpos = xsp;
    if (jj_3R_662()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_214() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_359()) {
    jj_scanpos = xsp;
    if (jj_3R_360()) {
    jj_scanpos = xsp;
    if (jj_3R_361()) {
    jj_scanpos = xsp;
    if (jj_3R_362()) {
    jj_scanpos = xsp;
    if (jj_3R_363()) {
    jj_scanpos = xsp;
    if (jj_3R_364()) {
    jj_scanpos = xsp;
    if (jj_3R_365()) {
    jj_scanpos = xsp;
    if (jj_3R_366()) {
    jj_scanpos = xsp;
    if (jj_3R_367()) {
    jj_scanpos = xsp;
    if (jj_3R_368()) {
    jj_scanpos = xsp;
    if (jj_3R_369()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_186() {
    if (jj_scan_token(DEFAULT_LABEL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_468() {
    if (jj_scan_token(TYPEDEF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_467() {
    if (jj_scan_token(FRIEND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_466() {
    if (jj_3R_578()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_465() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_464() {
    if (jj_3R_577()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_58() {
    if (jj_3R_126()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_278() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_464()) {
    jj_scanpos = xsp;
    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;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_185() {
    if (jj_scan_token(CASE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_546() {
    if (jj_3R_632()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_371() {
    if (jj_3R_547()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_545() {
    if (jj_3R_126()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_370() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_545()) {
    jj_scanpos = xsp;
    if (jj_3R_546()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_184() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_57() {
    if (jj_3R_125()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_226() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_370()) {
    jj_scanpos = xsp;
    if (jj_3R_371()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_731() {
    if (jj_3R_278()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_632()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_730() {
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_695() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_730()) {
    jj_scanpos = xsp;
    if (jj_3R_731()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_96() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_184()) {
    jj_scanpos = xsp;
    if (jj_3R_185()) {
    jj_scanpos = xsp;
    if (jj_3R_186()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_687() {
    if (jj_scan_token(ON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_694() {
    if (jj_3R_125()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_632() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_694()) {
    jj_scanpos = xsp;
    if (jj_3R_695()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_35() {
    if (jj_3R_105()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_22() {
    if (jj_3R_98()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_827() {
    if (jj_3R_633()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_826() {
    if (jj_scan_token(CHARACTER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_36() {
    if (jj_3R_106()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_825() {
    if (jj_scan_token(FLOATING_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_343() {
    if (jj_3R_98()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_824() {
    if (jj_scan_token(FLOAT_CONSTANT_BASIC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_823() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_815() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_823()) {
    jj_scanpos = xsp;
    if (jj_3R_824()) {
    jj_scanpos = xsp;
    if (jj_3R_825()) {
    jj_scanpos = xsp;
    if (jj_3R_826()) {
    jj_scanpos = xsp;
    if (jj_3R_827()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_37() {
    if (jj_3R_96()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_56() {
    if (jj_3R_124()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_123() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_342() {
    if (jj_scan_token(SERIAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_410() {
    if (jj_3R_563()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_341() {
    if (jj_scan_token(SEQUENTIAL_ACHIEVEMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_409() {
    if (jj_3R_124()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_260() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_409()) {
    jj_scanpos = xsp;
    if (jj_3R_410()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_340() {
    if (jj_scan_token(SEQUENTIAL_PLANNING)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_259() {
    if (jj_3R_408()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_55() {
    if (jj_3R_123()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_339() {
    if (jj_scan_token(SEQUENTIAL_EXECUTION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_120() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_259()) {
    jj_scanpos = xsp;
    if (jj_3R_260()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_644() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_338() {
    if (jj_scan_token(SEQUENTIAL_EXPANSION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_562() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_643() {
    if (jj_3R_123()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_337() {
    if (jj_scan_token(SEQUENTIAL_HANDLING)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_561() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_643()) {
    jj_scanpos = xsp;
    if (jj_3R_644()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_21() {
    if (jj_3R_98()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_196() {
    Token xsp;
    xsp = jj_scanpos;
    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()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_343()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_408() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_561()) {
    jj_scanpos = xsp;
    if (jj_3R_562()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_336() {
    if (jj_3R_98()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_822() {
    if (jj_scan_token(GET_NUMBER_OF_ACTIVATES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_821() {
    if (jj_scan_token(GET_NUMBER_OF_TRIGGERS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_122() {
    if (jj_scan_token(STRING_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_814() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_821()) {
    jj_scanpos = xsp;
    if (jj_3R_822()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_813() {
    if (jj_3R_820()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_335() {
    if (jj_scan_token(ACHIEVEMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_34() {
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_334() {
    if (jj_scan_token(PLANNING)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_54() {
    if (jj_3R_123()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_121() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_333() {
    if (jj_scan_token(EXECUTION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_812() {
    if (jj_scan_token(TRIGGER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_332() {
    if (jj_scan_token(EXPANSION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_819() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_799() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_812()) {
    jj_scanpos = xsp;
    if (jj_3R_813()) {
    jj_scanpos = xsp;
    if (jj_3R_814()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_52() {
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_331() {
    if (jj_scan_token(HANDLING)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_818() {
    if (jj_3R_123()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_811() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_818()) {
    jj_scanpos = xsp;
    if (jj_3R_819()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_798() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_478()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_810() {
    if (jj_3R_124()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_817() {
    if (jj_3R_815()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_53() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_121()) {
    jj_scanpos = xsp;
    if (jj_3R_122()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_816() {
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_797() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_810()) {
    jj_scanpos = xsp;
    if (jj_3R_811()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_195() {
    if (jj_scan_token(SEQUENTIAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_335()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_336()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_809() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_816()) {
    jj_scanpos = xsp;
    if (jj_3R_817()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_808() {
    if (jj_3R_815()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_100() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_195()) {
    jj_scanpos = xsp;
    if (jj_3R_196()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_796() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_808()) {
    jj_scanpos = xsp;
    if (jj_3R_809()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_781() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_796()) {
    jj_scanpos = xsp;
    if (jj_3R_797()) {
    jj_scanpos = xsp;
    if (jj_3R_798()) {
    jj_scanpos = xsp;
    if (jj_3R_799()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_33() {
    if (jj_3R_96()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_829() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_832() {
    if (jj_scan_token(THIS_CI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_831() {
    if (jj_scan_token(THIS_CS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_830() {
    if (jj_scan_token(PARENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_828() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_830()) {
    jj_scanpos = xsp;
    if (jj_3R_831()) {
    jj_scanpos = xsp;
    if (jj_3R_832()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_733() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_329() {
    if (jj_3R_517()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_732() {
    if (jj_scan_token(STRING_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_696() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_732()) {
    jj_scanpos = xsp;
    if (jj_3R_733()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_194() {
    if (jj_scan_token(MONITOR_PERIOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_330()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_20() {
    if (jj_3R_97()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_633() {
    Token xsp;
    if (jj_3R_696()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_696()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_193() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_20()) {
    jj_scanpos = xsp;
    if (jj_3R_329()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_192() {
    if (jj_3R_100()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_191() {
    if (jj_3R_328()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_820() {
    if (jj_scan_token(TDL_REF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_828()) {
    jj_scanpos = xsp;
    if (jj_3R_829()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_99() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_191()) {
    jj_scanpos = xsp;
    if (jj_3R_192()) {
    jj_scanpos = xsp;
    if (jj_3R_193()) {
    jj_scanpos = xsp;
    if (jj_3R_194()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_800() {
    if (jj_3R_248()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_300() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_183() {
    if (jj_scan_token(THREADED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_392() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_182() {
    if (jj_scan_token(DISTRIBUTED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_181() {
    if (jj_scan_token(HANDLES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_180() {
    if (jj_scan_token(RESUME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_179() {
    if (jj_scan_token(HANDLER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_178() {
    if (jj_scan_token(EXCEPTION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_248() {
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_392()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_177() {
    if (jj_scan_token(MONITOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_176() {
    if (jj_scan_token(COMMAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_175() {
    if (jj_scan_token(GOAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_787() {
    if (jj_scan_token(DECREMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_174() {
    if (jj_scan_token(TASK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_51() {
    if (jj_3R_119()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_786() {
    if (jj_scan_token(INCREMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_785() {
    if (jj_scan_token(DEREFERENCE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_173() {
    if (jj_scan_token(NAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_784() {
    if (jj_scan_token(PERIOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_172() {
    if (jj_scan_token(ID)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_783() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_800()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_782() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_478()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_765() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_782()) {
    jj_scanpos = xsp;
    if (jj_3R_783()) {
    jj_scanpos = xsp;
    if (jj_3R_784()) {
    jj_scanpos = xsp;
    if (jj_3R_785()) {
    jj_scanpos = xsp;
    if (jj_3R_786()) {
    jj_scanpos = xsp;
    if (jj_3R_787()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_92() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_172()) {
    jj_scanpos = xsp;
    if (jj_3R_173()) {
    jj_scanpos = xsp;
    if (jj_3R_174()) {
    jj_scanpos = xsp;
    if (jj_3R_175()) {
    jj_scanpos = xsp;
    if (jj_3R_176()) {
    jj_scanpos = xsp;
    if (jj_3R_177()) {
    jj_scanpos = xsp;
    if (jj_3R_178()) {
    jj_scanpos = xsp;
    if (jj_3R_179()) {
    jj_scanpos = xsp;
    if (jj_3R_180()) {
    jj_scanpos = xsp;
    if (jj_3R_181()) {
    jj_scanpos = xsp;
    if (jj_3R_182()) {
    jj_scanpos = xsp;
    if (jj_3R_183()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_764() {
    if (jj_3R_781()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_763() {
    if (jj_3R_119()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_619() {
    if (jj_scan_token(MAXIMUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(TRIGGER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_489() {
    if (jj_3R_593()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_738() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_763()) {
    jj_scanpos = xsp;
    if (jj_3R_764()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_765()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_71() {
    if (jj_scan_token(VOID)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_7() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_71()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_592() {
    if (jj_scan_token(VOID)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_258() {
    if (jj_3R_248()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_618() {
    if (jj_scan_token(MAXIMUM_TRIGGER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_119() {
    if (jj_3R_257()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_258()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_488() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_592()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_517() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_618()) {
    jj_scanpos = xsp;
    if (jj_3R_619()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_247() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_556() {
    if (jj_3R_471()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_246() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_114() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_246()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(DELETE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_247()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_112()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_151() {
    if (jj_3R_300()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_488()) {
    jj_scanpos = xsp;
    if (jj_3R_489()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_50() {
    if (jj_3R_118()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_391() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_556()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_397() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_478()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_188() {
    if (jj_scan_token(MAXIMUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(ACTIVATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_396() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_478()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_254() {
    Token xsp;
    if (jj_3R_397()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_397()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_395() {
    if (jj_3R_118()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_253() {
    Token xsp;
    if (jj_3R_395()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_395()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_396()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_256() {
    if (jj_3R_307()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_301() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_117() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_253()) {
    jj_scanpos = xsp;
    if (jj_3R_254()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_187() {
    if (jj_scan_token(MAXIMUM_ACTIVATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_97() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_187()) {
    jj_scanpos = xsp;
    if (jj_3R_188()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_48() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_152() {
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_301()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_255() {
    if (jj_3R_129()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_144() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_118() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_255()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_256()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_49() {
    if (jj_3R_117()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_641() {
    if (jj_3R_390()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_142() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_299() {
    if (jj_scan_token(RESUME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_555() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_641()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_554() {
    if (jj_3R_117()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_143() {
    if (jj_scan_token(GREATER_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_67() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_152()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_150() {
    if (jj_scan_token(HANDLER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_617() {
    if (jj_scan_token(SPAWN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_149() {
    if (jj_scan_token(EXCEPTION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(HANDLER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_19() {
    if (jj_3R_96()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_390() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_554()) {
    jj_scanpos = xsp;
    if (jj_3R_555()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_141() {
    if (jj_scan_token(GREATER_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_66() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_149()) {
    jj_scanpos = xsp;
    if (jj_3R_150()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_87() {
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_143()) {
    jj_scanpos = xsp;
    if (jj_3R_144()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_616() {
    if (jj_3R_96()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_86() {
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_141()) {
    jj_scanpos = xsp;
    if (jj_3R_142()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_374() {
    if (jj_3R_372()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_115() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_248()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_47() {
    if (jj_3R_115()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_373() {
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_230() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_373()) {
    jj_scanpos = xsp;
    if (jj_3R_374()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_245() {
    if (jj_3R_391()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_229() {
    if (jj_3R_372()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_244() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_615() {
    if (jj_scan_token(ON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(TERMINATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_243() {
    if (jj_3R_390()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_228() {
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_242() {
    if (jj_3R_115()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_614() {
    if (jj_scan_token(ON_TERMINATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_156() {
    if (jj_scan_token(MONITOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_241() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_113() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_241()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(NEW)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_242()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_243()) {
    jj_scanpos = xsp;
    if (jj_3R_244()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_245()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_516() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_614()) {
    jj_scanpos = xsp;
    if (jj_3R_615()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_616()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_617()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_67()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_44() {
    if (jj_3R_111()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_112()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_238() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_237() {
    if (jj_scan_token(NOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_236() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_235() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_306() {
    if (jj_scan_token(COMMAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_234() {
    if (jj_scan_token(AMPERSAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_233() {
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_702() {
    if (jj_3R_738()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_701() {
    if (jj_3R_111()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_112()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_111() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_233()) {
    jj_scanpos = xsp;
    if (jj_3R_234()) {
    jj_scanpos = xsp;
    if (jj_3R_235()) {
    jj_scanpos = xsp;
    if (jj_3R_236()) {
    jj_scanpos = xsp;
    if (jj_3R_237()) {
    jj_scanpos = xsp;
    if (jj_3R_238()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_640() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_701()) {
    jj_scanpos = xsp;
    if (jj_3R_702()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_45() {
    if (jj_3R_113()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_43() {
    if (jj_3R_110()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_305() {
    if (jj_scan_token(GOAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_46() {
    if (jj_3R_114()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_108() {
    if (jj_3R_227()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(LESS_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_228()) {
    jj_scanpos = xsp;
    if (jj_3R_229()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_230()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(GREATER_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_613() {
    if (jj_scan_token(EXCEPTION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_639() {
    if (jj_3R_113()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_551() {
    if (jj_3R_231()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_515() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_613()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(HANDLER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_67()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_553() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_639()) {
    jj_scanpos = xsp;
    if (jj_3R_640()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_550() {
    if (jj_3R_110()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_552() {
    if (jj_3R_114()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_378() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_552()) {
    jj_scanpos = xsp;
    if (jj_3R_553()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_297() {
    if (jj_scan_token(TASK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_675() {
    if (jj_3R_479()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_612() {
    if (jj_scan_token(DELAY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(EXPANSION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_591() {
    if (jj_3R_482()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_675()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_590() {
    if (jj_3R_482()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_377() {
    if (jj_scan_token(SIZEOF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_550()) {
    jj_scanpos = xsp;
    if (jj_3R_551()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_376() {
    if (jj_scan_token(DECREMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_231()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_375() {
    if (jj_scan_token(INCREMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_231()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_611() {
    if (jj_scan_token(EXPAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(FIRST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_487() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_591()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_42() {
    if (jj_3R_110()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_486() {
    if (jj_3R_479()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_590()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_514() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_611()) {
    jj_scanpos = xsp;
    if (jj_3R_612()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_231() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_375()) {
    jj_scanpos = xsp;
    if (jj_3R_376()) {
    jj_scanpos = xsp;
    if (jj_3R_377()) {
    jj_scanpos = xsp;
    if (jj_3R_378()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_674() {
    if (jj_3R_479()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_589() {
    if (jj_3R_485()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_674()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_240() {
    if (jj_3R_231()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_588() {
    if (jj_3R_485()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_610() {
    if (jj_scan_token(DELAY_EXPANSION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_304() {
    if (jj_3R_485()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_486()) {
    jj_scanpos = xsp;
    if (jj_3R_487()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_484() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_589()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_239() {
    if (jj_3R_110()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_609() {
    if (jj_scan_token(EXPAND_FIRST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_112() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_239()) {
    jj_scanpos = xsp;
    if (jj_3R_240()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_483() {
    if (jj_3R_479()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_588()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_673() {
    if (jj_3R_482()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_513() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_609()) {
    jj_scanpos = xsp;
    if (jj_3R_610()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_587() {
    if (jj_3R_485()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_673()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_586() {
    if (jj_3R_485()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_110() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_112()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_303() {
    if (jj_3R_482()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_483()) {
    jj_scanpos = xsp;
    if (jj_3R_484()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_328() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_513()) {
    jj_scanpos = xsp;
    if (jj_3R_514()) {
    jj_scanpos = xsp;
    if (jj_3R_515()) {
    jj_scanpos = xsp;
    if (jj_3R_516()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_481() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_587()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_780() {
    if (jj_scan_token(POINTER_TO_MEMBER_DEREFERENCE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_779() {
    if (jj_scan_token(POINTER_TO_MEMBER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_480() {
    if (jj_3R_482()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_586()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_759() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_779()) {
    jj_scanpos = xsp;
    if (jj_3R_780()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_112()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_450() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_449() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_302() {
    if (jj_3R_479()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_480()) {
    jj_scanpos = xsp;
    if (jj_3R_481()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_448() {
    if (jj_scan_token(DEREFERENCE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_447() {
    if (jj_scan_token(POINTER_TO_MEMBER_DEREFERENCE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_734() {
    if (jj_3R_112()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_759()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_95() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_446() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_445() {
    if (jj_scan_token(DECREMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_444() {
    if (jj_scan_token(INCREMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_153() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_302()) {
    jj_scanpos = xsp;
    if (jj_3R_303()) {
    jj_scanpos = xsp;
    if (jj_3R_304()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_443() {
    if (jj_scan_token(LOGICAL_OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_442() {
    if (jj_scan_token(LOGICAL_AND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_762() {
    if (jj_scan_token(MODULO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_441() {
    if (jj_scan_token(GREATER_THAN_OR_EQUALS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_761() {
    if (jj_scan_token(DIVIDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_440() {
    if (jj_scan_token(LESS_THAN_OR_EQUALS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_760() {
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_439() {
    if (jj_scan_token(INEQUALITY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_438() {
    if (jj_scan_token(EQUALITY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_437() {
    if (jj_scan_token(RIGHTSHIFT_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_436() {
    if (jj_scan_token(LEFTSHIFT_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_94() {
    if (jj_scan_token(ENUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_435() {
    if (jj_scan_token(RIGHT_SHIFT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_735() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_760()) {
    jj_scanpos = xsp;
    if (jj_3R_761()) {
    jj_scanpos = xsp;
    if (jj_3R_762()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_734()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_434() {
    if (jj_scan_token(LEFT_SHIFT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_433() {
    if (jj_scan_token(OR_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_432() {
    if (jj_scan_token(AND_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_431() {
    if (jj_scan_token(XOR_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_430() {
    if (jj_scan_token(MODULO_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_501() {
    if (jj_3R_316()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_429() {
    if (jj_scan_token(DIVIDE_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_697() {
    if (jj_3R_734()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_735()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_428() {
    if (jj_scan_token(MULTIPLY_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_427() {
    if (jj_scan_token(MINUS_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_426() {
    if (jj_scan_token(PLUS_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_425() {
    if (jj_scan_token(GREATER_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_604() {
    if (jj_3R_685()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_93() {
    if (jj_scan_token(STRUCT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_424() {
    if (jj_scan_token(LESS_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_737() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_423() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_736() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_18() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_93()) {
    jj_scanpos = xsp;
    if (jj_3R_94()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_95()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_422() {
    if (jj_scan_token(NOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_213() {
    if (jj_3R_327()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_421() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_420() {
    if (jj_scan_token(INCLUSIVE_OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_419() {
    if (jj_scan_token(AMPERSAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_418() {
    if (jj_scan_token(EXCLUSIVE_OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_698() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_736()) {
    jj_scanpos = xsp;
    if (jj_3R_737()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_697()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_603() {
    if (jj_3R_684()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_485() {
    if (jj_scan_token(THREADED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_358() {
    if (jj_scan_token(THIS_CI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_417() {
    if (jj_scan_token(MODULO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_357() {
    if (jj_scan_token(THIS_CS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_416() {
    if (jj_scan_token(DIVIDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_415() {
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_414() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_413() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_412() {
    if (jj_scan_token(DELETE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_634() {
    if (jj_3R_697()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_698()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_411() {
    if (jj_scan_token(NEW)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_500() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_603()) {
    jj_scanpos = xsp;
    if (jj_3R_604()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_356() {
    if (jj_scan_token(PARENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_700() {
    if (jj_scan_token(RIGHT_SHIFT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_317() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_500()) {
    jj_scanpos = xsp;
    if (jj_3R_501()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_261() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_411()) {
    jj_scanpos = xsp;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_416()) {
    jj_scanpos = xsp;
    if (jj_3R_417()) {
    jj_scanpos = xsp;
    if (jj_3R_418()) {
    jj_scanpos = xsp;
    if (jj_3R_419()) {
    jj_scanpos = xsp;
    if (jj_3R_420()) {
    jj_scanpos = xsp;
    if (jj_3R_421()) {
    jj_scanpos = xsp;
    if (jj_3R_422()) {
    jj_scanpos = xsp;
    if (jj_3R_423()) {
    jj_scanpos = xsp;
    if (jj_3R_424()) {
    jj_scanpos = xsp;
    if (jj_3R_425()) {
    jj_scanpos = xsp;
    if (jj_3R_426()) {
    jj_scanpos = xsp;
    if (jj_3R_427()) {
    jj_scanpos = xsp;
    if (jj_3R_428()) {
    jj_scanpos = xsp;
    if (jj_3R_429()) {
    jj_scanpos = xsp;
    if (jj_3R_430()) {
    jj_scanpos = xsp;
    if (jj_3R_431()) {
    jj_scanpos = xsp;
    if (jj_3R_432()) {
    jj_scanpos = xsp;
    if (jj_3R_433()) {
    jj_scanpos = xsp;
    if (jj_3R_434()) {
    jj_scanpos = xsp;
    if (jj_3R_435()) {
    jj_scanpos = xsp;
    if (jj_3R_436()) {
    jj_scanpos = xsp;
    if (jj_3R_437()) {
    jj_scanpos = xsp;
    if (jj_3R_438()) {
    jj_scanpos = xsp;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_443()) {
    jj_scanpos = xsp;
    if (jj_3R_444()) {
    jj_scanpos = xsp;
    if (jj_3R_445()) {
    jj_scanpos = xsp;
    if (jj_3R_446()) {
    jj_scanpos = xsp;
    if (jj_3R_447()) {
    jj_scanpos = xsp;
    if (jj_3R_448()) {
    jj_scanpos = xsp;
    if (jj_3R_449()) {
    jj_scanpos = xsp;
    if (jj_3R_450()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_699() {
    if (jj_scan_token(LEFT_SHIFT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_212() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_356()) {
    jj_scanpos = xsp;
    if (jj_3R_357()) {
    jj_scanpos = xsp;
    if (jj_3R_358()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_635() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_699()) {
    jj_scanpos = xsp;
    if (jj_3R_700()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_634()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_105() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_212()) {
    jj_scanpos = xsp;
    if (jj_3R_213()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_214()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_124() {
    if (jj_scan_token(OPERATOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_261()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_548() {
    if (jj_3R_634()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_635()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_482() {
    if (jj_scan_token(PERSISTENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_638() {
    if (jj_scan_token(GREATER_THAN_OR_EQUALS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_637() {
    if (jj_scan_token(LESS_THAN_OR_EQUALS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_636() {
    if (jj_scan_token(LESS_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_549() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_636()) {
    jj_scanpos = xsp;
    if (jj_3R_637()) {
    jj_scanpos = xsp;
    if (jj_3R_638()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_548()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_623() {
    if (jj_scan_token(AFTER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_372() {
    if (jj_3R_548()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_549()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_506() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_806() {
    if (jj_scan_token(GREATER_THAN_OR_EQUALS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_535() {
    if (jj_3R_330()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_623()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_805() {
    if (jj_scan_token(LESS_THAN_OR_EQUALS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_804() {
    if (jj_scan_token(GREATER_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_803() {
    if (jj_scan_token(LESS_THAN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_84() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_479() {
    if (jj_scan_token(DISTRIBUTED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_792() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_803()) {
    jj_scanpos = xsp;
    if (jj_3R_804()) {
    jj_scanpos = xsp;
    if (jj_3R_805()) {
    jj_scanpos = xsp;
    if (jj_3R_806()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_548()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_771() {
    if (jj_3R_548()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_792()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_85() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_740() {
    if (jj_3R_645()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_794() {
    if (jj_scan_token(INEQUALITY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_793() {
    if (jj_scan_token(EQUALITY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_706() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_740()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_772() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_793()) {
    jj_scanpos = xsp;
    if (jj_3R_794()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_771()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_705() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_528() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_527() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_750() {
    if (jj_3R_771()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_772()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_148() {
    if (jj_3R_299()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_606() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_605()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_645() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_705()) {
    jj_scanpos = xsp;
    if (jj_3R_706()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_751() {
    if (jj_scan_token(AMPERSAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_750()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_353() {
    if (jj_scan_token(PERIOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_527()) {
    jj_scanpos = xsp;
    if (jj_3R_528()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_789() {
    if (jj_scan_token(VIRTUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_788() {
    if (jj_3R_712()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_505() {
    Token xsp;
    if (jj_3R_606()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_606()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_719() {
    if (jj_3R_750()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_751()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_352() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_351() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_563() {
    if (jj_scan_token(OPERATOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_645()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_720() {
    if (jj_scan_token(EXCLUSIVE_OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_719()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_210() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_351()) {
    jj_scanpos = xsp;
    if (jj_3R_352()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_353()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_747() {
    if (jj_scan_token(PUBLIC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_746() {
    if (jj_scan_token(PROTECTED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_745() {
    if (jj_scan_token(PRIVATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_671() {
    if (jj_3R_719()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_720()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_504() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_712() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_745()) {
    jj_scanpos = xsp;
    if (jj_3R_746()) {
    jj_scanpos = xsp;
    if (jj_3R_747()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_710() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_709()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_672() {
    if (jj_scan_token(INCLUSIVE_OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_671()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_321() {
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_504()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_767() {
    if (jj_3R_712()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_789()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_583() {
    if (jj_3R_671()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_672()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_766() {
    if (jj_scan_token(VIRTUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_788()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_742() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_766()) {
    jj_scanpos = xsp;
    if (jj_3R_767()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_320() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_584() {
    if (jj_scan_token(LOGICAL_AND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_583()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_169() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_320()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_321()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_709() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_742()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_129()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_476() {
    if (jj_3R_583()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_584()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_477() {
    if (jj_scan_token(LOGICAL_OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_476()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_298() {
    if (jj_3R_66()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_649() {
    if (jj_3R_709()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_710()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_295() {
    if (jj_3R_476()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_477()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_499() {
    if (jj_scan_token(ENUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_209() {
    if (jj_scan_token(FLOAT_CONSTANT_BASIC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_569() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_649()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_498() {
    if (jj_scan_token(STRUCT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_70() {
    if (jj_3R_156()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_296() {
    if (jj_scan_token(QUESTION_MARK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_478()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_208() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_207() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_145() {
    if (jj_3R_295()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_296()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_389() {
    if (jj_scan_token(OR_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_388() {
    if (jj_scan_token(XOR_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_387() {
    if (jj_scan_token(AND_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_155() {
    if (jj_3R_306()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_386() {
    if (jj_scan_token(LEFTSHIFT_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_154() {
    if (jj_3R_305()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_385() {
    if (jj_scan_token(RIGHTSHIFT_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_83() {
    if (jj_3R_139()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_384() {
    if (jj_scan_token(MINUS_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_383() {
    if (jj_scan_token(PLUS_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_382() {
    if (jj_scan_token(MODULO_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_206() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_381() {
    if (jj_scan_token(DIVIDE_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_205() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_380() {
    if (jj_scan_token(MULTIPLY_EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_379() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_474() {
    if (jj_3R_582()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_291() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_290()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_69() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_154()) {
    jj_scanpos = xsp;
    if (jj_3R_155()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_41() {
    if (jj_3R_109()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_232() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_379()) {
    jj_scanpos = xsp;
    if (jj_3R_380()) {
    jj_scanpos = xsp;
    if (jj_3R_381()) {
    jj_scanpos = xsp;
    if (jj_3R_382()) {
    jj_scanpos = xsp;
    if (jj_3R_383()) {
    jj_scanpos = xsp;
    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()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_103() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_205()) {
    jj_scanpos = xsp;
    if (jj_3R_206()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_207()) {
    jj_scanpos = xsp;
    if (jj_3R_208()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_209()) {
    jj_scanpos = xsp;
    if (jj_3R_210()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_473() {
    if (jj_3R_139()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_290() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_473()) {
    jj_scanpos = xsp;
    if (jj_3R_474()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_68() {
    if (jj_3R_153()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_355() {
    if (jj_3R_145()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_292() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_16() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_354() {
    if (jj_3R_109()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_602() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_211() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_354()) {
    jj_scanpos = xsp;
    if (jj_3R_355()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_6() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_68()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_69()) {
    jj_scanpos = xsp;
    if (jj_3R_70()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_139() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_292()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_147() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_6()) {
    jj_scanpos = xsp;
    if (jj_3R_298()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_526() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_525() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_91() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_146() {
    if (jj_3R_297()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_683() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_17() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_109() {
    if (jj_3R_231()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_232()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_138() {
    if (jj_3R_290()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_291()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_82() {
    if (jj_3R_123()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_65() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_146()) {
    jj_scanpos = xsp;
    if (jj_3R_147()) {
    jj_scanpos = xsp;
    if (jj_3R_148()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_350() {
    if (jj_scan_token(PERIOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_525()) {
    jj_scanpos = xsp;
    if (jj_3R_526()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_585() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_744() {
    if (jj_3R_768()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_90() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_601() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_683()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_683()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_15() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_91()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(INT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_497() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_601()) {
    jj_scanpos = xsp;
    if (jj_3R_602()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_478() {
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_585()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_81() {
    if (jj_3R_138()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_743() {
    if (jj_3R_123()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_711() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_743()) {
    jj_scanpos = xsp;
    if (jj_3R_744()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_496() {
    if (jj_scan_token(DOUBLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_802() {
    if (jj_3R_278()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_768()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_495() {
    if (jj_scan_token(FLOAT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_349() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_348() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_600() {
    if (jj_scan_token(LONG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_15()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_801() {
    if (jj_3R_138()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_14() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_90()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(INT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_791() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_801()) {
    jj_scanpos = xsp;
    if (jj_3R_802()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_204() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_348()) {
    jj_scanpos = xsp;
    if (jj_3R_349()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_350()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_790() {
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_599() {
    if (jj_scan_token(INT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_227() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_598() {
    if (jj_scan_token(SHORT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_14()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_768() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_790()) {
    jj_scanpos = xsp;
    if (jj_3R_791()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_275() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_267() {
    if (jj_3R_456()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_5() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_67()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_597() {
    if (jj_scan_token(CHAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_651() {
    if (jj_3R_712()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_650() {
    if (jj_3R_711()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_570() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_650()) {
    jj_scanpos = xsp;
    if (jj_3R_651()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_40() {
    if (jj_3R_108()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_739() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_682() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_681() {
    if (jj_scan_token(SIGNED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_456() {
    Token xsp;
    if (jj_3R_570()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_570()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_680() {
    if (jj_scan_token(UNSIGNED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_273() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_596() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_680()) {
    jj_scanpos = xsp;
    if (jj_3R_681()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_682()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_272() {
    if (jj_3R_108()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_455() {
    if (jj_3R_569()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_131() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_272()) {
    jj_scanpos = xsp;
    if (jj_3R_273()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_454() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_472() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_494() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_596()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_597()) {
    jj_scanpos = xsp;
    if (jj_3R_598()) {
    jj_scanpos = xsp;
    if (jj_3R_599()) {
    jj_scanpos = xsp;
    if (jj_3R_600()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_266() {
    if (jj_3R_453()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_454()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_455()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_316() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_494()) {
    jj_scanpos = xsp;
    if (jj_3R_495()) {
    jj_scanpos = xsp;
    if (jj_3R_496()) {
    jj_scanpos = xsp;
    if (jj_3R_497()) {
    jj_scanpos = xsp;
    if (jj_3R_498()) {
    jj_scanpos = xsp;
    if (jj_3R_499()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_741() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_127() {
    if (jj_3R_266()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_267()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_80() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_137()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_493() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_203() {
    if (jj_scan_token(FLOAT_CONSTANT_BASIC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_315() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_493()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_4() {
    if (jj_3R_66()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_581() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_137()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_104() {
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_323() {
    if (jj_3R_506()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_171() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_322()) {
    jj_scanpos = xsp;
    if (jj_3R_323()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_322() {
    if (jj_3R_505()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_471() {
    if (jj_3R_137()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_581()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_289() {
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_471()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_472()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_288() {
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_137() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_288()) {
    jj_scanpos = xsp;
    if (jj_3R_289()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_202() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_708() {
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_471()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_741()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_201() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_707() {
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_86() {
    if (jj_3R_169()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_170()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_171()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_647() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_248()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_605() {
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_646() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_707()) {
    jj_scanpos = xsp;
    if (jj_3R_708()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_564() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_646()) {
    jj_scanpos = xsp;
    if (jj_3R_647()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_3() {
    if (jj_3R_65()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_686() {
    if (jj_3R_478()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_166() {
    if (jj_3R_315()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_317()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_200() {
    if (jj_scan_token(NON_NEGATIVE_INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_199() {
    if (jj_scan_token(INTEGER_CONSTANT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_102() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_199()) {
    jj_scanpos = xsp;
    if (jj_3R_200()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_201()) {
    jj_scanpos = xsp;
    if (jj_3R_202()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_203()) {
    jj_scanpos = xsp;
    if (jj_3R_204()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_79() {
    if (jj_3R_136()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_756() {
    if (jj_3R_724()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_165() {
    if (jj_3R_315()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_316()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_755() {
    if (jj_3R_136()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_2() {
    if (jj_3R_65()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_32() {
    if (jj_3R_103()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_78() {
    if (jj_3R_136()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_724() {
    if (jj_3R_278()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_755()) {
    jj_scanpos = xsp;
    if (jj_3R_756()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_519() {
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_80() {
    if (jj_3R_165()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_86()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_280() {
    if (jj_3R_134()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_518() {
    if (jj_3R_103()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_330() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_518()) {
    jj_scanpos = xsp;
    if (jj_3R_519()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_279() {
    if (jj_3R_136()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_134() {
    if (jj_3R_278()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_279()) {
    jj_scanpos = xsp;
    if (jj_3R_280()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_77() {
    if (jj_3R_135()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_31() {
    if (jj_3R_102()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_470() {
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_287() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_211()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_689() {
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_286() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_470()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_285() {
    if (jj_3R_135()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_688() {
    if (jj_3R_102()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_136() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_285()) {
    jj_scanpos = xsp;
    if (jj_3R_286()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_287()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_76() {
    if (jj_3R_134()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_622() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_688()) {
    jj_scanpos = xsp;
    if (jj_3R_689()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_729() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_728()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_168() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_167()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_723() {
    if (jj_3R_134()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_679() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_723()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_3R_724()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_715() {
    if (jj_3R_307()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_492() {
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_491() {
    if (jj_3R_595()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_85() {
    if (jj_3R_166()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_167()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_168()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_727() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_308() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_491()) {
    jj_scanpos = xsp;
    if (jj_3R_492()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_89() {
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_197() {
    if (jj_3R_344()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_39() {
    if (jj_3R_107()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_716() {
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_713() {
    if (jj_3R_307()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_685() {
    if (jj_scan_token(ENUM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_727()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_728()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_729()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_88() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_101() {
    if (jj_3R_98()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_197()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_198()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_595() {
    if (jj_3R_679()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_714() {
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_319() {
    if (jj_3R_74()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_503()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_87() {
    if (jj_scan_token(FORMAT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_502() {
    if (jj_3R_503()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_653() {
    if (jj_3R_307()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_658() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_716()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_13() {
    if (jj_3R_86()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_87()) {
    jj_scanpos = xsp;
    if (jj_3R_88()) {
    jj_scanpos = xsp;
    if (jj_3R_89()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_190() {
    if (jj_3R_327()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_657() {
    if (jj_3R_308()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_715()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_576() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_657()) {
    jj_scanpos = xsp;
    if (jj_3R_658()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_511() {
    if (jj_scan_token(CHILD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_510() {
    if (jj_scan_token(SELF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_318() {
    if (jj_3R_86()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_502()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_654() {
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_656() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_714()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_326() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_510()) {
    jj_scanpos = xsp;
    if (jj_3R_511()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_509() {
    if (jj_scan_token(THIS_CI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_508() {
    if (jj_scan_token(THIS_CS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_655() {
    if (jj_3R_308()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_713()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_575() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_655()) {
    jj_scanpos = xsp;
    if (jj_3R_656()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_463() {
    Token xsp;
    if (jj_3R_576()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_576()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_167() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_318()) {
    jj_scanpos = xsp;
    if (jj_3R_319()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_75() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_507() {
    if (jj_scan_token(PARENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_325() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_507()) {
    jj_scanpos = xsp;
    if (jj_3R_508()) {
    jj_scanpos = xsp;
    if (jj_3R_509()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_74() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_324() {
    if (jj_scan_token(PREVIOUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_574() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_654()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_462() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_575()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_573() {
    if (jj_3R_308()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_653()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_277() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_462()) {
    jj_scanpos = xsp;
    if (jj_3R_463()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_461() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_573()) {
    jj_scanpos = xsp;
    if (jj_3R_574()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_189() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_324()) {
    jj_scanpos = xsp;
    if (jj_3R_325()) {
    jj_scanpos = xsp;
    if (jj_3R_326()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_98() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_189()) {
    jj_scanpos = xsp;
    if (jj_3R_190()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_460() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_459() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_1() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_276() {
    Token xsp;
    if (jj_3R_459()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_459()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_460()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_461()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_133() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_276()) {
    jj_scanpos = xsp;
    if (jj_3R_277()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_807() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_74()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_503()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_72() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_758() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_73() {
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_475() {
    if (jj_3R_140()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_728() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_758()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_294() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_475()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_795() {
    if (jj_3R_676()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_503()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_807()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(SEMICOLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_293() {
    if (jj_3R_133()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_608() {
    if (jj_scan_token(PERIOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_607() {
    if (jj_3R_686()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_140() {
    if (jj_3R_116()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_293()) {
    jj_scanpos = xsp;
    if (jj_3R_294()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_70() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_12() {
    if (jj_3R_85()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_666() {
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_71() {
    if (jj_3R_132()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_778() {
    if (jj_3R_795()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_665() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_512() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_607()) {
    jj_scanpos = xsp;
    if (jj_3R_608()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_726() {
    if (jj_3R_757()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_777() {
    if (jj_3R_85()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_580() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_665()) {
    jj_scanpos = xsp;
    if (jj_3R_666()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_757() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_777()) {
    jj_scanpos = xsp;
    if (jj_3R_778()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_579() {
    if (jj_3R_132()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_68() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_469() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_579()) {
    jj_scanpos = xsp;
    if (jj_3R_580()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_327() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_512()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_770() {
    if (jj_3R_408()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_725() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_38() {
    if (jj_scan_token(ELSE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_69() {
    if (jj_3R_132()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_769() {
    if (jj_3R_131()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_749() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_769()) {
    jj_scanpos = xsp;
    if (jj_3R_770()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_347() {
    if (jj_scan_token(COMPLETED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_684() {
    if (jj_scan_token(STRUCT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_725()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(OPEN_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_726()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_726()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(CLOSE_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_346() {
    if (jj_scan_token(ACTIVE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_345() {
    if (jj_scan_token(ENABLED)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_775() {
    if (jj_scan_token(INOUT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_748() {
    if (jj_3R_132()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_198() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_345()) {
    jj_scanpos = xsp;
    if (jj_3R_346()) {
    jj_scanpos = xsp;
    if (jj_3R_347()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_717() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_748()) {
    jj_scanpos = xsp;
    if (jj_3R_749()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_774() {
    if (jj_scan_token(OUT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_170() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_524() {
    if (jj_scan_token(PLANNING)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_523() {
    if (jj_scan_token(ACHIEVEMENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_522() {
    if (jj_scan_token(EXECUTION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_521() {
    if (jj_scan_token(EXPANSION)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_520() {
    if (jj_scan_token(HANDLING)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_773() {
    if (jj_scan_token(IN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_678() {
    if (jj_scan_token(VOLATILE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_677() {
    if (jj_scan_token(CONST)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_752() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_773()) {
    jj_scanpos = xsp;
    if (jj_3R_774()) {
    jj_scanpos = xsp;
    if (jj_3R_775()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_30() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_344() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_520()) {
    jj_scanpos = xsp;
    if (jj_3R_521()) {
    jj_scanpos = xsp;
    if (jj_3R_522()) {
    jj_scanpos = xsp;
    if (jj_3R_523()) {
    jj_scanpos = xsp;
    if (jj_3R_524()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_594() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_677()) {
    jj_scanpos = xsp;
    if (jj_3R_678()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_693() {
    if (jj_3R_622()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_490() {
    if (jj_3R_594()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_692() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_307() {
    Token xsp;
    if (jj_3R_490()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_490()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_160() {
    if (jj_3R_307()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_159() {
    if (jj_3R_129()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_158() {
    if (jj_scan_token(AMPERSAND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_157() {
    if (jj_scan_token(ASTERISK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_631() {
    if (jj_scan_token(AT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_692()) {
    jj_scanpos = xsp;
    if (jj_3R_693()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_67() {
    if (jj_3R_73()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_72() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_157()) {
    jj_scanpos = xsp;
    if (jj_3R_158()) {
    jj_scanpos = xsp;
    if (jj_3R_159()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_160()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_66() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_284() {
    if (jj_3R_73()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_283() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_135()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_718() {
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_630() {
    if (jj_scan_token(IN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_535()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_544() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_630()) {
    jj_scanpos = xsp;
    if (jj_3R_631()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_282() {
    if (jj_3R_469()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_107() {
    if (jj_3R_226()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_309() {
    if (jj_3R_307()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_281() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_135() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_281()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_282()) {
    jj_scanpos = xsp;
    if (jj_3R_283()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_284()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_65() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_593() {
    if (jj_3R_676()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_670() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_718()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_669() {
    if (jj_scan_token(OPEN_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_135()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_668() {
    if (jj_3R_717()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_225() {
    if (jj_scan_token(SIGLONGJMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_310() {
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_369() {
    if (jj_scan_token(ACTIVATE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_544()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_224() {
    if (jj_scan_token(SIGSETJMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_223() {
    if (jj_scan_token(_LONGJMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_222() {
    if (jj_scan_token(_SETJMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_221() {
    if (jj_scan_token(LONGJMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_220() {
    if (jj_scan_token(SETJMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_667() {
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_219() {
    if (jj_scan_token(FINALLY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_218() {
    if (jj_scan_token(CATCH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_217() {
    if (jj_scan_token(THROW)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_216() {
    if (jj_scan_token(GOTO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_582() {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_667()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_668()) {
    jj_scanpos = xsp;
    if (jj_3R_669()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_670()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_451() {
    if (jj_3R_564()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_215() {
    if (jj_scan_token(SCOPE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_721() {
    if (jj_3R_752()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_29() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_368() {
    if (jj_scan_token(ACTIVATE_IN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_535()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_106() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_215()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    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;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_543() {
    if (jj_3R_622()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_263() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_262()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_162() {
    if (jj_scan_token(OPEN_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_310()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(CLOSE_BRACKET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_161() {
    if (jj_3R_308()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_309()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_676() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_721()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_722()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_73() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_161()) {
    jj_scanpos = xsp;
    if (jj_3R_162()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_542() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_262() {
    if (jj_3R_135()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_451()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_28() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_367() {
    if (jj_scan_token(ACTIVATE_AT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_542()) {
    jj_scanpos = xsp;
    if (jj_3R_543()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_691() {
    if (jj_3R_622()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_84() {
    if (jj_scan_token(FORMAT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static private boolean jj_initialized_once = false;
  static public TDLParserTokenManager token_source;
  static public Token token, jj_nt;
  static private int jj_ntk;
  static private Token jj_scanpos, jj_lastpos;
  static private int jj_la;
  static public boolean lookingAhead = false;
  static private boolean jj_semLA;
  static private int jj_gen;
  static final private int[] jj_la1 = new int[313];
  static final private int[] jj_la1_0 = {0x0,0x0,0x0,0x0,0xffe00040,0x0,0x0,0x0,0x40,0x0,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffe00040,0x0,0x0,0x0,0x0,0x0,0xffe00040,0xffe00040,0x0,0x0,0x0,0xffe00040,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x10000000,0x0,0x10000000,0x10000000,0xc0000000,0x0,0xc0000000,0x10000000,0x10000000,0x0,0x0,0x0,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc01c0000,0x0,0x1000,0xc01c0000,0x1000,0xc01c0000,0xc01c0000,0x0,0x0,0xc01c0000,0xc01c0000,0x0,0x0,0x0,0x0,0x0,0x0,0xc01c0000,0x0,0x0,0x0,0x0,0x0,0xc01c0000,0xc01c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc01c0000,0x0,0x0,0x0,0x0,0xfffc0040,0xfffc0040,0xfffc0040,0xfffffdc0,0x20800,0xc01c0000,0xfffffdc0,0x0,0x500,0x3080,0xc01c0000,0x0,0x1c000,0x0,0x0,0xc01c0000,0xc01c0000,0xc01c0000,0x0,0x0,0xc01c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc01c0000,0xc01c0000,0xc0000000,0xc0000000,0xc0080000,0xc01c0000,0x0,0x0,0xf0000000,0x0,0x0,0x30000000,0x0,0x0,0x0,0xc01c0000,0x0,0x0,0xc01c0000,0x0,0x0,0xc01c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffe00040,0xffe00040,0xffe00040,0xffe00040,0xffe00040,0xffe00040,0x3800040,0xc000000,0x0,0x0,0xf0000000,0x0,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffe00040,0xffe00040,0xffe00040,0x0,0x0,0x30000000,0xc01c0000,0x0,0x0,0x0,0xc01c0000,0x0,0x0,0x30000000,0x30000000,0x30000000,0x0,0x0,0x0,0x0,0xf0000000,0x0,0x0,0x30000000,0xc01c0000,0x0,0x0,0x30000000,0xc01c0000,0x0,0x30000000,0xc01c0000,0x0,0x0,0x0,0x0,0xffe00040,0x0,0x0,0xffe00040,0xffe00040,0x0,0xc01c0000,0x0,0x0,0xc01c0000,0xffe00040,0x0,0x0,0xffe00040,0xffe00040,0xffe00040,0xffe00040,0xffe00040,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x8000000,0x0,0x0,0xc01c0000,0x180000,0xc01c0000,0x0,0xc01c0000,};
  static final private int[] jj_la1_1 = {0x80000000,0x80000000,0x80000000,0x80000000,0x800007ff,0x80000000,0x0,0x0,0x90000000,0x0,0x90000000,0x10000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x800007ff,0x0,0x0,0x0,0x80000000,0x0,0x800007ff,0x800007ff,0x0,0x0,0x0,0x800007ff,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0xc,0x0,0xc,0x0,0x0,0x3,0x80000000,0x8000053f,0x0,0x0,0x0,0x0,0x500,0x8000053f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000807f,0x0,0x20000000,0x8000807f,0x20000000,0x8000807f,0x8000807f,0x0,0x0,0x8000807f,0x8000807f,0x0,0x0,0x0,0x0,0x0,0x0,0x8000807f,0x48000000,0x0,0x48000000,0xc8000000,0x0,0x8000807f,0x8000807f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48000000,0xc8000000,0x0,0x0,0x0,0x8000807f,0x0,0x0,0x0,0x80000000,0x80008fff,0xc8008fff,0xcffe8fff,0xcffe8fff,0x80000000,0x8000807f,0xcffe8fff,0x0,0x0,0x0,0x8000807f,0x80000000,0x0,0x0,0x7fe0000,0x8000807f,0x8000807f,0x8000807f,0x80000000,0x0,0x8000807f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000807f,0x8000807f,0x8000807f,0x8000807f,0x8000807f,0x8000807f,0x0,0x0,0x800007ff,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x8000807f,0x0,0x0,0x8000807f,0x80008000,0x0,0x8000807f,0x0,0x0,0x48000000,0xc8000000,0x80000000,0x80008000,0x80000000,0x80008000,0x0,0x0,0x80008000,0x80000000,0x80000000,0x8000,0x80008000,0x80000000,0x800007ff,0x800007ff,0x800087ff,0x80008fff,0x800007ff,0x800007ff,0x0,0x0,0x780,0x780,0x800007ff,0x80000000,0x8000007f,0x780,0x380,0x0,0x80000000,0x80000000,0x0,0x0,0x80008fff,0x80008fff,0x80008fff,0x0,0x0,0x0,0x8000807f,0x0,0x80000000,0x0,0x8000807f,0x80008000,0x80000000,0x0,0x0,0x0,0x80000000,0x80000000,0x80008000,0x80008000,0x800007ff,0x80000000,0x0,0x0,0x8000807f,0x0,0x0,0x0,0x8000807f,0x0,0x0,0x8000807f,0x0,0x0,0x0,0x80000000,0x800007ff,0x80000000,0x0,0x800007ff,0x800007ff,0x0,0x8000807f,0x0,0x0,0x8000807f,0x800077ff,0x80000000,0x0,0x800077ff,0x800077ff,0x800007ff,0x800007ff,0x800007ff,0x0,0x80000000,0x80000000,0x0,0x7000,0x0,0x7000,0x7000,0x7000,0x0,0x8000807f,0x0,0x8000807f,0x0,0x8000807f,};
  static final private int[] jj_la1_2 = {0x7f,0x7f,0x7f,0x7f,0x1c7f,0x7f,0x0,0x8,0x3f,0x8,0x3f,0x0,0x8,0x3f,0x0,0x0,0x0,0x3,0x0,0x0,0xa000018,0x0,0x0,0x3a000018,0x7,0x0,0x0,0x0,0x0,0x18,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x0,0x1c7f,0xa000018,0x3a000018,0x0,0x7f,0x0,0x7f,0x7f,0x1c00,0x0,0x1c00,0x1c7f,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x7f,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0xa000000,0x8,0x0,0x0,0xa000018,0x0,0x0,0x0,0x3a000018,0x1f00000,0x20000000,0x30000000,0x0,0x3a000018,0xc0000000,0x7f,0x1f00000,0x0,0x7f,0x0,0x7f,0x7f,0x400,0x400,0x7f,0x7f,0x400,0x400,0xfa000018,0x1f00000,0xe0000,0x0,0x7f,0x8000,0x6000,0x1e000,0x1e07f,0x1f00000,0x7f,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x807f,0x400,0x0,0x0,0x7f,0xfa008018,0x0,0x0,0x7f,0x7f,0x807f,0x807f,0x83ff,0x7f,0x7f,0x83ff,0x0,0x0,0x0,0x7f,0x7f,0x380,0x0,0x0,0x7f,0x7f,0x7f,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x7f,0x7f,0x0,0x0,0x7f,0x7f,0x0,0x7f,0x0,0x0,0x8000,0x807f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x7f,0x7f,0x7f,0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x0,0x0,0x7f,0x7f,0x7f,0x0,0x0,0x0,0x7f,0x7f,0x0,0x0,0x7f,0x7f,0x7f,0x0,0x0,0x0,0x7f,0x0,0x7f,0x0,0x7f,0x7f,0x7f,0x0,0x0,0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x7f,0x0,0x0,0x0,0x7f,0x0,0x0,0x7f,0x0,0x0,0x0,0x7f,0x7f,0x7f,0x0,0x7f,0x7f,0x0,0x7f,0x0,0x0,0x7f,0x7f,0x7f,0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x7f,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x7f,0x0,0x7f,};
  static final private int[] jj_la1_3 = {0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x0,0x0,0x2c00,0x0,0x2c00,0x0,0x0,0x0,0x0,0x1000,0x2c00,0x0,0x0,0x0,0x40019600,0x0,0x0,0x703f9720,0x0,0x0,0x10001420,0x0,0x0,0x0,0x2c00,0x2000,0x400,0x2000,0x400,0x2000,0x800,0x2000,0x800,0x400,0x800,0x400,0x800,0x2c00,0x0,0x0,0x0,0x6800,0x40019600,0x703f9720,0x10001420,0x6800,0x0,0x6800,0x6800,0x0,0x1000,0x0,0x6800,0x0,0x1000,0x6800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6800,0x6800,0x0,0x0,0x0,0x0,0x0,0x6800,0x18000,0x0,0x0,0x40000200,0x80000000,0x40018200,0x10000020,0x20000020,0x20000020,0x703f8320,0x0,0x3e0000,0x3e0000,0x200,0x703f8320,0x0,0x6880,0x0,0x0,0x6880,0x2,0x6880,0x6880,0x10,0x10,0x6880,0x6880,0x10,0x10,0x7fff8369,0x0,0x0,0x0,0x6880,0x0,0x0,0x0,0x6800,0x0,0x6880,0x6880,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x6800,0x0,0x0,0x0,0x6880,0x7fffc369,0x0,0x0,0x6800,0x6880,0x6880,0x6880,0x80006880,0x6800,0x6880,0x80006880,0x0,0x0,0x0,0x6880,0x6800,0x0,0x0,0x0,0x6880,0x6880,0x6880,0x6800,0x0,0x6880,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6880,0x6880,0x6880,0x6880,0x6880,0x6880,0x0,0x0,0x6800,0x0,0x6800,0x0,0x0,0x0,0x6800,0x6880,0x0,0x0,0x6880,0x6880,0x0,0x6880,0x0,0x0,0x0,0x6800,0x6800,0x6800,0x6800,0x6800,0x0,0x80,0x6880,0x6800,0x6800,0x0,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x0,0x0,0x0,0x0,0x6800,0x6800,0x6800,0x0,0x0,0x0,0x6800,0x6800,0x0,0x0,0x6800,0x6800,0x6800,0x0,0x0,0x0,0x6880,0x0,0x6800,0x0,0x6880,0x6800,0x6800,0x0,0x0,0x0,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x0,0x0,0x6880,0x0,0x0,0x0,0x6880,0x0,0x0,0x6880,0x0,0x0,0x0,0x6800,0x6800,0x6800,0x0,0x6800,0x6800,0x0,0x6880,0x0,0x0,0x6880,0x6800,0x6800,0x0,0x6800,0x6800,0x6800,0x6800,0x6800,0x0,0x6800,0x6800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6880,0x0,0x6880,0x0,0x6880,};
  static final private int[] jj_la1_4 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1,0x0,0x1,0x0,0x0,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x8000c8,0x0,0x8000c8,0x8000c8,0x0,0x0,0x8000c8,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x8000c8,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x8000c8,0x18,0x0,0x1,0x0,0x8000c8,0x8000c8,0x8000c8,0x8000e9,0x0,0x8000c8,0x8000e9,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x0,0x0,0x8000c8,0x8000c8,0x8000c8,0x0,0x0,0x8000c8,0x7ff00,0x0,0x80000,0x100000,0x200000,0x400000,0x0,0x3000000,0x3000000,0x3c000000,0x3c000000,0x34000000,0x34000000,0xc0000000,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x8000c8,0x8000c8,0xc8,0x8000c8,0x8000c8,0x8000c8,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x8000c8,0xc8,0x0,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc8,0xc8,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,0x0,0x0,0x0,0x0,0x100,0x0,0x8000c8,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x0,0x8000c8,0x0,0x0,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x8000c8,0x100,0x0,0x8000c8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000c8,0xffffff00,0x8000c8,0x0,0x8000c8,};
  static final private int[] jj_la1_5 = {0x0,0x80000000,0x80000000,0x0,0x200,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x200,0x0,0x0,0x0,0x800,0x0,0x200,0x200,0x0,0x0,0x0,0x200,0x40000,0x0,0x180a00,0x40000,0x2000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd0380b83,0x0,0x0,0xd0380b83,0x0,0xd0380b83,0xd0380b83,0x0,0x0,0xd0380b83,0xd0380b83,0x0,0x0,0x0,0x0,0x0,0x2000,0xd1380b83,0x0,0x0,0x0,0x0,0x0,0xd0380b83,0xd0380b83,0x10000000,0x10000000,0x10000000,0x10000000,0x1000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x1000000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x40000,0xd0380b83,0x0,0x40000,0x0,0x0,0xd03a0b83,0xd03a0b83,0xd03a0b83,0xd03a8b83,0x0,0xd0380b83,0xd03a8b83,0x40000,0x0,0x0,0xd0380b83,0x0,0x0,0x200,0x0,0xd0380b83,0xd0380b83,0xd03a0b83,0x0,0x40000,0xd0380b83,0x0,0x800000,0x0,0x0,0x0,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x10000c,0x10000c,0x30,0x30,0xd0380b83,0xd0380b83,0xd0200a00,0xd0380a03,0xd0380a03,0xd0380b83,0x380003,0x200,0xa00,0x800,0x200,0x0,0x2000,0x2000,0x102200,0xd0388b83,0x200,0x2000,0xd0380b83,0xd0200a00,0x10029c0,0xd0380b83,0x10029c0,0x40000,0x0,0x0,0xd0000000,0xd0200000,0x0,0x0,0x0,0x0,0xd0200a00,0x0,0x200000,0x0,0x200000,0xd0000000,0x20200,0x20200,0x3a0a00,0x3a0a00,0x200,0x200,0x0,0x0,0x0,0x0,0x200,0x0,0x200,0x0,0x0,0x200,0x0,0x0,0x40000,0x0,0x3a0a00,0x3a8a00,0x3a0a00,0x40000,0x800,0x0,0xd0380b83,0x2800,0x200800,0x2000,0xd0380b83,0x200800,0x180200,0x0,0x0,0x0,0x200000,0x200000,0x200000,0x200000,0x200,0x180200,0x2800,0x0,0xd0380b83,0x2800,0x2800,0x0,0xd0380b83,0x2800,0x0,0xd0380b83,0x2800,0x2800,0x2800,0x182a00,0x1200,0x182a00,0x0,0x200,0x200,0x40000,0xd0388b83,0x800,0x40000,0xd0388b83,0x7a0a00,0x0,0x400000,0x7a0a00,0x7a0a00,0x200,0x7a0a00,0x7a0a00,0x40000,0x0,0x380a00,0x40000,0x0,0x0,0x0,0x0,0x0,0x40000,0xd0380b83,0x3c29ef,0xd0380b83,0x40000,0xd0380b83,};
  static final private int[] jj_la1_6 = {0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0x0,0xf,0x0,0xf,0xf,0x0,0x0,0xf,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0xd,0xd,0x2,0x2,0x2,0x2,0x0,0x6,0x2,0x2,0x2,0x2,0x0,0x6,0x0,0x0,0x1,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0xd,0xd,0xd,0xd,0x1,0xd,0xd,0x0,0x0,0x0,0xd,0x1,0x0,0x0,0x0,0xd,0xd,0xd,0x1,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0xd,0xd,0xd,0xd,0xd,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x1,0xd,0x0,0x0,0xd,0xd,0x0,0xd,0x0,0x0,0x0,0x1,0xd,0xd,0x1,0x1,0x0,0x0,0xd,0x1,0x1,0x0,0x1,0xd,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0xd,0x0,0x1,0x0,0xd,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0xd,0x0,0x0,0x0,0xd,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0xd,0x0,0x0,0xd,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x0,0xd,0x0,0xd,};
  static final private JJCalls[] jj_2_rtns = new JJCalls[87];
  static private boolean jj_rescan = false;
  static private int jj_gc = 0;

  public TDLParser(CharStream stream) {
    if (jj_initialized_once) {
      System.out.println("ERROR: Second call to constructor of static parser.  You must");
      System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
      System.out.println("       during parser generation.");
      throw new Error();
    }
    jj_initialized_once = true;
    token_source = new TDLParserTokenManager(stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 313; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  static public void ReInit(CharStream stream) {
    token_source.ReInit(stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 313; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  public TDLParser(TDLParserTokenManager tm) {
    if (jj_initialized_once) {
      System.out.println("ERROR: Second call to constructor of static parser.  You must");
      System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
      System.out.println("       during parser generation.");
      throw new Error();
    }
    jj_initialized_once = true;
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 313; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  public void ReInit(TDLParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 313; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  static final 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 final 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);
    }
    return (jj_scanpos.kind != kind);
  }

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

  static final public Token getToken(int index) {
    Token t = lookingAhead ? jj_scanpos : token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  static final 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);
  }

  static private java.util.Vector jj_expentries = new java.util.Vector();
  static private int[] jj_expentry;
  static private int jj_kind = -1;
  static private int[] jj_lasttokens = new int[100];
  static private int jj_endpos;

  static 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];
      }
      boolean exists = false;
      for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
        int[] oldentry = (int[])(enum.nextElement());
        if (oldentry.length == jj_expentry.length) {
          exists = true;
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              exists = false;
              break;
            }
          }
          if (exists) break;
        }
      }
      if (!exists) jj_expentries.addElement(jj_expentry);
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  static final public ParseException generateParseException() {
    jj_expentries.removeAllElements();
    boolean[] la1tokens = new boolean[197];
    for (int i = 0; i < 197; i++) {
      la1tokens[i] = false;
    }
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 313; i++) {
      if (jj_la1[i] == jj_gen) {
        for (int j = 0; j < 32; j++) {
          if ((jj_la1_0[i] & (1<<j)) != 0) {
            la1tokens[j] = true;
          }
          if ((jj_la1_1[i] & (1<<j)) != 0) {
            la1tokens[32+j] = true;
          }
          if ((jj_la1_2[i] & (1<<j)) != 0) {
            la1tokens[64+j] = true;
          }
          if ((jj_la1_3[i] & (1<<j)) != 0) {
            la1tokens[96+j] = true;
          }
          if ((jj_la1_4[i] & (1<<j)) != 0) {
            la1tokens[128+j] = true;
          }
          if ((jj_la1_5[i] & (1<<j)) != 0) {
            la1tokens[160+j] = true;
          }
          if ((jj_la1_6[i] & (1<<j)) != 0) {
            la1tokens[192+j] = true;
          }
        }
      }
    }
    for (int i = 0; i < 197; i++) {
      if (la1tokens[i]) {
        jj_expentry = new int[1];
        jj_expentry[0] = i;
        jj_expentries.addElement(jj_expentry);
      }
    }
    jj_endpos = 0;
    jj_rescan_token();
    jj_add_error_token(0, 0);
    int[][] exptokseq = new int[jj_expentries.size()][];
    for (int i = 0; i < jj_expentries.size(); i++) {
      exptokseq[i] = (int[])jj_expentries.elementAt(i);
    }
    return new ParseException(token, exptokseq, tokenImage);
  }

  static final public void enable_tracing() {
  }

  static final public void disable_tracing() {
  }

  static final private void jj_rescan_token() {
    jj_rescan = true;
    for (int i = 0; i < 87; i++) {
      JJCalls p = jj_2_rtns[i];
      do {
        if (p.gen > jj_gen) {
          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
            case 3: jj_3_4(); break;
            case 4: jj_3_5(); break;
            case 5: jj_3_6(); break;
            case 6: jj_3_7(); break;
            case 7: jj_3_8(); break;
            case 8: jj_3_9(); break;
            case 9: jj_3_10(); break;
            case 10: jj_3_11(); break;
            case 11: jj_3_12(); break;
            case 12: jj_3_13(); break;
            case 13: jj_3_14(); break;
            case 14: jj_3_15(); break;
            case 15: jj_3_16(); break;
            case 16: jj_3_17(); break;
            case 17: jj_3_18(); break;
            case 18: jj_3_19(); break;
            case 19: jj_3_20(); break;
            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;
          }
        }
        p = p.next;
      } while (p != null);
    }
    jj_rescan = false;
  }

  static final 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;
  }

}
