org_eclipse_lemminx_extensions_xsd_XSDHighlightingExtensionsTest_java
org.eclipse.lemminx.extensions.xsd.participants.XSDHighlightingParticipant
@Override
    public void findDocumentHighlights(DOMNode node, Position position, int offset, List<DocumentHighlight> highlights, CancelChecker cancelChecker) {
        DOMDocument document = node.getOwnerDocument();
        if (!DOMUtils.isXSD(document)) {
            return;
        }
        DOMAttr attr = node.findAttrAt(offset);
        if (attr == null || attr.getNodeAttrValue() == null) {
            return;
        }
        XSDUtils.BindingType bindingType = XSDUtils.getBindingType(attr);
        if (bindingType != XSDUtils.BindingType.NONE) {
            DOMAttr originAttr = attr;
            highlights.add(new DocumentHighlight(XMLPositionUtility.createRange(originAttr.getNodeAttrValue().getStart(), originAttr.getNodeAttrValue().getEnd(), document), DocumentHighlightKind.Read));
            boolean searchInExternalSchema = false;
            XSDUtils.searchXSTargetAttributes(originAttr, bindingType, true, searchInExternalSchema, (targetNamespacePrefix, targetAttr) -> highlights.add(new DocumentHighlight(XMLPositionUtility.createRange(targetAttr.getNodeAttrValue().getStart(), targetAttr.getNodeAttrValue().getEnd(), targetAttr.getOwnerDocument()), DocumentHighlightKind.Write)));
        } else if (XSDUtils.isXSTargetElement(attr.getOwnerElement())) {
            DOMAttr targetAttr2 = attr;
            highlights.add(new DocumentHighlight(XMLPositionUtility.createRange(targetAttr2.getNodeAttrValue().getStart(), targetAttr2.getNodeAttrValue().getEnd(), targetAttr2.getOwnerDocument()), DocumentHighlightKind.Write));
            XSDUtils.searchXSOriginAttributes(targetAttr2, (origin, target) -> highlights.add(new DocumentHighlight(XMLPositionUtility.createRange(origin.getNodeAttrValue().getStart(), origin.getNodeAttrValue().getEnd(), origin.getOwnerDocument()), DocumentHighlightKind.Read)), cancelChecker);
        }
    }
 -> java.lang.String.endsWith(java.lang.String): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> 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,int): java.lang.String -> java.lang.String.isEmpty(): boolean -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> 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.lang.String.isEmpty(): boolean -> java.lang.String.charAt(int): char -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Collections.emptyList(): java.util.List -> java.util.List.size(): int -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> 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.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.isEmpty(): boolean -> java.lang.String.indexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> 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.Set.contains(java.lang.Object): boolean -> java.util.Set.add(java.lang.Object): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): 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.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.util.ArrayList.size(): int -> java.util.ArrayList.get(int): 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.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.lang.Object.equals(java.lang.Object): boolean -> java.util.function.BiConsumer.accept(java.lang.Object,java.lang.Object): void -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): 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.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.lang.Object.equals(java.lang.Object): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): 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.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.lang.Object.equals(java.lang.Object): boolean -> java.util.ArrayList.size(): int
 [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] -> java.lang.String.endsWith(java.lang.String): boolean [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.substring(int,int): java.lang.String [EXIT] [CALL] [CALL] [CALL] -> java.lang.String.isEmpty(): boolean [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [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 [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.isEmpty(): boolean -> java.lang.String.charAt(int): char [EXIT] [EXIT] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [CALL] [CALL] -> java.util.Collections.emptyList(): java.util.List [EXIT] [CALL] -> java.util.List.size(): int [EXIT] [EXIT] [CALL] [CALL] [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] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [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 [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object [EXIT] [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object [EXIT] [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.isEmpty(): boolean [EXIT] -> java.lang.String.indexOf(int): int -> java.lang.String.substring(int,int): java.lang.String [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] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Set.add(java.lang.Object): boolean [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [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] [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] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [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] [EXIT] [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 [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.Object.equals(java.lang.Object): boolean [EXIT] -> java.util.function.BiConsumer.accept(java.lang.Object,java.lang.Object): void [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object [EXIT] [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.util.List.size(): int -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object -> java.util.List.get(int): java.lang.Object [EXIT] [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [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] [EXIT] [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 [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.Object.equals(java.lang.Object): boolean [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [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] [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 [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.Object.equals(java.lang.Object): boolean [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [EXIT] [EXIT] [EXIT]