private static @Nullable Object getSlowData(@NotNull String dataId,
                                              @Nullable AbstractTreeNode<?> parentNode,
                                              @NotNull List<AbstractTreeNode<?>> selection) {
    if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
      return getNodeElement(ContainerUtil.getOnlyItem(selection));
    }
    else if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
      if (selection.isEmpty()) return PsiElement.EMPTY_ARRAY;
      return PsiUtilCore.toPsiElementArray(ContainerUtil.mapNotNull(selection, CommanderPanel::getNodeElement));
    }
    else if (LangDataKeys.PASTE_TARGET_PSI_ELEMENT.is(dataId)) {
      Object element = parentNode != null ? parentNode.getValue() : null;
      return element instanceof PsiElement ? element : null;
    }
    else if (PlatformCoreDataKeys.MODULE.is(dataId)) {
      Object selectedValue = getNodeValue(ContainerUtil.getOnlyItem(selection));
      return selectedValue instanceof Module ? selectedValue : null;
    }
    else if (ModuleGroup.ARRAY_DATA_KEY.is(dataId)) {
      Object selectedValue = getNodeValue(ContainerUtil.getOnlyItem(selection));
      return selectedValue instanceof ModuleGroup ? new ModuleGroup[]{(ModuleGroup)selectedValue} : null;
    }
    else if (LibraryGroupElement.ARRAY_DATA_KEY.is(dataId)) {
      Object selectedValue = getNodeValue(ContainerUtil.getOnlyItem(selection));
      return selectedValue instanceof LibraryGroupElement ? new LibraryGroupElement[]{(LibraryGroupElement)selectedValue} : null;
    }
    else if (NamedLibraryElement.ARRAY_DATA_KEY.is(dataId)) {
      Object selectedValue = getNodeValue(ContainerUtil.getOnlyItem(selection));
      return selectedValue instanceof NamedLibraryElement ? new NamedLibraryElement[]{(NamedLibraryElement)selectedValue} : null;
    }
    return null;
  }
private static @Nullable Object getSlowData(@NotNull String dataId,
                                              @Nullable AbstractTreeNode<?> parentNode,
                                              @NotNull List<AbstractTreeNode<?>> selection)