Stream<VirtualFile> (VirtualFile file) { Stream<VirtualFile> modelRoots = ProjectFileIndex.getInstance(myProject).getOrderEntriesForFile(file).stream() .filter(entry -> entry instanceof LibraryOrSdkOrderEntry && entry.isValid()) .flatMap(entry -> Stream.of(((LibraryOrSdkOrderEntry)entry).getRootFiles(OrderRootType.SOURCES))); Stream<VirtualFile> synthRoots = AdditionalLibraryRootsProvider.EP_NAME.getExtensionList().stream() .flatMap(provider -> provider.getAdditionalProjectLibraries(myProject).stream()) .filter(library -> library.contains(file, false, true)) .flatMap(library -> library.getSourceRoots().stream()); return Stream.concat(modelRoots, synthRoots); }