final public methodParent_AST MethodParent() throws ParseException {
        SimpleNode primaryMethodParent = null;
        Token id = null;
        binaryExpression_AST arrayIndex = null;
    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:
      primaryMethodParent = PrimaryMethodParent();
      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);
                                                        }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LSB:
        jj_consume_token(LSB);
        arrayIndex = Expression();
                                                                                                                    arrayExpr_AST jjtn002 = new arrayExpr_AST(JJTARRAYEXPR_AST);
                                                                                                                    boolean jjtc002 = true;
                                                                                                                    jjtree.openNodeScope(jjtn002);
        try {
          jj_consume_token(RSB);
        } finally {
                                                                                                                    if (jjtc002) {
                                                                                                                      jjtree.closeNodeScope(jjtn002, true);
                                                                                                                    }
        }
        break;
      default:
        jj_la1[40] = jj_gen;
        ;
      }
      break;
    case ID:
       idExpr_AST jjtn003 = new idExpr_AST(JJTIDEXPR_AST);
       boolean jjtc003 = true;
       jjtree.openNodeScope(jjtn003);
      try {
        id = jj_consume_token(ID);
      } finally {
       if (jjtc003) {
         jjtree.closeNodeScope(jjtn003, true);
       }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LSB:
        jj_consume_token(LSB);
        arrayIndex = Expression();
                                                               arrayExpr_AST jjtn004 = new arrayExpr_AST(JJTARRAYEXPR_AST);
                                                               boolean jjtc004 = true;
                                                               jjtree.openNodeScope(jjtn004);
        try {
          jj_consume_token(RSB);
        } finally {
                                                               if (jjtc004) {
                                                                 jjtree.closeNodeScope(jjtn004, true);
                                                               }
        }
        break;
      default:
        jj_la1[41] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[42] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
          methodParent_AST jjtn005 = new methodParent_AST(JJTMETHODPARENT_AST);
          boolean jjtc005 = true;
          jjtree.openNodeScope(jjtn005);
    try {
          jjtree.closeNodeScope(jjtn005, true);
          jjtc005 = false;
          jjtn005.primaryMethodParent = primaryMethodParent;
          jjtn005.name = id.image;
          jjtn005.arrayIndex = arrayIndex;
          {if (true) return jjtn005;}
    } finally {
          if (jjtc005) {
            jjtree.closeNodeScope(jjtn005, true);
          }
    }
    throw new Error("Missing return statement in function");
  }