final public SimpleNode Type() throws ParseException {
  Token t = null;
  ClassUnit varUnit = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INT:
      t = jj_consume_token(INT);
               int_AST jjtn001 = new int_AST(JJTINT_AST);
               boolean jjtc001 = true;
               jjtree.openNodeScope(jjtn001);
      try {
               jjtree.closeNodeScope(jjtn001, true);
               jjtc001 = false;
    jjtn001.jjtSetValue("int");
    jjtn001.typeObj.name = "int";
    {if (true) return jjtn001;}
      } finally {
               if (jjtc001) {
                 jjtree.closeNodeScope(jjtn001, true);
               }
      }
      break;
    case CHAR:
      t = jj_consume_token(CHAR);
                char_AST jjtn002 = new char_AST(JJTCHAR_AST);
                boolean jjtc002 = true;
                jjtree.openNodeScope(jjtn002);
      try {
                jjtree.closeNodeScope(jjtn002, true);
                jjtc002 = false;
    jjtn002.jjtSetValue("char");
    jjtn002.typeObj.name = "char";
    {if (true) return jjtn002;}
      } finally {
                if (jjtc002) {
                  jjtree.closeNodeScope(jjtn002, true);
                }
      }
      break;
    case BOOLEAN:
      t = jj_consume_token(BOOLEAN);
                   boolean_AST jjtn003 = new boolean_AST(JJTBOOLEAN_AST);
                   boolean jjtc003 = true;
                   jjtree.openNodeScope(jjtn003);
      try {
                   jjtree.closeNodeScope(jjtn003, true);
                   jjtc003 = false;
    jjtn003.jjtSetValue("boolean");
    jjtn003.typeObj.name = "boolean";
    {if (true) return jjtn003;}
      } finally {
                   if (jjtc003) {
                     jjtree.closeNodeScope(jjtn003, true);
                   }
      }
      break;
    case ID:
      t = jj_consume_token(ID);
              id_AST jjtn004 = new id_AST(JJTID_AST);
              boolean jjtc004 = true;
              jjtree.openNodeScope(jjtn004);
      try {
              jjtree.closeNodeScope(jjtn004, true);
              jjtc004 = false;
    jjtn004.typeObj.name = t.image;
        jjtn004.typeObj.isClass = true;
    IntegerMuted currentScope = new IntegerMuted(-1);
    if (MODE == 1){
                varUnit = (ClassUnit) SYMBOL_TABLE.lookUp(t.image,UnitType.CLASS, currentScope);
                if (varUnit == null){
                  {if (true) throw new ParseException(t.image + " has not been declared yet");}
                }
                varUnit.setType(jjtn004);
                jjtn004.jjtSetValue(t.image);
                jjtn004.setUnit(varUnit);
    }
    //System.out.println(jjtThis.jjtGetValue());
    {if (true) return jjtn004;}
      } finally {
              if (jjtc004) {
                jjtree.closeNodeScope(jjtn004, true);
              }
      }
      break;
    default:
      jj_la1[8] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }