final public methodPrime_AST MethodPrime() throws ParseException {
        methodPrime_AST mPrime = null;
        Token id = null;
        binaryExpression_AST arrayIndex = null;
    if (jj_2_36(3)) {
      jj_consume_token(DOT);
            fieldExpr_AST jjtn001 = new fieldExpr_AST(JJTFIELDEXPR_AST);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
      try {
        id = jj_consume_token(ID);
      } finally {
            if (jjtc001) {
              jjtree.closeNodeScope(jjtn001, true);
            }
      }
      mPrime = MethodPrime();
    } else if (jj_2_37(3)) {
      jj_consume_token(DOT);
            fieldExpr_AST jjtn002 = new fieldExpr_AST(JJTFIELDEXPR_AST);
            boolean jjtc002 = true;
            jjtree.openNodeScope(jjtn002);
      try {
        id = jj_consume_token(ID);
      } finally {
            if (jjtc002) {
              jjtree.closeNodeScope(jjtn002, true);
            }
      }
      jj_consume_token(LSB);
      arrayIndex = Expression();
                                                                     arrayExpr_AST jjtn003 = new arrayExpr_AST(JJTARRAYEXPR_AST);
                                                                     boolean jjtc003 = true;
                                                                     jjtree.openNodeScope(jjtn003);
      try {
        jj_consume_token(RSB);
      } finally {
                                                                     if (jjtc003) {
                                                                       jjtree.closeNodeScope(jjtn003, true);
                                                                     }
      }
      mPrime = MethodPrime();
    } else if (jj_2_38(3)) {
      jj_consume_token(DOT);
                         fieldExpr_AST jjtn004 = new fieldExpr_AST(JJTFIELDEXPR_AST);
                         boolean jjtc004 = true;
                         jjtree.openNodeScope(jjtn004);
      try {
        id = jj_consume_token(ID);
      } finally {
                         if (jjtc004) {
                           jjtree.closeNodeScope(jjtn004, true);
                         }
      }
      jj_consume_token(LSB);
      arrayIndex = Expression();
                                                                                  arrayExpr_AST jjtn005 = new arrayExpr_AST(JJTARRAYEXPR_AST);
                                                                                  boolean jjtc005 = true;
                                                                                  jjtree.openNodeScope(jjtn005);
      try {
        jj_consume_token(RSB);
      } finally {
                                                                                  if (jjtc005) {
                                                                                    jjtree.closeNodeScope(jjtn005, true);
                                                                                  }
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DOT:
        jj_consume_token(DOT);
            fieldExpr_AST jjtn006 = new fieldExpr_AST(JJTFIELDEXPR_AST);
            boolean jjtc006 = true;
            jjtree.openNodeScope(jjtn006);
        try {
          id = jj_consume_token(ID);
        } finally {
            if (jjtc006) {
              jjtree.closeNodeScope(jjtn006, true);
            }
        }
        break;
      default:
        jj_la1[44] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    methodPrime_AST jjtn007 = new methodPrime_AST(JJTMETHODPRIME_AST);
    boolean jjtc007 = true;
    jjtree.openNodeScope(jjtn007);
    try {
    jjtree.closeNodeScope(jjtn007, true);
    jjtc007 = false;
    jjtn007.name = id.image;
    jjtn007.mPrime = mPrime;
    jjtn007.arrayIndex = arrayIndex;
    {if (true) return jjtn007;}
    } finally {
    if (jjtc007) {
      jjtree.closeNodeScope(jjtn007, true);
    }
    }
    throw new Error("Missing return statement in function");
  }