@Override
protected EObject validateCreateObjectFromFactory(EFactory factory,
String typeName, EObject newObject, EStructuralFeature feature) {
if (!(objects.peek() instanceof AnyType) && newObject != null
&& newObject.eIsProxy() && !sameDocumentProxies.contains(newObject)) {
URI proxyURI = ((InternalEObject) newObject).eProxyURI();
Map<String, EObject> typeNamesToProxies = urisToProxies
.get(proxyURI);
if (typeNamesToProxies == null) {
urisToProxies.put(proxyURI,
typeNamesToProxies = new HashMap<String, EObject>());
}
EObject proxy = typeNamesToProxies.get(typeName);
if (proxy == null) {
typeNamesToProxies.put(typeName, proxy = newObject);
}
newObject = proxy;
}
return super.validateCreateObjectFromFactory(factory, typeName,
newObject, feature);
}