@Override
  @Nullable
  public Object invoke(Object proxy, @NotNull Method method, Object[] args) throws Throwable {
    if (SwingUtilities.isEventDispatchThread()) {
      return invokeAsync(method, args);
    }

    return invoke(method, args);
  }
@Override
  @Nullable
  public Object invoke(Object proxy, @NotNull Method method, Object[] args)