code: JCExpression annotationValue() {
          int pos;
          switch (token.kind) {
          case MONKEYS_AT:
              pos = token.pos;
              nextToken();
              return annotation(pos, Tag.ANNOTATION);
          case LBRACE:
              pos = token.pos;
              accept(LBRACE);
              ListBuffer<JCExpression> buf = new ListBuffer<>();
              if (token.kind == COMMA) {
                  nextToken();
              } else if (token.kind != RBRACE) {
                  buf.append(annotationValue());
                  while (token.kind == COMMA) {
                      nextToken();
                      if (token.kind == RBRACE) break;
                      buf.append(annotationValue());
                  }
              }
              accept(RBRACE);
              return toP(F.at(pos).NewArray(null, List.nil(), buf.toList()));
          default:
              mode = EXPR;
              return term1();
          }
      }
docs: /* AnnotationValue          = ConditionalExpression
  | Annotation
  | "{" [ AnnotationValue { "," AnnotationValue } ] [","] "}"