org_eclipse_lemminx_extensions_contentmodel_XMLValidationPoolCacheTest_java
org.apache.xerces.impl.xs.traversers.XSDHandler
protected XSDocumentInfo constructTrees(Element element, String string, XSDDescription xSDDescription, boolean bl) {
        Object object;
        if (element == null) {
            return null;
        }
        String string2 = xSDDescription.getTargetNamespace();
        short s = xSDDescription.getContextType();
        XSDocumentInfo xSDocumentInfo = null;
        try {
            xSDocumentInfo = new XSDocumentInfo(element, this.fAttributeChecker, this.fSymbolTable);
        }
        catch (XMLSchemaException xMLSchemaException) {
            this.reportSchemaError(ELE_ERROR_CODES[s], new Object[]{string}, element);
            return null;
        }
        if (xSDocumentInfo.fTargetNamespace != null && xSDocumentInfo.fTargetNamespace.length() == 0) {
            this.reportSchemaWarning("EmptyTargetNamespace", new Object[]{string}, element);
            xSDocumentInfo.fTargetNamespace = null;
        }
        if (string2 != null) {
            int n = 0;
            if (s == 0 || s == 1) {
                if (xSDocumentInfo.fTargetNamespace == null) {
                    xSDocumentInfo.fTargetNamespace = string2;
                    xSDocumentInfo.fIsChameleonSchema = true;
                } else if (string2 != xSDocumentInfo.fTargetNamespace) {
                    this.reportSchemaError(NS_ERROR_CODES[s][n], new Object[]{string2, xSDocumentInfo.fTargetNamespace}, element);
                    return null;
                }
            } else if (s != 3 && string2 != xSDocumentInfo.fTargetNamespace) {
                this.reportSchemaError(NS_ERROR_CODES[s][n], new Object[]{string2, xSDocumentInfo.fTargetNamespace}, element);
                return null;
            }
        } else if (xSDocumentInfo.fTargetNamespace != null) {
            if (s == 3) {
                xSDDescription.setTargetNamespace(xSDocumentInfo.fTargetNamespace);
                string2 = xSDocumentInfo.fTargetNamespace;
            } else {
                int n = 1;
                this.reportSchemaError(NS_ERROR_CODES[s][n], new Object[]{string2, xSDocumentInfo.fTargetNamespace}, element);
                return null;
            }
        }
        xSDocumentInfo.addAllowedNS(xSDocumentInfo.fTargetNamespace);
        SchemaGrammar schemaGrammar = null;
        if (bl) {
            object = this.fGrammarBucket.getGrammar(xSDocumentInfo.fTargetNamespace);
            if (((SchemaGrammar)object).isImmutable()) {
                schemaGrammar = new SchemaGrammar((SchemaGrammar)object);
                this.fGrammarBucket.putGrammar(schemaGrammar);
                this.updateImportListWith(schemaGrammar);
            } else {
                schemaGrammar = object;
            }
            this.updateImportListFor(schemaGrammar);
        } else if (s == 0 || s == 1) {
            schemaGrammar = this.fGrammarBucket.getGrammar(xSDocumentInfo.fTargetNamespace);
        } else if (this.fHonourAllSchemaLocations && s == 2) {
            schemaGrammar = this.findGrammar(xSDDescription, false);
            if (schemaGrammar == null) {
                schemaGrammar = new SchemaGrammar(xSDocumentInfo.fTargetNamespace, xSDDescription.makeClone(), this.fSymbolTable);
                this.fGrammarBucket.putGrammar(schemaGrammar);
            }
        } else {
            schemaGrammar = new SchemaGrammar(xSDocumentInfo.fTargetNamespace, xSDDescription.makeClone(), this.fSymbolTable);
            this.fGrammarBucket.putGrammar(schemaGrammar);
        }
        schemaGrammar.addDocument(null, (String)this.fDoc2SystemId.get(xSDocumentInfo.fSchemaElement));
        this.fDoc2XSDocumentMap.put(element, xSDocumentInfo);
        object = new Vector();
        Element element2 = element;
        Element element3 = null;
        Element element4 = DOMUtil.getFirstChildElement(element2);
        while (element4 != null) {
            block56: {
                Object object2;
                boolean bl2;
                String string3;
                String string4;
                block63: {
                    Object object3;
                    Object object4;
                    short s2;
                    String string5;
                    block66: {
                        Element element5;
                        block64: {
                            String string6;
                            block65: {
                                block57: {
                                    block61: {
                                        block62: {
                                            String string7;
                                            block60: {
                                                block59: {
                                                    block58: {
                                                        string5 = null;
                                                        string4 = null;
                                                        string3 = DOMUtil.getLocalName(element4);
                                                        s2 = -1;
                                                        bl2 = false;
                                                        if (string3.equals(SchemaSymbols.ELT_ANNOTATION)) break block56;
                                                        if (!string3.equals(SchemaSymbols.ELT_IMPORT)) break block57;
                                                        s2 = 2;
                                                        object2 = this.fAttributeChecker.checkAttributes(element4, true, xSDocumentInfo);
                                                        string4 = (String)object2[XSAttributeChecker.ATTIDX_SCHEMALOCATION];
                                                        string5 = (String)object2[XSAttributeChecker.ATTIDX_NAMESPACE];
                                                        if (string5 != null) {
                                                            string5 = this.fSymbolTable.addSymbol(string5);
                                                        }
                                                        if ((element5 = DOMUtil.getFirstChildElement(element4)) != null) {
                                                            string7 = DOMUtil.getLocalName(element5);
                                                            if (string7.equals(SchemaSymbols.ELT_ANNOTATION)) {
                                                                schemaGrammar.addAnnotation(this.fElementTraverser.traverseAnnotationDecl(element5, (Object[])object2, true, xSDocumentInfo));
                                                            } else {
                                                                this.reportSchemaError("s4s-elt-must-match.1", new Object[]{string3, "annotation?", string7}, element4);
                                                            }
                                                            if (DOMUtil.getNextSiblingElement(element5) != null) {
                                                                this.reportSchemaError("s4s-elt-must-match.1", new Object[]{string3, "annotation?", DOMUtil.getLocalName(DOMUtil.getNextSiblingElement(element5))}, element4);
                                                            }
                                                        } else {
                                                            string7 = DOMUtil.getSyntheticAnnotation(element4);
                                                            if (string7 != null) {
                                                                schemaGrammar.addAnnotation(this.fElementTraverser.traverseSyntheticAnnotation(element4, string7, (Object[])object2, true, xSDocumentInfo));
                                                            }
                                                        }
                                                        this.fAttributeChecker.returnAttrArray((Object[])object2, xSDocumentInfo);
                                                        if (string5 != xSDocumentInfo.fTargetNamespace) break block58;
                                                        this.reportSchemaError(string5 != null ? "src-import.1.1" : "src-import.1.2", new Object[]{string5}, element4);
                                                        break block56;
                                                    }
                                                    if (!xSDocumentInfo.isAllowedNS(string5)) break block59;
                                                    if (this.fHonourAllSchemaLocations || this.fNamespaceGrowth) break block60;
                                                    break block56;
                                                }
                                                xSDocumentInfo.addAllowedNS(string5);
                                            }
                                            if ((object4 = (Vector)this.fImportMap.get(string7 = this.null2EmptyString(xSDocumentInfo.fTargetNamespace))) == null) {
                                                this.fAllTNSs.addElement(string7);
                                                object4 = new Vector<String>();
                                                this.fImportMap.put(string7, object4);
                                                ((Vector)object4).addElement(string5);
                                            } else if (!((Vector)object4).contains(string5)) {
                                                ((Vector)object4).addElement(string5);
                                            }
                                            this.fSchemaGrammarDescription.reset();
                                            this.fSchemaGrammarDescription.setContextType((short)2);
                                            this.fSchemaGrammarDescription.setBaseSystemId(this.doc2SystemId(element));
                                            this.fSchemaGrammarDescription.setLiteralSystemId(string4);
                                            this.fSchemaGrammarDescription.setLocationHints(new String[]{string4});
                                            this.fSchemaGrammarDescription.setTargetNamespace(string5);
                                            object3 = this.findGrammar(this.fSchemaGrammarDescription, this.fNamespaceGrowth);
                                            if (object3 == null) break block61;
                                            if (!this.fNamespaceGrowth) break block62;
                                            try {
                                                if (!((SchemaGrammar)object3).getDocumentLocations().contains(XMLEntityManager.expandSystemId(string4, this.fSchemaGrammarDescription.getBaseSystemId(), false))) {
                                                    bl2 = true;
                                                }
                                                break block56;
                                            }
                                            catch (URI.MalformedURIException malformedURIException) {}
                                            break block61;
                                        }
                                        if (!this.fHonourAllSchemaLocations || this.isExistingGrammar(this.fSchemaGrammarDescription, false)) break block56;
                                    }
                                    element3 = this.resolveSchema(this.fSchemaGrammarDescription, false, element4, object3 == null);
                                    break block63;
                                }
                                if (!string3.equals(SchemaSymbols.ELT_INCLUDE) && !string3.equals(SchemaSymbols.ELT_REDEFINE)) break;
                                object2 = this.fAttributeChecker.checkAttributes(element4, true, xSDocumentInfo);
                                string4 = (String)object2[XSAttributeChecker.ATTIDX_SCHEMALOCATION];
                                if (string3.equals(SchemaSymbols.ELT_REDEFINE)) {
                                    this.fRedefine2NSSupport.put(element4, new SchemaNamespaceSupport(xSDocumentInfo.fNamespaceSupport));
                                }
                                if (!string3.equals(SchemaSymbols.ELT_INCLUDE)) break block64;
                                element5 = DOMUtil.getFirstChildElement(element4);
                                if (element5 == null) break block65;
                                string6 = DOMUtil.getLocalName(element5);
                                if (string6.equals(SchemaSymbols.ELT_ANNOTATION)) {
                                    schemaGrammar.addAnnotation(this.fElementTraverser.traverseAnnotationDecl(element5, (Object[])object2, true, xSDocumentInfo));
                                } else {
                                    this.reportSchemaError("s4s-elt-must-match.1", new Object[]{string3, "annotation?", string6}, element4);
                                }
                                if (DOMUtil.getNextSiblingElement(element5) != null) {
                                    this.reportSchemaError("s4s-elt-must-match.1", new Object[]{string3, "annotation?", DOMUtil.getLocalName(DOMUtil.getNextSiblingElement(element5))}, element4);
                                }
                                break block66;
                            }
                            string6 = DOMUtil.getSyntheticAnnotation(element4);
                            if (string6 == null) break block66;
                            schemaGrammar.addAnnotation(this.fElementTraverser.traverseSyntheticAnnotation(element4, string6, (Object[])object2, true, xSDocumentInfo));
                            break block66;
                        }
                        element5 = DOMUtil.getFirstChildElement(element4);
                        while (element5 != null) {
                            String string8 = DOMUtil.getLocalName(element5);
                            if (string8.equals(SchemaSymbols.ELT_ANNOTATION)) {
                                schemaGrammar.addAnnotation(this.fElementTraverser.traverseAnnotationDecl(element5, (Object[])object2, true, xSDocumentInfo));
                                DOMUtil.setHidden(element5, this.fHiddenNodes);
                            } else {
                                object4 = DOMUtil.getSyntheticAnnotation(element4);
                                if (object4 != null) {
                                    schemaGrammar.addAnnotation(this.fElementTraverser.traverseSyntheticAnnotation(element4, (String)object4, (Object[])object2, true, xSDocumentInfo));
                                }
                            }
                            element5 = DOMUtil.getNextSiblingElement(element5);
                        }
                    }
                    this.fAttributeChecker.returnAttrArray((Object[])object2, xSDocumentInfo);
                    if (string4 == null) {
                        this.reportSchemaError("s4s-att-must-appear", new Object[]{"<include> or <redefine>", "schemaLocation"}, element4);
                    }
                    boolean bl3 = false;
                    s2 = 0;
                    if (string3.equals(SchemaSymbols.ELT_REDEFINE)) {
                        bl3 = this.nonAnnotationContent(element4);
                        s2 = 1;
                    }
                    this.fSchemaGrammarDescription.reset();
                    this.fSchemaGrammarDescription.setContextType(s2);
                    this.fSchemaGrammarDescription.setBaseSystemId(this.doc2SystemId(element));
                    this.fSchemaGrammarDescription.setLocationHints(new String[]{string4});
                    this.fSchemaGrammarDescription.setTargetNamespace(string2);
                    boolean bl4 = false;
                    object4 = this.resolveSchemaSource(this.fSchemaGrammarDescription, bl3, element4, true);
                    if (this.fNamespaceGrowth && s2 == 0) {
                        try {
                            object3 = XMLEntityManager.expandSystemId(((XMLInputSource)object4).getSystemId(), ((XMLInputSource)object4).getBaseSystemId(), false);
                            bl4 = schemaGrammar.getDocumentLocations().contains((String)object3);
                        }
                        catch (URI.MalformedURIException malformedURIException) {
                            // empty catch block
                        }
                    }
                    if (!bl4) {
                        element3 = this.resolveSchema((XMLInputSource)object4, this.fSchemaGrammarDescription, bl3, element4);
                        string5 = xSDocumentInfo.fTargetNamespace;
                    } else {
                        this.fLastSchemaWasDuplicate = true;
                    }
                }
                object2 = null;
                object2 = this.fLastSchemaWasDuplicate ? (element3 == null ? null : (XSDocumentInfo)this.fDoc2XSDocumentMap.get(element3)) : this.constructTrees(element3, string4, this.fSchemaGrammarDescription, bl2);
                if (string3.equals(SchemaSymbols.ELT_REDEFINE) && object2 != null) {
                    this.fRedefine2XSDMap.put(element4, object2);
                }
                if (element3 != null) {
                    if (object2 != null) {
                        ((Vector)object).addElement(object2);
                    }
                    element3 = null;
                }
            }
            element4 = DOMUtil.getNextSiblingElement(element4);
        }
        this.fDependencyMap.put(xSDocumentInfo, object);
        return xSDocumentInfo;
    }
 -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.hashCode(): int -> java.lang.String.intern(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.getChars(int,int,char[],int): void -> java.lang.String.hashCode(): int -> java.lang.String.intern(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.getChars(int,int,char[],int): void -> java.lang.String.length(): int -> 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.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.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.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.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.util.Vector.addElement(java.lang.Object): void -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.util.Vector.addElement(java.lang.Object): void -> java.util.Vector.addElement(java.lang.Object): void -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object -> 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.put(java.lang.Object,java.lang.Object): java.lang.Object
 [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [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] [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] [CALL] -> java.lang.String.intern(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.getChars(int,int,char[],int): void [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] [CALL] -> java.lang.String.intern(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.getChars(int,int,char[],int): void [EXIT] [EXIT] [EXIT] -> java.lang.String.length(): int [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.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] [CALL] [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 [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 [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> 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 [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] -> java.util.Vector.addElement(java.lang.Object): void [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object [CALL] -> java.util.Vector.addElement(java.lang.Object): void -> java.util.Vector.addElement(java.lang.Object): void [EXIT] -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [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 -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT]