docs: @Override
      public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
          if (method.getName().equals("annotationType")) {
              return annotationType;
          } else if (method.getName().equals("toString")) { 
              return toString();
          } else if (method.getName().equals("equals")) {
             return annotationEquals(args[0]);
          } else if (method.getName().equals("hashCode")) { 
              return proxy.hashCode();
          } else {
              return attributeData.get(method.getName());
          }
         
      }