code: private void fillNodeList(P parent) {
  		P prt = parent;
  		if ((prt != null) && (prt.isLeaf())) {
  			return;
  		}
  		while (prt != null) {
  			if (!prt.isLeaf()) {
  				if (!this.expandedNodes.contains(prt)) {
  					this.expandedNodes.add(prt);
  					for (int i = prt.getChildCount() - 1; i >= 0; --i) {
  						final C child = prt.getChildAt(i);
  						if (child != null) {
  							final P cn = toTraversableChild(prt, child);
  							if (cn != null) {
  								this.availableNodes.push(cn);
  							}
  						}
  					}
  				} else {
  					return;
  				}
  			}
  			prt = this.availableNodes.isEmpty() ? null : this.availableNodes.peek();
  			if ((prt != null) && (prt.isLeaf())) {
  				return;
  			}
  		}
  	}
docs: fill the list of the available nodes from the
  specified parent node.
  
  @param parent is the node from which the tree must be explored.