docs: @Override
      public Object invoke(final Object proxy, final Method method, final Object[] rawArgs) throws
              Throwable {
          // args can be null if the method invoked has no arguments, but Mockito expects a non-null
          Object[] args = rawArgs;
          if (rawArgs == null) {
              args = new Object[0];
          }
  
          if (isEqualsMethod(method)) {
              return proxy == args[0];
          } else if (isHashCodeMethod(method)) {
              return System.identityHashCode(proxy);
          }
  
          return handler.handle(Mockito.framework().getInvocationFactory().createInvocation(proxy,
                  withSettings().build(proxy.getClass().getSuperclass()), method,
                  new RealMethodBehavior() {
                      @Override
                      public Object call() throws Throwable {
                          return ProxyBuilder.callSuper(proxy, method, rawArgs);
                      }
                  }, args));
      }