private void addEditorPartStack(
      final PartPresenter part,
      final EditorPartStack relativePartStack,
      final Constraints constraints) {
    final EditorPartStack editorPartStack = editorPartStackFactory.create();
    partStackPresenters.add(editorPartStack);

    view.addPartStack(editorPartStack, relativePartStack, constraints);
    editorPartStack.addPart(part);
  }
  /** {@inheritDoc} */
  @Override
  public void removePart(PartPresenter part) {
    EditorPartStack editorPartStack = getPartStackByPart(part);
    if (editorPartStack == null) {
      return;
    }

    editorPartStack.removePart(part);

    if (editorPartStack.getActivePart() != null) {
      return;
    }

    view.removePartStack(editorPartStack);
    partStackPresenters.remove(editorPartStack);

    if (!partStackPresenters.isEmpty()) {
      EditorPartStack lastStackPresenter = partStackPresenters.getLast();
      lastStackPresenter.openPreviousActivePart();
    }
  }