@Override
    public void doDrop(TreePath @NotNull [] sources, @NotNull TreePath target) {
      DropTargetNode node = getLastUserObject(DropTargetNode.class, target);
      if (node != null && node.canDrop(sources)) {
        node.drop(sources, DataManager.getInstance().getDataContext(myTree));
      }
      else {
        ReadAction.nonBlocking(() -> getDropContext(getNonDataContextPsiElements(sources), target))
          .finishOnUiThread(ModalityState.defaultModalityState(), context -> doDrop(context, false))
          .submit(AppExecutorUtil.getAppExecutorService());
      }
    }
@Override
    public void doDrop(TreePath @NotNull [] sources, @NotNull TreePath target)