private static @NotNull List<FrameDiffTool> filterFittedTools(@NotNull List<? extends DiffTool> tools,
                                                                @NotNull DiffContext diffContext,
                                                                @NotNull DiffRequest diffRequest) {
    List<FrameDiffTool> result = new ArrayList<>();
    for (DiffTool tool : tools) {
      try {
        if (tool instanceof FrameDiffTool) {
          if (tool.canShow(diffContext, diffRequest)) {
            result.add((FrameDiffTool)tool);
          }
          else if (findToolSubstitutor(tool, diffContext, diffRequest) != null) {
            result.add((FrameDiffTool)tool);
          }
        }
      }
      catch (ProcessCanceledException e) {
        throw e;
      }
      catch (Throwable e) {
        LOG.error(e);
      }
    }

    return DiffUtil.filterSuppressedTools(result);
  }
private static @NotNull List<FrameDiffTool> filterFittedTools(@NotNull List<? extends DiffTool> tools,
                                                                @NotNull DiffContext diffContext,
                                                                @NotNull DiffRequest diffRequest)