public static boolean navigate(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;
  }
public static boolean navigate(boolean requestFocus, boolean tryNotToScroll, @Nullable Iterable<? extends Navigatable> navigatables)