final public SimpleNode PrimaryExisting_1() throws ParseException {
  Token t = null;
  List<binaryExpression_AST> arguments = null;
  List<binaryExpression_AST> arrayIndices = new ArrayList<binaryExpression_AST>();
  binaryExpression_AST arrayExpr = null;
  int size = 0;
  SimpleNode literal = null;
    if (jj_2_41(3)) {
      literal = Literal();
      literal_AST jjtn001 = new literal_AST(JJTLITERAL_AST);
      boolean jjtc001 = true;
      jjtree.openNodeScope(jjtn001);
      try {
      jjtree.closeNodeScope(jjtn001, true);
      jjtc001 = false;
      {if (true) return literal;}
      } finally {
      if (jjtc001) {
        jjtree.closeNodeScope(jjtn001, true);
      }
      }
    } else if (jj_2_42(3)) {
      jj_consume_token(THIS);
      thisExpr_AST jjtn002 = new thisExpr_AST(JJTTHISEXPR_AST);
      boolean jjtc002 = true;
      jjtree.openNodeScope(jjtn002);
      try {
      jjtree.closeNodeScope(jjtn002, true);
      jjtc002 = false;
      {if (true) return jjtn002;}
      } finally {
      if (jjtc002) {
        jjtree.closeNodeScope(jjtn002, true);
      }
      }
    } else if (jj_2_43(3)) {
      jj_consume_token(SUPER);
              superExpr_AST jjtn003 = new superExpr_AST(JJTSUPEREXPR_AST);
              boolean jjtc003 = true;
              jjtree.openNodeScope(jjtn003);
      try {
              jjtree.closeNodeScope(jjtn003, true);
              jjtc003 = false;
      {if (true) return jjtn003;}
      } finally {
              if (jjtc003) {
                jjtree.closeNodeScope(jjtn003, true);
              }
      }
    } else if (jj_2_44(3)) {
      jj_consume_token(LP);
      Expression();
      jj_consume_token(RP);
                             binaryExpression_AST jjtn004 = new binaryExpression_AST(JJTBINARYEXPRESSION_AST);
                             boolean jjtc004 = true;
                             jjtree.openNodeScope(jjtn004);
      try {
                             jjtree.closeNodeScope(jjtn004, true);
                             jjtc004 = false;
      {if (true) return jjtn004;}
      } finally {
                             if (jjtc004) {
                               jjtree.closeNodeScope(jjtn004, true);
                             }
      }
    } else if (jj_2_45(3)) {
      newClassExpr_AST jjtn005 = new newClassExpr_AST(JJTNEWCLASSEXPR_AST);
      boolean jjtc005 = true;
      jjtree.openNodeScope(jjtn005);
      try {
        jj_consume_token(NEW);
        t = 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:
          arguments = ActualArguments();
          break;
        default:
          jj_la1[59] = jj_gen;
          ;
        }
        jj_consume_token(RP);
      jjtree.closeNodeScope(jjtn005, true);
      jjtc005 = false;
      jjtn005.name = t.image;
      IntegerMuted intBaseMuted = new IntegerMuted(-1);
      ClassUnit classUnit = (ClassUnit) SYMBOL_TABLE.lookUp(t.image, UnitType.CLASS, intBaseMuted);
      jjtn005.arguments =  arguments;
      if (classUnit == null) {
        {if (true) throw new ParseException("Class " + t.image + " has not been declared.");}
      }
      jjtn005.classUnit = classUnit;
      {if (true) return jjtn005;}
      } catch (Throwable jjte005) {
      if (jjtc005) {
        jjtree.clearNodeScope(jjtn005);
        jjtc005 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte005 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte005;}
      }
      if (jjte005 instanceof ParseException) {
        {if (true) throw (ParseException)jjte005;}
      }
      {if (true) throw (Error)jjte005;}
      } finally {
      if (jjtc005) {
        jjtree.closeNodeScope(jjtn005, true);
      }
      }
    } else if (jj_2_46(3)) {
      methodExpr_AST jjtn006 = new methodExpr_AST(JJTMETHODEXPR_AST);
      boolean jjtc006 = true;
      jjtree.openNodeScope(jjtn006);
      try {
        t = 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:
          arguments = ActualArguments();
          break;
        default:
          jj_la1[60] = jj_gen;
          ;
        }
        jj_consume_token(RP);
      jjtree.closeNodeScope(jjtn006, true);
      jjtc006 = false;
      jjtn006.name = t.image;
      IntegerMuted intBaseMuted = new IntegerMuted(-1);
      MethodUnit methodUnit = (MethodUnit) SYMBOL_TABLE.lookUp(t.image, UnitType.METHOD, intBaseMuted);
      jjtn006.arguments =  arguments;
      if (methodUnit == null) {
        {if (true) throw new ParseException("Method " + t.image + " has not been defined.");}
      }
      jjtn006.methodUnit = methodUnit;
      {if (true) return jjtn006;}
      } catch (Throwable jjte006) {
      if (jjtc006) {
        jjtree.clearNodeScope(jjtn006);
        jjtc006 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte006 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte006;}
      }
      if (jjte006 instanceof ParseException) {
        {if (true) throw (ParseException)jjte006;}
      }
      {if (true) throw (Error)jjte006;}
      } finally {
      if (jjtc006) {
        jjtree.closeNodeScope(jjtn006, true);
      }
      }
    } else if (jj_2_47(3)) {
      arrayExpr_AST jjtn007 = new arrayExpr_AST(JJTARRAYEXPR_AST);
      boolean jjtc007 = true;
      jjtree.openNodeScope(jjtn007);
      try {
        t = jj_consume_token(ID);
        label_13:
        while (true) {
          jj_consume_token(LSB);
          arrayExpr = Expression();
          jj_consume_token(RSB);
      size = size + 1;
      arrayIndices.add(arrayExpr);
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LSB:
            ;
            break;
          default:
            jj_la1[61] = jj_gen;
            break label_13;
          }
        }
      jjtree.closeNodeScope(jjtn007, true);
      jjtc007 = false;
      jjtn007.name = t.image;
      jjtn007.size = size;
      jjtn007.arrayIndices = arrayIndices;
      IntegerMuted intBaseMuted = new IntegerMuted(-1);
      VariableUnit variableUnit = (VariableUnit) SYMBOL_TABLE.lookUp(t.image, UnitType.VARIABLE, intBaseMuted);
      if (variableUnit == null) {
        {if (true) throw new ParseException("Variable " + t.image + " has not been defined.");}
      }
      jjtn007.variableUnit = variableUnit;
      {if (true) return jjtn007;}
      } catch (Throwable jjte007) {
      if (jjtc007) {
        jjtree.clearNodeScope(jjtn007);
        jjtc007 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte007 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte007;}
      }
      if (jjte007 instanceof ParseException) {
        {if (true) throw (ParseException)jjte007;}
      }
      {if (true) throw (Error)jjte007;}
      } finally {
      if (jjtc007) {
        jjtree.closeNodeScope(jjtn007, true);
      }
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ID:
        t = jj_consume_token(ID);
    idExpr_AST jjtn008 = new idExpr_AST(JJTIDEXPR_AST);
    boolean jjtc008 = true;
    jjtree.openNodeScope(jjtn008);
        try {
    jjtree.closeNodeScope(jjtn008, true);
    jjtc008 = false;
    jjtn008.name = t.image;
    IntegerMuted intBaseMuted = new IntegerMuted(-1);
    VariableUnit variableUnit = (VariableUnit) SYMBOL_TABLE.lookUp(t.image, UnitType.VARIABLE, intBaseMuted);
    if (variableUnit == null) {
          {if (true) throw new ParseException("Variable " + t.image + " has not been defined.");}
        }
    jjtn008.variableUnit = variableUnit;
    {if (true) return jjtn008;}
        } finally {
    if (jjtc008) {
      jjtree.closeNodeScope(jjtn008, true);
    }
        }
        break;
      default:
        jj_la1[62] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    throw new Error("Missing return statement in function");
  }