@SuppressWarnings("unchecked")
  static <T> Equality<T> createIdentityEquality() {
    return (Equality<T>)Proxy.newProxyInstance(
      Equality.class.getClassLoader(),
      new Class<?>[]{Equality.class},
      new InvocationHandler() {
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
          if ("equals".equals(method.getName())) {
            return args[0] == args[1];
          }
          throw new UnsupportedOperationException("Unsupported method: " + method.getName());
        }
      }
    );
  }
@SuppressWarnings("unchecked")
  static <T> Equality<T> createIdentityEquality()