return dataObject;
EObject oldDataObject = EcoreUtil.copy((EObject)dataObject);
for (Iterator fIter = changes.iterator(); fIter.hasNext(); )
{
FeatureChange featureChange = (FeatureChange)fIter.next();
featureChange.apply(oldDataObject);
EStructuralFeature feature = featureChange.getFeature();
if (FeatureMapUtil.isFeatureMap(feature))
{
FeatureMap featureMap = (FeatureMap) oldDataObject.eGet(feature);
for (int index = featureMap.size(); index != 0;)