EObject key = get_key(obj);
IMapEntry candidateEntry = map.entryAt(key);
if (candidateEntry == null) return null;
EObject candidate = (EObject)candidateEntry.val();
if (candidate != null && obj.equalsExactly(candidate)) {
try {
map = map.without(key);
set(map);
} catch (Exception e) {