final public SimpleNode PrimaryFieldAccess() throws ParseException {
  SimpleNode primaryFieldAccess = null;
  Token id = null;
  List< binaryExpression_AST> args = null;
    if (jj_2_18(3)) {
      primaryFieldAccess = Literal();
    } else if (jj_2_19(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;
    primaryFieldAccess = jjtn001;
      } finally {
    if (jjtc001) {
      jjtree.closeNodeScope(jjtn001, true);
    }
      }
    } else if (jj_2_20(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;
    primaryFieldAccess = jjtn002;
      } finally {
    if (jjtc002) {
      jjtree.closeNodeScope(jjtn002, true);
    }
      }
    } else if (jj_2_21(3)) {
      jj_consume_token(LP);
      primaryFieldAccess = Expression();
      jj_consume_token(RP);
    } else if (jj_2_22(3)) {
      jj_consume_token(NEW);
      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:
        ActualArguments();
        break;
      default:
        jj_la1[28] = jj_gen;
        ;
      }
      jj_consume_token(RP);
    newClassExpr_AST jjtn003 = new newClassExpr_AST(JJTNEWCLASSEXPR_AST);
    boolean jjtc003 = true;
    jjtree.openNodeScope(jjtn003);
      try {
    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;
        primaryFieldAccess = jjtn003;
      } finally {
    if (jjtc003) {
      jjtree.closeNodeScope(jjtn003, true);
    }
      }
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return primaryFieldAccess;}
    throw new Error("Missing return statement in function");
  }