}
  static final public void Annotation() throws ParseException {                                 /*@bgen(jjtree) Annotation */  ASTAnnotation jjtn000 = new ASTAnnotation(JJTANNOTATION);  boolean jjtc000 = true;  jjtree.openNodeScope(jjtn000);    try {      if (jj_2_2(3)) {        jj_consume_token(ANNOTATION);        jj_consume_token(LEFT_PARENTHEZIS);        if (jj_2_1(4)) {          KeyValuePairList();        } else {          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {          case INTEGER:          case HEXNUMBER:          case OCTNUMBER:          case FLOAT:          case BOOLEAN:          case STRING:          case CHAR:          case LEFT_BRACKET:          case ANNOTATION:          case JAVA_TYPE_MAYBEARRAY:            Value();            break;          default:            jj_la1[1] = jj_gen;            jj_consume_token(-1);            throw new ParseException();          }        }        jj_consume_token(RIGHT_PARENTHEZIS);      } else if (jj_2_3(2)) {        jj_consume_token(ANNOTATION);        jj_consume_token(LEFT_PARENTHEZIS);        jj_consume_token(RIGHT_PARENTHEZIS);      } else {        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {        case ANNOTATION:          jj_consume_token(ANNOTATION);          break;        default:          jj_la1[2] = jj_gen;          jj_consume_token(-1);          throw new ParseException();        }      }    } catch (Throwable jjte000) {      if (jjtc000) {        jjtree.clearNodeScope(jjtn000);        jjtc000 = false;      } else {        jjtree.popNode();      }      if (jjte000 instanceof RuntimeException) {        {if (true) throw (RuntimeException)jjte000;}      }      if (jjte000 instanceof ParseException) {        {if (true) throw (ParseException)jjte000;}      }      {if (true) throw (Error)jjte000;}    } finally {      if (jjtc000) {        jjtree.closeNodeScope(jjtn000, true);      }    }  }