code: JCAnnotation annotation(int pos, Tag kind) {
          // accept(AT); // AT consumed by caller
          checkAnnotations();
          if (kind == Tag.TYPE_ANNOTATION) {
              checkTypeAnnotations();
          }
          JCTree ident = qualident(false);
          List<JCExpression> fieldValues = annotationFieldValuesOpt();
          JCAnnotation ann;
          if (kind == Tag.ANNOTATION) {
              ann = F.at(pos).Annotation(ident, fieldValues);
          } else if (kind == Tag.TYPE_ANNOTATION) {
              ann = F.at(pos).TypeAnnotation(ident, fieldValues);
          } else {
              throw new AssertionError("Unhandled annotation kind: " + kind);
          }
  
          storeEnd(ann, S.prevToken().endPos);
          return ann;
      }
docs: Annotation              = "@" Qualident [ "(" AnnotationFieldValues ")" ]
  
  @param pos position of "@" token
  @param kind Whether to parse an ANNOTATION or TYPE_ANNOTATION