in mapper/src/main/java/jetbrains/jetpad/mapper/MappingContext.java [71:99]
void unregister(final Mapper<?, ?> mapper) {
if (mapper.isFindable()) {
Object source = mapper.getSource();
if (!myMappers.containsKey(source)) {
throw new IllegalStateException();
}
Object ms = myMappers.get(source);
if (ms instanceof Set) {
@SuppressWarnings("unchecked")
Set<Mapper<?, ?>> mappers = (Set<Mapper<?, ?>>) ms;
mappers.remove(mapper);
if (mappers.size() == 1) {
myMappers.put(source, mappers.iterator().next());
}
} else {
if (ms != mapper) {
throw new IllegalStateException();
}
myMappers.remove(source);
}
}
myListeners.fire(new ListenerCaller<MappingContextListener>() {
@Override
public void call(MappingContextListener l) {
l.onMapperUnregistered(mapper);
}
});
}