private XmlSchemaType GetEffectiveSchemaType(XmlSchemaElement elem, bool bCreatingNewType) {
XmlSchemaType effectiveSchemaType = null;
if (!bCreatingNewType && elem.ElementSchemaType != null) {
effectiveSchemaType = elem.ElementSchemaType;
}
else { //creating new type, hence look up pre-compiled info
Debug.Assert(elem.ElementDecl == null);
if (elem.SchemaType != null) {
effectiveSchemaType = elem.SchemaType;
}
else if (elem.SchemaTypeName != XmlQualifiedName.Empty) {
effectiveSchemaType = schemaSet.GlobalTypes[elem.SchemaTypeName] as XmlSchemaType;
if (effectiveSchemaType == null) {
effectiveSchemaType = XmlSchemaType.GetBuiltInSimpleType(elem.SchemaTypeName);
}
if (effectiveSchemaType == null) {
effectiveSchemaType = XmlSchemaType.GetBuiltInComplexType(elem.SchemaTypeName);
}
}
}
return effectiveSchemaType;
}
/// <summary>