in mapper/src/main/java/jetbrains/jetpad/mapper/ByTargetIndex.java [35:61]
public ByTargetIndex(MappingContext ctx) {
for (Mapper<?, ?> mapper : ctx.getMappers()) {
if (mapper.isFindable()) {
myTargetToMappers.put(mapper.getTarget(), mapper);
}
}
myRegistration = ctx.addListener(new MappingContextListener() {
@Override
public void onMapperRegistered(Mapper<?, ?> mapper) {
if (!mapper.isFindable()) return;
myTargetToMappers.put(mapper.getTarget(), mapper);
}
@Override
public void onMapperUnregistered(Mapper<?, ?> mapper) {
if (!mapper.isFindable()) return;
Object target = mapper.getTarget();
if (!myTargetToMappers.get(target).contains(mapper)) {
throw new IllegalStateException("unregistered mapper " + mapper + " with target " + target);
}
myTargetToMappers.get(target).remove(mapper);
}
});
}