List<FrameDiffTool> (@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); }