public Object getDataImpl(final String dataId) {
    if (myBuilder == null) return null;
    if (LangDataKeys.IDE_VIEW.is(dataId)) {
      return myIdeView;
    }
    else if (PlatformCoreDataKeys.SELECTED_ITEM.is(dataId)) {
      return getSelectedNode();
    }
    else if (PlatformCoreDataKeys.SELECTED_ITEMS.is(dataId)) {
      List<AbstractTreeNode<?>> selection = getSelectedNodes();
      if (selection.isEmpty()) return ArrayUtil.EMPTY_OBJECT_ARRAY;
      return getSelectedNodes().toArray();
    }
    else if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) {
      List<AbstractTreeNode<?>> selection = getSelectedNodes();
      if (selection.isEmpty()) return Navigatable.EMPTY_NAVIGATABLE_ARRAY;
      return selection.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY);
    }
    else if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
      AbstractTreeNode<?> parentNode = myBuilder.getParentNode();
      List<AbstractTreeNode<?>> selection = getSelectedNodes();
      DataProvider structureProvider = myProjectTreeStructure == null ? null :
                                       (DataProvider)myProjectTreeStructure.getDataFromProviders(selection, dataId);
      return CompositeDataProvider.compose(slowId -> getSlowData(slowId, parentNode, selection), structureProvider);
    }
    else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) {
      return myDeleteElementProvider;
    }
    else if (myProjectTreeStructure != null) {
      return myProjectTreeStructure.getDataFromProviders(getSelectedNodes(), dataId);
    }

    return null;
  }
public Object getDataImpl(final String dataId)