final public SimpleNode PrimaryMethodParent() throws ParseException {
        SimpleNode primaryMethodParent = null;
        Token id = null;
        List< binaryExpression_AST> args = null;
    if (jj_2_31(3)) {
      primaryMethodParent = Literal();
    } else if (jj_2_32(3)) {
      jj_consume_token(THIS);
      thisExpr_AST jjtn001 = new thisExpr_AST(JJTTHISEXPR_AST);
      boolean jjtc001 = true;
      jjtree.openNodeScope(jjtn001);
      try {
      jjtree.closeNodeScope(jjtn001, true);
      jjtc001 = false;
      primaryMethodParent = jjtn001;
      } finally {
      if (jjtc001) {
        jjtree.closeNodeScope(jjtn001, true);
      }
      }
    } else if (jj_2_33(3)) {
      jj_consume_token(SUPER);
      superExpr_AST jjtn002 = new superExpr_AST(JJTSUPEREXPR_AST);
      boolean jjtc002 = true;
      jjtree.openNodeScope(jjtn002);
      try {
      jjtree.closeNodeScope(jjtn002, true);
      jjtc002 = false;
      primaryMethodParent = jjtn002;
      } finally {
      if (jjtc002) {
        jjtree.closeNodeScope(jjtn002, true);
      }
      }
    } else if (jj_2_34(3)) {
      jj_consume_token(LP);
      primaryMethodParent = Expression();
      jj_consume_token(RP);
    } else if (jj_2_35(3)) {
      newClassExpr_AST jjtn003 = new newClassExpr_AST(JJTNEWCLASSEXPR_AST);
      boolean jjtc003 = true;
      jjtree.openNodeScope(jjtn003);
      try {
        jj_consume_token(NEW);
        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:
          args = ActualArguments();
          break;
        default:
          jj_la1[43] = jj_gen;
          ;
        }
        jj_consume_token(RP);
      jjtree.closeNodeScope(jjtn003, true);
      jjtc003 = false;
      jjtn003.name = id.image;
      IntegerMuted intBaseMuted = new IntegerMuted(-1);
      ClassUnit classUnit = (ClassUnit) SYMBOL_TABLE.lookUp(id.image, UnitType.CLASS, intBaseMuted);
      jjtn003.arguments =  args;
      if (classUnit == null) {
        {if (true) throw new ParseException("Class " + id.image + " has not been declared.");}
      }
      jjtn003.classUnit = classUnit;
      primaryMethodParent = jjtn003;
      } catch (Throwable jjte003) {
      if (jjtc003) {
        jjtree.clearNodeScope(jjtn003);
        jjtc003 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte003 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte003;}
      }
      if (jjte003 instanceof ParseException) {
        {if (true) throw (ParseException)jjte003;}
      }
      {if (true) throw (Error)jjte003;}
      } finally {
      if (jjtc003) {
        jjtree.closeNodeScope(jjtn003, true);
      }
      }
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return primaryMethodParent;}
    throw new Error("Missing return statement in function");
  }