org_eclipse_lemminx_extensions_xsd_XSDCompletionExtensionsTest_java
org.apache.xerces.impl.xs.traversers.XSDAttributeTraverser
protected XSAttributeUseImpl traverseLocal(Element element, XSDocumentInfo xSDocumentInfo, SchemaGrammar schemaGrammar, XSComplexTypeDecl xSComplexTypeDecl) {
        Object object;
        Object[] objectArray = this.fAttrChecker.checkAttributes(element, false, xSDocumentInfo);
        String string = (String)objectArray[XSAttributeChecker.ATTIDX_DEFAULT];
        String string2 = (String)objectArray[XSAttributeChecker.ATTIDX_FIXED];
        String string3 = (String)objectArray[XSAttributeChecker.ATTIDX_NAME];
        QName qName = (QName)objectArray[XSAttributeChecker.ATTIDX_REF];
        XInt xInt = (XInt)objectArray[XSAttributeChecker.ATTIDX_USE];
        XSAttributeDecl xSAttributeDecl = null;
        XSAnnotationImpl xSAnnotationImpl = null;
        if (element.getAttributeNode(SchemaSymbols.ATT_REF) != null) {
            if (qName != null) {
                xSAttributeDecl = (XSAttributeDecl)this.fSchemaHandler.getGlobalDecl(xSDocumentInfo, 1, qName, element);
                Element element2 = DOMUtil.getFirstChildElement(element);
                if (element2 != null && DOMUtil.getLocalName(element2).equals(SchemaSymbols.ELT_ANNOTATION)) {
                    xSAnnotationImpl = this.traverseAnnotationDecl(element2, objectArray, false, xSDocumentInfo);
                    element2 = DOMUtil.getNextSiblingElement(element2);
                } else {
                    object = DOMUtil.getSyntheticAnnotation(element);
                    if (object != null) {
                        xSAnnotationImpl = this.traverseSyntheticAnnotation(element, (String)object, objectArray, false, xSDocumentInfo);
                    }
                }
                if (element2 != null) {
                    this.reportSchemaError("src-attribute.3.2", new Object[]{qName.rawname}, element2);
                }
                string3 = qName.localpart;
            } else {
                xSAttributeDecl = null;
            }
        } else {
            xSAttributeDecl = this.traverseNamedAttr(element, objectArray, xSDocumentInfo, schemaGrammar, false, xSComplexTypeDecl);
        }
        int n = 0;
        if (string != null) {
            n = 1;
        } else if (string2 != null) {
            n = 2;
            string = string2;
            string2 = null;
        }
        object = null;
        if (xSAttributeDecl != null) {
            object = this.fSchemaHandler.fDeclPool != null ? this.fSchemaHandler.fDeclPool.getAttributeUse() : new XSAttributeUseImpl();
            ((XSAttributeUseImpl)object).fAttrDecl = xSAttributeDecl;
            ((XSAttributeUseImpl)object).fUse = xInt.shortValue();
            ((XSAttributeUseImpl)object).fConstraintType = (short)n;
            if (string != null) {
                ((XSAttributeUseImpl)object).fDefault = new ValidatedInfo();
                ((XSAttributeUseImpl)object).fDefault.normalizedValue = string;
            }
            if (element.getAttributeNode(SchemaSymbols.ATT_REF) == null) {
                ((XSAttributeUseImpl)object).fAnnotations = xSAttributeDecl.getAnnotations();
            } else {
                XSObjectListImpl xSObjectListImpl;
                if (xSAnnotationImpl != null) {
                    xSObjectListImpl = new XSObjectListImpl();
                    xSObjectListImpl.addXSObject(xSAnnotationImpl);
                } else {
                    xSObjectListImpl = XSObjectListImpl.EMPTY_LIST;
                }
                ((XSAttributeUseImpl)object).fAnnotations = xSObjectListImpl;
            }
        }
        if (string != null && string2 != null) {
            this.reportSchemaError("src-attribute.1", new Object[]{string3}, element);
        }
        if (n == 1 && xInt != null && xInt.intValue() != 0) {
            this.reportSchemaError("src-attribute.2", new Object[]{string3}, element);
            ((XSAttributeUseImpl)object).fUse = 0;
        }
        if (string != null && object != null) {
            this.fValidationState.setNamespaceSupport(xSDocumentInfo.fNamespaceSupport);
            try {
                this.checkDefaultValid((XSAttributeUseImpl)object);
            }
            catch (InvalidDatatypeValueException invalidDatatypeValueException) {
                this.reportSchemaError(invalidDatatypeValueException.getKey(), invalidDatatypeValueException.getArgs(), element);
                this.reportSchemaError("a-props-correct.2", new Object[]{string3, string}, element);
                ((XSAttributeUseImpl)object).fDefault = null;
                ((XSAttributeUseImpl)object).fConstraintType = 0;
            }
            if (((XSSimpleType)xSAttributeDecl.getTypeDefinition()).isIDType()) {
                this.reportSchemaError("a-props-correct.3", new Object[]{string3}, element);
                ((XSAttributeUseImpl)object).fDefault = null;
                ((XSAttributeUseImpl)object).fConstraintType = 0;
            }
            if (!(((XSAttributeUseImpl)object).fAttrDecl.getConstraintType() != 2 || ((XSAttributeUseImpl)object).fConstraintType == 0 || ((XSAttributeUseImpl)object).fConstraintType == 2 && ((XSAttributeUseImpl)object).fAttrDecl.getValInfo().actualValue.equals(((XSAttributeUseImpl)object).fDefault.actualValue))) {
                this.reportSchemaError("au-props-correct.2", new Object[]{string3, ((XSAttributeUseImpl)object).fAttrDecl.getValInfo().stringValue()}, element);
                ((XSAttributeUseImpl)object).fDefault = ((XSAttributeUseImpl)object).fAttrDecl.getValInfo();
                ((XSAttributeUseImpl)object).fConstraintType = (short)2;
            }
        }
        this.fAttrChecker.returnAttrArray(objectArray, xSDocumentInfo);
        return object;
    }
 -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void -> java.lang.String.startsWith(java.lang.String): boolean -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.Object.toString(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.StringBuffer.toString(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.hashCode(): int -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.Boolean.booleanValue(): boolean
 [CALL] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean [CALL] [CALL] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object [CALL] -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void [EXIT] -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.String.startsWith(java.lang.String): boolean [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] -> java.lang.Object.toString(): java.lang.String [CALL] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.String.charAt(int): char -> java.lang.StringBuffer.append(char): java.lang.StringBuffer -> java.lang.StringBuffer.toString(): java.lang.String [EXIT] [EXIT] [CALL] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.String.startsWith(java.lang.String): boolean [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.Boolean.booleanValue(): boolean [EXIT] [EXIT]