final void detach()

in mapper/src/main/java/jetbrains/jetpad/mapper/Mapper.java [213:245]


  final void detach() {
    if (myMappingContext == null) {
      throw new IllegalStateException();
    }

    try {
      onDetach();
    } catch (Throwable t) {
      ThrowableHandlers.handle(t);
    }

    for (Object part : myParts) {
      if (part instanceof Synchronizer) {
        Synchronizer s = (Synchronizer) part;
        try {
          s.detach();
        } catch (Throwable t) {
          ThrowableHandlers.handle(t);
        }
      }
      if (part instanceof ChildContainer) {
        for (Mapper<?, ?> m : (ChildContainer<?>) part) {
          m.detach();
        }
      }
    }

    myMappingContext.unregister(this);

    myMappingContext = null;
    myState = State.DETACHED;
    myParts = null;
  }