@Override
    public boolean canStartDragging(DnDAction action, @NotNull Point dragOrigin) {
      if ((action.getActionId() & DnDConstants.ACTION_COPY_OR_MOVE) == 0) return false;
      var tree = myTree;
      if (tree == null) return false;
      if (tree.isOverExpandControl(dragOrigin)) return false;
      var selectedObjects = getSelectedUserObjects();
      for (Object object : selectedObjects) {
        if (object instanceof AbstractPsiBasedNode<?> || object instanceof AbstractModuleNode) {
          return true;
        }
      }
      DataContext dataContext = DataManager.getInstance().getDataContext(myTree);
      return canDrag(dataContext, action.getActionId());
    }
@Override
    public boolean canStartDragging(DnDAction action, @NotNull Point dragOrigin)