private static @Nullable Object getSlowData(@NotNull String dataId,
                                              @NotNull Couple<AbstractTreeNode<?>> active,
                                              @NotNull Couple<AbstractTreeNode<?>> inactive) {
    if (LangDataKeys.TARGET_PSI_ELEMENT.is(dataId)) {
      return getNodeElement(inactive.first);
    }
    else if (DiffDataKeys.DIFF_REQUEST_TO_COMPARE.is(dataId)) {
      PsiElement primary = getNodeElement(active.second);
      PsiElement secondary = getNodeElement(inactive.second);
      if (primary != null && secondary != null &&
          primary.isValid() && secondary.isValid() &&
          !PsiTreeUtil.isAncestor(primary, secondary, false) &&
          !PsiTreeUtil.isAncestor(secondary, primary, false)) {
        return PsiDiffContentFactory.comparePsiElements(primary, secondary);
      }
    }
    return null;
  }
private static @Nullable Object getSlowData(@NotNull String dataId,
                                              @NotNull Couple<AbstractTreeNode<?>> active,
                                              @NotNull Couple<AbstractTreeNode<?>> inactive)