final public boolean isTypeTablesEquivalent(XSElementDecl elementDecl1, XSElementDecl elementDecl2) { boolean typeTablesEquivalent = true; final XSTypeAlternativeImpl[] typeTable1 = elementDecl1.getTypeAlternatives(); final XSTypeAlternativeImpl[] typeTable2 = elementDecl2.getTypeAlternatives(); // if two type tables have different length if (typeTable1.length != typeTable2.length) { typeTablesEquivalent = false; } if (typeTablesEquivalent) { for (int typeAltIdx = 0; typeAltIdx < typeTable1.length; typeAltIdx++) { final XSTypeAlternativeImpl typeAlt1 = typeTable1[typeAltIdx]; final XSTypeAlternativeImpl typeAlt2 = typeTable2[typeAltIdx]; if (!isTypeAlternativesEquivalent(typeAlt1, typeAlt2)) { typeTablesEquivalent = false; break; } } } if (typeTablesEquivalent && !elementDecl1.isTypeTableOK()) { typeTablesEquivalent = isTypeAlternativesEquivalent(elementDecl1.getDefaultTypeDefinition(), elementDecl2.getDefaultTypeDefinition()); } return typeTablesEquivalent; } // isTypeTablesEquivalent
if (!element.isTypeTableOK()) { reportSchemaError("src-element.5", new Object[]{nameAtt}, elmDecl);