final public SimpleNode Literal() throws ParseException {
    Token t = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case NULL:
      jj_consume_token(NULL);
    nullExpr_AST jjtn001 = new nullExpr_AST(JJTNULLEXPR_AST);
    boolean jjtc001 = true;
    jjtree.openNodeScope(jjtn001);
      try {
    jjtree.closeNodeScope(jjtn001, true);
    jjtc001 = false;
    jjtn001.typeObj.name="null";
    {if (true) return jjtn001;}
      } finally {
    if (jjtc001) {
      jjtree.closeNodeScope(jjtn001, true);
    }
      }
      break;
    case TRUE:
      jj_consume_token(TRUE);
    boolExpr_AST jjtn002 = new boolExpr_AST(JJTBOOLEXPR_AST);
    boolean jjtc002 = true;
    jjtree.openNodeScope(jjtn002);
      try {
    jjtree.closeNodeScope(jjtn002, true);
    jjtc002 = false;
    jjtn002.typeObj.name="boolean";
    jjtn002.value = true;
    {if (true) return jjtn002;}
      } finally {
    if (jjtc002) {
      jjtree.closeNodeScope(jjtn002, true);
    }
      }
      break;
    case FALSE:
      jj_consume_token(FALSE);
    boolExpr_AST jjtn003 = new boolExpr_AST(JJTBOOLEXPR_AST);
    boolean jjtc003 = true;
    jjtree.openNodeScope(jjtn003);
      try {
    jjtree.closeNodeScope(jjtn003, true);
    jjtc003 = false;
    jjtn003.typeObj.name="boolean";
    jjtn003.value = false;
    {if (true) return jjtn003;}
      } finally {
    if (jjtc003) {
      jjtree.closeNodeScope(jjtn003, true);
    }
      }
      break;
    case INTEGER:
      t = jj_consume_token(INTEGER);
                  intExpr_AST jjtn004 = new intExpr_AST(JJTINTEXPR_AST);
                  boolean jjtc004 = true;
                  jjtree.openNodeScope(jjtn004);
      try {
                  jjtree.closeNodeScope(jjtn004, true);
                  jjtc004 = false;
    jjtn004.typeObj.name="int";
    jjtn004.value = Integer.parseInt(t.image);
    {if (true) return jjtn004;}
      } finally {
                  if (jjtc004) {
                    jjtree.closeNodeScope(jjtn004, true);
                  }
      }
      break;
    case CHARLITERAL:
      t = jj_consume_token(CHARLITERAL);
                      charExpr_AST jjtn005 = new charExpr_AST(JJTCHAREXPR_AST);
                      boolean jjtc005 = true;
                      jjtree.openNodeScope(jjtn005);
      try {
                      jjtree.closeNodeScope(jjtn005, true);
                      jjtc005 = false;
    jjtn005.typeObj.name="char";
    jjtn005.value = t.image.charAt(0);
    {if (true) return jjtn005;}
      } finally {
                      if (jjtc005) {
                        jjtree.closeNodeScope(jjtn005, true);
                      }
      }
      break;
    case STRINGLITERAL:
      t = jj_consume_token(STRINGLITERAL);
                        stringExpr_AST jjtn006 = new stringExpr_AST(JJTSTRINGEXPR_AST);
                        boolean jjtc006 = true;
                        jjtree.openNodeScope(jjtn006);
      try {
                        jjtree.closeNodeScope(jjtn006, true);
                        jjtc006 = false;
    jjtn006.typeObj.name="String";
    jjtn006.typeObj.isClass=true;
    jjtn006.value = t.image;
    {if (true) return jjtn006;}
      } finally {
                        if (jjtc006) {
                          jjtree.closeNodeScope(jjtn006, true);
                        }
      }
      break;
    default:
      jj_la1[23] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }