private void restoreChildren(
     final XDebuggerTreeNode treeNode, final XDebuggerTreeState.NodeInfo nodeInfo) {
   if (nodeInfo.isExpanded()) {
     myTree.expandPath(treeNode.getPath());
     List<? extends XDebuggerTreeNode> children = treeNode.getLoadedChildren();
     if (children != null) {
       for (XDebuggerTreeNode child : children) {
         restoreNode(child, nodeInfo);
       }
     }
     myNode2State.put(treeNode, nodeInfo);
   }
 }
 public void childrenLoaded(
     @NotNull final XDebuggerTreeNode node,
     @NotNull final List<XValueContainerNode<?>> children,
     final boolean last) {
   XDebuggerTreeState.NodeInfo nodeInfo = myNode2State.get(node);
   if (nodeInfo != null) {
     for (XDebuggerTreeNode child : children) {
       restoreNode(child, nodeInfo);
     }
   }
   if (last) {
     myNode2State.remove(node);
     disposeIfFinished();
   }
 }