boolean (boolean requestFocus, boolean tryNotToScroll, @Nullable Iterable<? extends Navigatable> navigatables) { if (navigatables == null) { return false; } if (Registry.is("ide.navigation.requests")) { Project project = OpenSourceUtilKt.findProject(navigatables); if (project != null) { return OpenSourceUtilKt.navigate(project, requestFocus, tryNotToScroll, navigatables); } } Navigatable nonSourceNavigatable = null; int maxSourcesToNavigate = Registry.intValue("ide.source.file.navigation.limit", 100); int navigatedSourcesCounter = 0; for (Navigatable navigatable : navigatables) { if (maxSourcesToNavigate > 0 && navigatedSourcesCounter >= maxSourcesToNavigate) { break; } if (navigateToSource(requestFocus, tryNotToScroll, navigatable)) { navigatedSourcesCounter++; } else if (navigatedSourcesCounter == 0 && nonSourceNavigatable == null && navigatable != null && navigatable.canNavigate()) { nonSourceNavigatable = navigatable; } } if (navigatedSourcesCounter > 0) { return true; } if (nonSourceNavigatable == null) { return false; } nonSourceNavigatable.navigate(requestFocus); return true; }