@@ -0,0 +1,1822 @@
+package test;%0A%0Aimport java.io.IOException;%0Aimport java.io.Serializable;%0Aimport java.lang.annotation.ElementType;%0Aimport java.lang.annotation.Retention;%0Aimport java.lang.annotation.RetentionPolicy;%0Aimport java.lang.annotation.Target;%0Aimport java.util.List;%0A%0Apublic class TypeUseExample %7B%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface TypeParameterAnnotation %7B%0A    %7D%0A%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface TypeParameterBoundTypeAnnotation %7B%0A    %7D%0A%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface ClassExtendsAnnotation %7B%0A    %7D%0A%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface FieldTypeAnnotation %7B%0A    %7D%0A%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface MethodParameterTypeAnnotation %7B%0A    %7D%0A%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface MethodReturnTypeAnnotation %7B%0A    %7D%0A%0A    @Retention(RetentionPolicy.RUNTIME)%0A    @Target(%7BElementType.TYPE_USE%7D)%0A    public @interface MethodThrowsTypeAnnotation %7B%0A    %7D%0A%0A    public static class AbstractClass %7B%0A%0A    %7D%0A%0A    public static class TestSubject%3C@TypeParameterAnnotation T extends @TypeParameterBoundTypeAnnotation Serializable%3E%0A            extends @ClassExtendsAnnotation AbstractClass %7B%0A        private @FieldTypeAnnotation String field;%0A%0A        public void method(@MethodParameterTypeAnnotation String methodParam) %7B%0A        %7D%0A%0A        public List%3C@MethodReturnTypeAnnotation String%3E methodWithAnnotatedReturnType() %7B%0A            return null;%0A        %7D%0A%0A        public void methodWithThrows() throws @MethodThrowsTypeAnnotation IOException %7B%0A        %7D%0A    %7D%0A%7D%0A

Add type use example