org_eclipse_lemminx_extensions_xsd_XSDReferenceExtensionsTest_java
org.eclipse.lemminx.extensions.xsd.utils.XSDUtils
private static void searchXSOriginAttributes(NodeList nodes, List<DOMAttr> targetAttrs, String targetNamespacePrefix, BiConsumer<DOMAttr, DOMAttr> collector, CancelChecker cancelChecker) {
        for (int i = 0; i < nodes.getLength(); ++i) {
            DOMElement originElement;
            NamedNodeMap originAttributes;
            Node node;
            if (cancelChecker != null) {
                cancelChecker.checkCanceled();
            }
            if ((node = nodes.item(i)).getNodeType() == 1 && (originAttributes = (originElement = (DOMElement)node).getAttributes()) != null) {
                for (int j = 0; j < originAttributes.getLength(); ++j) {
                    DOMAttr originAttr = (DOMAttr)originAttributes.item(j);
                    BindingType originBnding = XSDUtils.getBindingType(originAttr);
                    if (originBnding == BindingType.NONE) continue;
                    String originName = XSDUtils.getOriginName(originAttr.getValue(), targetNamespacePrefix);
                    for (DOMAttr targetAttr : targetAttrs) {
                        DOMElement targetElement = targetAttr.getOwnerElement();
                        if (!XSDUtils.isBounded(originAttr.getOwnerElement(), originBnding, targetElement) || targetAttr == null || !Objects.equal(originName, targetAttr.getValue())) continue;
                        collector.accept(originAttr, targetAttr);
                    }
                }
            }
            if (!node.hasChildNodes()) continue;
            XSDUtils.searchXSOriginAttributes(node.getChildNodes(), targetAttrs, targetNamespacePrefix, collector, cancelChecker);
        }
    }
 -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int,int): java.lang.String -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.String.length(): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.Object.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.size(): int
 [CALL] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int,int): java.lang.String [CALL] -> java.lang.Object.equals(java.lang.Object): boolean [EXIT] -> java.lang.String.length(): int -> java.lang.String.substring(int,int): java.lang.String [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.Object.equals(java.lang.Object): boolean [EXIT] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [EXIT]