@NotNull
  private Collection<String> getUnloadedModulesBelongingToScope() {
    return ReadAction.compute(() -> {
      if (!(mySearchScopeToWarnOfFallingOutOf instanceof GlobalSearchScope)) return Collections.emptySet();
      Collection<UnloadedModuleDescription> unloadedInSearchScope =
        ((GlobalSearchScope)mySearchScopeToWarnOfFallingOutOf).getUnloadedModulesBelongingToScope();
      Set<UnloadedModuleDescription> unloadedInUseScope = getUnloadedModulesBelongingToUseScopes();
      Collection<UnloadedModuleDescription> result;
      if (unloadedInUseScope != null) {
        //when searching for usages of PsiElements return only those unloaded modules which may contain references to the elements, this way
        // we won't show a warning if e.g., 'find usages' for a private method is invoked
        result = ContainerUtil.intersection(unloadedInSearchScope, unloadedInUseScope);
      }
      else {
        result = unloadedInSearchScope;
      }
      return ContainerUtil.map(result, UnloadedModuleDescription::getName);
    });
  }
@NotNull
  private Collection<String> getUnloadedModulesBelongingToScope()