final public methodCall2_AST MethodCall_2() throws ParseException {
        Token id = null;
        List<binaryExpression_AST> actualArgs = null;
        methodCall2_AST m2 = null;
        binaryExpression_AST arrayIndex = null;
        methodPrime_AST mPrime = null;
    if (jj_2_23(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[32] = jj_gen;
        ;
      }
                                                                        methodExpr_AST jjtn001 = new methodExpr_AST(JJTMETHODEXPR_AST);
                                                                        boolean jjtc001 = true;
                                                                        jjtree.openNodeScope(jjtn001);
      try {
        jj_consume_token(RP);
      } finally {
                                                                        if (jjtc001) {
                                                                          jjtree.closeNodeScope(jjtn001, true);
                                                                        }
      }
      m2 = MethodCall_2();
    } else if (jj_2_24(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      jj_consume_token(LSB);
      arrayIndex = Expression();
      jj_consume_token(RSB);
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[33] = jj_gen;
        ;
      }
      jj_consume_token(RP);
      m2 = MethodCall_2();
    } else if (jj_2_25(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      mPrime = MethodPrime();
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[34] = jj_gen;
        ;
      }
      jj_consume_token(RP);
      m2 = MethodCall_2();
    } else if (jj_2_26(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      jj_consume_token(LSB);
      arrayIndex = Expression();
      jj_consume_token(RSB);
      mPrime = MethodPrime();
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[35] = jj_gen;
        ;
      }
      jj_consume_token(RP);
      m2 = MethodCall_2();
    } else if (jj_2_27(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[36] = jj_gen;
        ;
      }
      jj_consume_token(RP);
    } else if (jj_2_28(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      jj_consume_token(LSB);
      arrayIndex = Expression();
      jj_consume_token(RSB);
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[37] = jj_gen;
        ;
      }
      jj_consume_token(RP);
    } else if (jj_2_29(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      mPrime = MethodPrime();
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[38] = jj_gen;
        ;
      }
      jj_consume_token(RP);
    } else if (jj_2_30(5)) {
      jj_consume_token(DOT);
      id = jj_consume_token(ID);
      jj_consume_token(LSB);
      arrayIndex = Expression();
      jj_consume_token(RSB);
      mPrime = MethodPrime();
      jj_consume_token(LP);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NEW:
      case SUPER:
      case THIS:
      case INTEGER:
      case TRUE:
      case FALSE:
      case CHARLITERAL:
      case STRINGLITERAL:
      case NULL:
      case LP:
      case NOT:
      case PLUS:
      case MINUS:
      case ID:
        actualArgs = ActualArguments();
        break;
      default:
        jj_la1[39] = jj_gen;
        ;
      }
      jj_consume_token(RP);
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
      methodCall2_AST jjtn002 = new methodCall2_AST(JJTMETHODCALL2_AST);
      boolean jjtc002 = true;
      jjtree.openNodeScope(jjtn002);
    try {
      jjtree.closeNodeScope(jjtn002, true);
      jjtc002 = false;
      jjtn002.name = id.image;
      jjtn002.actualArgs = actualArgs;
      jjtn002.m2 = m2;
      jjtn002.arrayIndex = arrayIndex;
      jjtn002.mPrime = mPrime;
      {if (true) return jjtn002;}
    } finally {
      if (jjtc002) {
        jjtree.closeNodeScope(jjtn002, true);
      }
    }
    throw new Error("Missing return statement in function");
  }