@Override
    public Object invoke(Object object, Method method, Object[] params) throws Throwable {
      final boolean needUpdate = METHOD_COMMIT.equals(method.getName());
      try {
        Object result = method.invoke(myDelegateModel, unwrapParams(params));
        if (result instanceof Library[] libraries) {
          for (int idx = 0; idx < libraries.length; idx++) {
            Library library = libraries[idx];
            libraries[idx] = ReflectionUtil.proxy(getClass().getClassLoader(), LibraryEx.class, new LibraryInvocationHandler(library));
          }
        }
        if (result instanceof Library library) {
          result = ReflectionUtil.proxy(getClass().getClassLoader(), LibraryEx.class, new LibraryInvocationHandler(library));
        }
        return result;
      }
      catch (InvocationTargetException e) {
        throw e.getCause();
      }
      finally {
        if (needUpdate) {
          updateOrderEntriesInEditors(true);
        }
      }
    }
@Override
    public Object invoke(Object object, Method method, Object[] params)