@Override
  public @NotNull ActionCallback setSelectedContent(final @NotNull Content content, final boolean requestFocus, final boolean forcedFocus, boolean implicit) {
    mySelectionHistory.remove(content);
    mySelectionHistory.add(0, content);
    if (isSelected(content) && requestFocus) {
      requestFocusWithFallback(content);
      return ActionCallback.DONE;
    }

    if (!checkSelectionChangeShouldBeProcessed(content, implicit)) {
      return ActionCallback.REJECTED;
    }
    if (!contents.contains(content)) {
      for (ContentManagerImpl manager : myNestedManagers) {
        ActionCallback nestedCallback = manager.setSelectedContent(content, requestFocus, forcedFocus, implicit);
        if (nestedCallback != ActionCallback.REJECTED) return nestedCallback;
      }
      return ActionCallback.REJECTED;
    }

    final boolean focused = isSelectionHoldsFocus();

    final Content[] old = getSelectedContents();

    if (myDisposed || getIndexOfContent(content) == -1) return ActionCallback.REJECTED;

    for (Content each : old) {
      removeFromSelection(each);
    }

    addSelectedContent(content);

    if (requestFocus || focused) {
      requestFocusWithFallback(content);
    }
    return ActionCallback.DONE;
  }
@Override
  public @NotNull ActionCallback setSelectedContent(final @NotNull Content content, final boolean requestFocus, final boolean forcedFocus, boolean implicit)