@Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
          if ("computeHashCode".equals(method.getName())) {
            return args[0] != null ? args[0].hashCode() : 0;
          }
          else if ("equals".equals(method.getName())) {
            if (args[0] == null) {
              return args[1] == null;
            }
            return args[0].equals(args[1]);
          }
          throw new UnsupportedOperationException("Unsupported method: " + method.getName());
        }
@Override
        public Object invoke(Object proxy, Method method, Object[] args)