}
metaInfHolder.setUnion(true);
} else if (content instanceof XmlSchemaSimpleTypeList) {
XmlSchemaSimpleTypeList simpleTypeList = (XmlSchemaSimpleTypeList) content;
QName itemTypeQName = simpleTypeList.getItemTypeName();
if (itemTypeQName != null) {
if (!isAlreadyProcessed(itemTypeQName)) {
XmlSchema resolvedSchema = getParentSchema(parentSchema, itemTypeQName, COMPONENT_TYPE);
if (resolvedSchema == null) {
throw new SchemaCompilationException("can not find the type " + itemTypeQName +
" from the parent type " + parentSchema.getTargetNamespace());
} else {
XmlSchemaType simpleSchemaType = resolvedSchema.getTypeByName(itemTypeQName);
if (simpleSchemaType instanceof XmlSchemaSimpleType) {
processSimpleSchemaType((XmlSchemaSimpleType) simpleSchemaType, null, resolvedSchema, null);
}
}
}
} else {
XmlSchemaSimpleType listSimpleType = simpleTypeList.getItemType();
itemTypeQName = listSimpleType.getQName();
if (itemTypeQName == null) {
// we create a fake Qname for all these simple types since most propably they don't have one
itemTypeQName = new QName(parentSimpleTypeQname.getNamespaceURI(), parentSimpleTypeQname.getLocalPart() + "_type0");
}