@Override
  public void drop(DnDEvent aEvent) {
    Object attached = aEvent.getAttachedObject();
    if (attached instanceof ShelvedChangeListDragBean dragBean) {
      ChangesBrowserNode<?> dropRootNode = getDropRootNode(myTree, aEvent);
      LocalChangeList targetChangeList;
      if (dropRootNode != null) {
        targetChangeList = TreeUtil.getUserObject(LocalChangeList.class, dropRootNode);
      }
      else {
        ShelvedChangeList changeList = ContainerUtil.getFirstItem(dragBean.getShelvedChangelists());
        String suggestedName = changeList != null ? changeList.getName() : VcsBundle.message("changes.new.changelist");
        String listName = ChangeListUtil.createNameForChangeList(myProject, suggestedName);
        targetChangeList = ChangeListManager.getInstance(myProject).addChangeList(listName, null);
      }
      unshelveSilentlyWithDnd(myProject, dragBean, targetChangeList, !isCopyAction(aEvent));
    }
    else if (attached instanceof ChangeListDragBean dragBean) {
      final ChangesBrowserNode<?> changesBrowserNode = dragBean.getTargetNode();
      if (changesBrowserNode != null) {
        changesBrowserNode.acceptDrop(new DefaultChangeListOwner(myProject), dragBean);
      }
    }
  }
@Override
  public void drop(DnDEvent aEvent)