private void findNextNode() {
      MAIN_LOOP: while (!myCurrentNodePath.isEmpty()) {
        final PathElement<T> element = myCurrentNodePath.peek();
        final Iterator<String> childrenIterator = element.iterator;
        final Node<T> currentNode = element.node;
        while (childrenIterator.hasNext()) {
          final String name = childrenIterator.next();
          final Node<T> childNode = currentNode.myChildren.get(name);
          if (pushNode(name, childNode)) {
            continue MAIN_LOOP;
          }
        }
        if (!currentNode.mappingExists()) {
          popNode();
        }
        else {
          break;
        }
      }
    }
private void findNextNode()