if (recordUnknownFeature)
{
EObject peekObject = objects.peekEObject();
if (!(peekObject instanceof AnyType))
{
AnyType anyType = getExtension(objects.peekEObject());
EStructuralFeature entryFeature =
extendedMetaData.demandFeature(extendedMetaData.getNamespace(feature), extendedMetaData.getName(feature), true);
anyType.getAny().add(entryFeature, newObject);
contextFeature = entryFeature;
}
return newObject;
}
else
{
String namespace = extendedMetaData.getNamespace(feature);
String name = extendedMetaData.getName(feature);
EStructuralFeature wildcardFeature =
extendedMetaData.getElementWildcardAffiliation((objects.peekEObject()).eClass(), namespace, name);
if (wildcardFeature != null)
{
int processingKind = laxWildcardProcessing ? ExtendedMetaData.LAX_PROCESSING : extendedMetaData.getProcessingKind(wildcardFeature);
switch (processingKind)
{
case ExtendedMetaData.LAX_PROCESSING:
case ExtendedMetaData.SKIP_PROCESSING:
{
return newObject;
}
}
}
}
newObject = null;
}
}
}
else if (feature != null && factory != null && extendedMetaData != null)
{
// processing unknown feature with xsi:type (xmi:type)
if (recordUnknownFeature || processAnyXML)
{
EObject result = null;
String namespace = extendedMetaData.getNamespace(factory.getEPackage());
if (namespace == null)
{
usedNullNamespacePackage = true;
}
if (useNewMethods)
{
EClassifier type = extendedMetaData.demandType(namespace, typeName);
result = createObject(type.getEPackage().getEFactoryInstance(), type, false);
}
else
{
factory = extendedMetaData.demandType(namespace, typeName).getEPackage().getEFactoryInstance();
result = createObjectFromFactory(factory, typeName);
}
EObject peekObject = objects.peekEObject();
if (!(peekObject instanceof AnyType))
{
AnyType anyType = getExtension(peekObject);
EStructuralFeature entryFeature =
extendedMetaData.demandFeature(extendedMetaData.getNamespace(feature), extendedMetaData.getName(feature), true);
anyType.getAny().add(entryFeature, result);
contextFeature = entryFeature;
}
return result;
}
else