void unregister()

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);
      }
    });
  }