@Override
    public Object invoke(Object object, Method method, Object[] params) throws Throwable {
      try {
        final Object result = method.invoke(myDelegateLibrary, unwrapParams(params));
        if (result instanceof LibraryEx.ModifiableModelEx model) {
          return ReflectionUtil.proxy(getClass().getClassLoader(), LibraryEx.ModifiableModelEx.class,
                                      new LibraryModifiableModelInvocationHandler(model));
        }
        return result;
      }
      catch (InvocationTargetException e) {
        throw e.getCause();
      }
    }
@Override
    public Object invoke(Object object, Method method, Object[] params)