@NotNull
  private static <T, W extends DynamicWrapper<? extends T>> T wrap(@NotNull Class<T> ifaceClass, @NotNull final W wrapper) {
    return wrap(ifaceClass, wrapper, DynamicWrapper.class, wrapper.getWrapperDelegate());
  }
@NotNull
  private static <T, W extends DynamicWrapper<? extends T>> T wrap(@NotNull Class<T> ifaceClass, @NotNull final W wrapper)