void (final VirtualFile virtualFile, final Module module, final Consumer<? super VirtualFile> consumer, boolean includeModuleOutput) { if (isJarFile(virtualFile)){ consumer.consume(virtualFile); } if (module != null) { OrderEnumerator enumerator = ModuleRootManager.getInstance(module).orderEntries().recursively(); if (!includeModuleOutput) { enumerator = enumerator.withoutModuleSourceEntries(); } for (VirtualFile root : enumerator.getClassesRoots()) { final VirtualFile file; if (root.getFileSystem().getProtocol().equals(JarFileSystem.PROTOCOL)) { file = JarFileSystem.getInstance().getVirtualFileForJar(root); } else { file = root; } consumer.consume(file); } } }