List<PyRequirement> (@NotNull String text, @Nullable VirtualFile containingFile, @NotNull Set<VirtualFile> visitedFiles) { if (containingFile != null) { visitedFiles.add(containingFile); } return StreamEx .of(splitByLinesAndCollapse(text)) .flatCollection(line -> parseLine(line, containingFile, visitedFiles)) .nonNull() .distinct() .toList(); }