@Override
    public void uiDataSnapshot(@NotNull DataSink sink, @NotNull DataSnapshot snapshot) {
      Editor editor = snapshot.get(EDITOR);
      if (!(editor instanceof EditorEx) || editor.isDisposed()) return;

      EditorKind editorKind = editor.getEditorKind();
      if (editorKind == EditorKind.PREVIEW || editorKind == EditorKind.CONSOLE) return;

      Caret caret = snapshot.get(CARET);
      if (caret == null) {
        sink.set(CARET, caret = editor.getCaretModel().getPrimaryCaret());
      }

      VirtualFile file = editor.getVirtualFile();
      if (file == null) return;

      Caret finalCaret = caret;
      sink.set(HOST_EDITOR, editor instanceof EditorWindow o ? o.getDelegate() : editor);
      sink.set(IDE_VIEW, getIdeView(editor, file));
      sink.set(BGT_DATA_PROVIDER, slowId -> getSlowData(slowId, editor, finalCaret));
    }
@Override
    public void uiDataSnapshot(@NotNull DataSink sink, @NotNull DataSnapshot snapshot)