refactor AnnotationFactory to always use a custom java.lang.reflect.Proxy-based ProxyFactory implementation that ensures generated annotation proxies correctly implement equals/hashCode/toString