class SyncClientAdapterHandler implements InvocationHandler {

    public static <S, A> S newHandler(Class<? extends S> syncIfcClass, Class<? super A> asyncIfcClass,
                                      A delegateAdapter) {
        SyncClientAdapterHandler handler = new SyncClientAdapterHandler(asyncIfcClass, delegateAdapter);
        Class<?>[] ifcClasses = new Class<?>[]{syncIfcClass};
        return syncIfcClass.cast(Proxy.newProxyInstance(syncIfcClass.getClassLoader(), ifcClasses, handler));
    }

    private  SyncClientAdapterHandler(Class<?> asyncIfcClass, Object delegate);

}