sinterface PossiblyPureMap extends Map { // these methods may return the map itself or a modified copy Map putWithIdentityChange(A key, B value); Map removeWithIdentityChange(O key); }