private void closeAllEnvironments() {
    while (!fEnvironments.isEmpty()) {
      LinkedModeModel env = (LinkedModeModel) fEnvironments.pop();
      env.exit(ILinkedModeListener.NONE);
    }

    removeManager();
  }
  /**
   * Notify the manager about a leaving model.
   *
   * @param model the model to nest
   * @param flags the reason and commands for leaving linked mode
   */
  private void left(LinkedModeModel model, int flags) {
    if (!fEnvironments.contains(model)) return;

    while (!fEnvironments.isEmpty()) {
      LinkedModeModel env = (LinkedModeModel) fEnvironments.pop();
      if (env == model) break;
      env.exit(ILinkedModeListener.NONE);
    }

    if (fEnvironments.isEmpty()) {
      removeManager();
    }
  }