Index: codegen/src/main/java/org/exolab/castor/builder/descriptors/DescriptorSourceFactory.java =================================================================== --- codegen/src/main/java/org/exolab/castor/builder/descriptors/DescriptorSourceFactory.java (Revision 6929) +++ codegen/src/main/java/org/exolab/castor/builder/descriptors/DescriptorSourceFactory.java (Arbeitskopie) @@ -245,8 +245,10 @@ if (base != null) { String baseNodeName = member.getNodeName(); - if (baseNodeName.equals(XMLInfo.CHOICE_NODE_NAME_ERROR_INDICATION)) { + if (baseNodeName == null) { createDescriptor(classDesc, member, localClassName, nsURI, jsc); + } else if (baseNodeName.equals(XMLInfo.CHOICE_NODE_NAME_ERROR_INDICATION)) { + createDescriptor(classDesc, member, localClassName, nsURI, jsc); } else { if (base.getElementField(baseNodeName) != null) { createRestrictedDescriptor(member, jsc); Index: codegen/src/main/java/org/exolab/castor/builder/factory/SourceFactory.java =================================================================== --- codegen/src/main/java/org/exolab/castor/builder/factory/SourceFactory.java (Revision 6929) +++ codegen/src/main/java/org/exolab/castor/builder/factory/SourceFactory.java (Arbeitskopie) @@ -1974,7 +1974,7 @@ case XMLInfo.ELEMENT_TYPE: String baseNodeName = fieldInfo.getNodeName(); // TODO[WG]: replace this eror check with something more meaningful - if (!(baseNodeName.equals(XMLInfo.CHOICE_NODE_NAME_ERROR_INDICATION))) { + if (baseNodeName != null && !(baseNodeName.equals(XMLInfo.CHOICE_NODE_NAME_ERROR_INDICATION))) { present = (base.getElementField(baseNodeName) != null); } break;