List<String> (@NotNull OrderEntry entry) { List<String> result = new ArrayList<>(); RootPolicy<List<String>> policy = new RootPolicy<>() { @Override public List<String> visitLibraryOrderEntry(@NotNull final LibraryOrderEntry orderEntry, final List<String> value) { Collections.addAll(value, orderEntry.getRootUrls(getInstance())); return value; } @Override public List<String> visitJdkOrderEntry(@NotNull final JdkOrderEntry orderEntry, final List<String> value) { Collections.addAll(value, orderEntry.getRootUrls(getInstance())); return value; } @Override public List<String> visitModuleSourceOrderEntry(@NotNull ModuleSourceOrderEntry orderEntry, List<String> value) { Collections.addAll(value, orderEntry.getRootModel().getModuleExtension(JavaModuleExternalPaths.class).getExternalAnnotationsUrls()); return value; } }; entry.accept(policy, result); return result; }