title: What are the compatibility risks of replacing METHOD/FIELD/etc. targets with TYPE_USE
body: <p>I have a Java package that contains annotations used by external clients. The package appeared before Java 8, so historically these annotations have targets <code>ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE</code>. Now the package requires at least Java 8 version. Semantically the annotations in the package are applicable to the types, so e.g. when the method is annotated, the annotation effectively applies to the method return type. Now clients want to annotate generic type arguments as well (e.g. <code>List&lt;@MyAnnotation String&gt;</code>). Since we dropped the support of Java 7 and below, it seems quite natural to set the annotation target to <code>ElementType.TYPE_USE</code> and, to reduce ambiguity, remove the existing targets.</p>
  
  <p>Here's the question: are there any compatibility risks for existing clients when replacing <code>ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE</code> targets with <code>TYPE_USE</code>? Is it possible that the existing code will stop compiling? What about binary compatibility? May it cause any runtime problems if the class-files compiled before the change are used together with newer annotations pack at runtime?</p>
  
  <p>Annotations' retention policy is <code>CLASS</code> if this matters.</p>