void (List<? extends File> files, @NotNull TreePath target) { ApplicationManager.getApplication().executeOnPooledThread(() -> { var virtualFiles = getVirtualFiles(files); ReadAction.nonBlocking(() -> getDropContext(psiFilesFromVirtualFiles(virtualFiles), target)) .finishOnUiThread(ModalityState.defaultModalityState(), dropContext -> { DropTargetNode node = getLastUserObject(DropTargetNode.class, target); if (node != null) { node.dropExternalFiles((PsiFileSystemItem[])getPsiElements(dropContext), DataManager.getInstance().getDataContext(myTree)); } else { doDrop(dropContext, true); } }) .submit(AppExecutorUtil.getAppExecutorService()); }); }