org_eclipse_lemminx_extensions_catalog_XMLCatalogDocumentLinkTest_java
org.eclipse.lemminx.extensions.catalog.CatalogUtils
private static List<CatalogEntry> collectCatalogEntries(@NonNull DOMElement catalog) {
        ArrayList<CatalogEntry> entries = new ArrayList<CatalogEntry>();
        String baseURI = catalog.getAttribute(XML_BASE_ATTRIBUTE);
        baseURI = baseURI == null ? "" : baseURI;
        for (DOMNode node : catalog.getChildren()) {
            if (!node.isElement()) continue;
            DOMElement element = (DOMElement)node;
            CatalogEntry catalogEntry = CatalogUtils.createCatalogEntry(baseURI, element);
            if (catalogEntry != null) {
                entries.add(catalogEntry);
                continue;
            }
            if (!CatalogUtils.isGroupCatalogEntry(element)) continue;
            entries.addAll(CatalogUtils.collectGroupEntries(element, baseURI));
        }
        return entries;
    }
 -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Collection.contains(java.lang.Object): boolean -> java.util.Collection.contains(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Collection.contains(java.lang.Object): boolean -> java.util.Collection.contains(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.List.addAll(java.util.Collection): boolean -> java.util.Iterator.hasNext(): boolean
 [CALL] [CALL] [CALL] [CALL] [CALL] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Collection.contains(java.lang.Object): boolean [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Collection.contains(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Collection.contains(java.lang.Object): boolean [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Collection.contains(java.lang.Object): boolean [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [EXIT] -> java.util.List.addAll(java.util.Collection): boolean -> java.util.Iterator.hasNext(): boolean [EXIT]