code: public Attribute.TypeCompound attributeTypeAnnotation(JCAnnotation a, Type expectedAnnotationType,
                                                            Env<AttrContext> env)
      {
          // The attribute might have been entered if it is Target or Repetable
          // Because TreeCopier does not copy type, redo this if type is null
          if (a.attribute == null || a.type == null || !(a.attribute instanceof Attribute.TypeCompound)) {
              // Create a new TypeCompound
              List<Pair<MethodSymbol,Attribute>> elems =
                      attributeAnnotationValues(a, expectedAnnotationType, env);
  
              Attribute.TypeCompound tc =
                      new Attribute.TypeCompound(a.type, elems, TypeAnnotationPosition.unknown);
              a.attribute = tc;
              return tc;
          } else {
              // Use an existing TypeCompound
              return (Attribute.TypeCompound)a.attribute;
          }
      }
docs: Attribute and store a semantic representation of the type annotation tree {@code tree} into
  the tree.attribute field.
  
  @param a the tree representing an annotation
  @param expectedAnnotationType the expected (super)type of the annotation
  @param env the the current env in where the annotation instance is found