docs: public <T> T newImpersonatingProxy(Class<T> type, T core) {
          return new InterceptingProxy() {
              protected Object call(Object o, Method m, Object[] args) throws Throwable {
                  final Executor old = IMPERSONATION.get();
                  IMPERSONATION.set(Executor.this);
                  try {
                      return m.invoke(o,args);
                  } finally {
                      IMPERSONATION.set(old);
                  }
              }
          }.wrap(type,core);
      }