code: function(fn, opts) {
  			var children,
  				idx,
  				parent,
  				includeHidden = !!opts.includeHidden,
  				node = opts.start || this.rootNode.children[0];
  
  			while (true) {
  				parent = node.parent;
  				children = parent.children;
  
  				if (children[0] === node) {
  					// If this is already the first sibling, goto parent
  					node = parent;
  					children = parent.children;
  				} else {
  					// Otherwise, goto prev. sibling
  					idx = children.indexOf(node);
  					node = children[idx - 1];
  					// If the prev. sibling has children, follow down to last descendant
  					while (
  						(includeHidden || node.expanded) &&
  						node.children &&
  						node.children.length
  					) {
  						children = node.children;
  						parent = node;
  						node = children[children.length - 1];
  					}
  				}
  				// Skip invisible
  				if (!includeHidden && !$(node.span).is(":visible")) {
  					continue;
  				}
  				if (fn(node) === false) {
  					return false;
  				}
  			}
  		}
docs: /* Call fn(node) for all nodes in vertical order, bottom up.