private SDOType processComplexType(String targetNamespace, String defaultNamespace, String name, ComplexType complexType) {
if (complexType == null) {
return null;
}
boolean addedNR = addNextNamespaceResolver(complexType.getAttributesMap());
SDOType newType = startComplexType(targetNamespace, defaultNamespace, name, complexType);
if (newType != null) {
if (complexType.getComplexContent() != null) {
processComplexContent(targetNamespace, defaultNamespace, complexType.getComplexContent(), newType);
finishComplexType(newType);
} else if (complexType.getSimpleContent() != null) {
processSimpleContent(targetNamespace, defaultNamespace, complexType.getSimpleContent(), newType);
finishComplexType(newType);
} else {
if (complexType.getChoice() != null) {
processChoice(targetNamespace, defaultNamespace, newType, complexType.getChoice(), false);
} else if (complexType.getSequence() != null) {
processSequence(targetNamespace, defaultNamespace, newType, complexType.getSequence(), false);
} else if (complexType.getAll() != null) {
processAll(targetNamespace, defaultNamespace, newType, complexType.getAll(), false);
}
processOrderedAttributes(targetNamespace, defaultNamespace, newType, complexType.getOrderedAttributes());
finishComplexType(newType);
}
}
if (addedNR) {
namespaceResolvers.remove(namespaceResolvers.size() - 1);
}
return newType;
}