void (@NotNull Project project, @NotNull List<Couple<String>> classesAndMethods, byte frameworkId, @NotNull List<String> filePaths, @NotNull TestProcessor processor) { MultiMap<String, String> visitedTests = new MultiMap<>() { @NotNull @Override protected Collection<String> createCollection() { return new HashSet<>(); } }; for (TestDiscoveryProducer producer : EP.getExtensionList()) { for (Map.Entry<String, Collection<String>> entry : ContainerUtil.concat( producer.getDiscoveredTests(project, classesAndMethods, frameworkId).entrySet(), producer.getDiscoveredTestsForFiles(project, filePaths, frameworkId).entrySet())) { String className = entry.getKey(); for (String methodRawName : entry.getValue()) { if (!visitedTests.get(className).contains(methodRawName)) { visitedTests.putValue(className, methodRawName); Couple<String> couple = extractParameter(methodRawName); if (!processor.process(className, couple.first, couple.second)) return; } } } } }