@Override
  public void uiDataSnapshot(@NotNull DataSink sink) {
    sink.set(CommonDataKeys.PROJECT, getProject());
    sink.set(PlatformDataKeys.TREE_EXPANDER, getTreeExpander());
    sink.set(PlatformDataKeys.TREE_EXPANDER_HIDE_ACTIONS_IF_NO_EXPANDER, shouldHideExpandCollapseActionsIfThereIsNoTreeExpander());

    Node node = getSelectedNode();
    // this code allows performing Editor's Undo action from the Problems View
    Editor editor = getPreview();
    if (editor != null) {
      sink.set(PlatformCoreDataKeys.FILE_EDITOR,
               TextEditorProvider.getInstance().getTextEditor(editor));
    }
    else {
      VirtualFile file = node == null ? null : node.getVirtualFile();
      sink.set(PlatformCoreDataKeys.FILE_EDITOR,
               file == null ? null : getFirstElement(FileEditorManager.getInstance(mySession.getProject()).getEditors(file)));
    }
    if (node == null) return;
    VirtualFile file = node.getVirtualFile();

    sink.set(PlatformCoreDataKeys.SELECTED_ITEM, node);
    sink.set(CommonDataKeys.VIRTUAL_FILE, node.getVirtualFile());
    sink.set(CommonDataKeys.VIRTUAL_FILE_ARRAY, file == null ? null : new VirtualFile[]{file});

    sink.lazy(CommonDataKeys.NAVIGATABLE, () -> node.getNavigatable());
    sink.lazy(CommonDataKeys.NAVIGATABLE_ARRAY, () -> {
      Navigatable navigatable = node.getNavigatable();
      return navigatable == null ? null : new Navigatable[]{navigatable};
    });
  }
@Override
  public void uiDataSnapshot(@NotNull DataSink sink)