src/main/java/org/ehcache/sizeof/annotations/AnnotationProxyFactory.java
@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);
    }
@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);
    }
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