protected final void restoreLastSelection() {
    final Enumeration enumeration = myRoot.breadthFirstEnumeration();
    boolean selected = false;
    while (enumeration.hasMoreElements()) {
      final MyNode node = (MyNode)enumeration.nextElement();
      if (node instanceof MyRootNode) continue;
      final String path = getNodePathString(node);
      if (!selected && Comparing.strEqual(path, myState.getLastEditedConfigurable())) {
        TreeUtil.selectInTree(node, false, myTree);
        selected = true;
      }
    }
    if (!selected) {
      TreeUtil.promiseSelectFirst(myTree);
    }

    //'updateSelectionFromTree' initializes 'details' components and it may take some time, so if the component isn't showing now
    //  it's better to postpone calling it until 'addNotify' is called; in complex dialog like Project Structure the component may not be shown at all.
    if (myWholePanel != null && myWholePanel.isShowing()) {
      updateSelectionFromTree();
    }
  }
protected final void restoreLastSelection()