public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (objectMethodsGuru.isEqualsMethod(method)) { return proxy == args[0]; } else if (objectMethodsGuru.isHashCodeMethod(method)) { return System.identityHashCode(proxy); } ProxiedMethod proxiedMethod = new ProxiedMethod(method); return handler.handle( new InvocationImpl(proxy, proxiedMethod, args, SequenceNumber.next(), proxiedMethod)); }