/** Make the given child the new parent. */
  public void enterChild(int index) {
    currentChild = currentParent.getChild();
    while ((currentChild != null) && (index != 0)) {
      index--;
      currentChild = currentChild.getSibling();
    }

    if (currentChild != null) {
      currentParent = currentChild;
      currentChild = currentParent.getChild();
    }
  }
 public float getCurrentParentTotalTime() {
   return currentParent.getTotalTime();
 }
 public int getCurrentParentTotalCalls() {
   return currentParent.getTotalCalls();
 }
 public String getCurrentParentName() {
   return currentParent.getName();
 }
 public float getCurrentTotalTime() {
   return currentChild.getTotalTime();
 }
 public int getCurrentTotalCalls() {
   return currentChild.getTotalCalls();
 }
 public String getCurrentName() {
   return currentChild.getName();
 }
 /** Make the current parent's parent the new parent. */
 public void enterParent() {
   if (currentParent.getParent() != null) {
     currentParent = currentParent.getParent();
   }
   currentChild = currentParent.getChild();
 }
 public boolean isRoot() {
   return (currentParent.getParent() == null);
 }
 public void next() {
   currentChild = currentChild.getSibling();
 }
 public void first() {
   currentChild = currentParent.getChild();
 }
 CProfileIterator(CProfileNode start) {
   currentParent = start;
   currentChild = currentParent.getChild();
 }