code: @SuppressWarnings("unchecked")
      public static <T extends Annotation> T getAnnotationProxy(Annotation customAnnotation, Class<T> referenceAnnotation) {
          InvocationHandler handler = new AnnotationInvocationHandler(customAnnotation);
          return (T)Proxy.newProxyInstance(referenceAnnotation.getClassLoader(), new Class[] { referenceAnnotation }, handler);
      }
docs: Returns a proxy on the customAnnotation, having the same type than the referenceAnnotation
  
  @param customAnnotation annotation proxied
  @param referenceAnnotation type of the returned annotation
  @return proxied customAnnotation with the type of referenceAnnotation