code: function(fn, includeSelf, _recursion) {
  			var dfd,
  				res,
  				loaders,
  				node = this;
  
  			// node.debug("visitAndLoad");
  			if (fn && includeSelf === true) {
  				res = fn(node);
  				if (res === false || res === "skip") {
  					return _recursion ? res : _getResolvedPromise();
  				}
  			}
  			if (!node.children && !node.lazy) {
  				return _getResolvedPromise();
  			}
  			dfd = new $.Deferred();
  			loaders = [];
  			// node.debug("load()...");
  			node.load().done(function() {
  				// node.debug("load()... done.");
  				for (var i = 0, l = node.children.length; i < l; i++) {
  					res = node.children[i].visitAndLoad(fn, true, true);
  					if (res === false) {
  						dfd.reject();
  						break;
  					} else if (res !== "skip") {
  						loaders.push(res); // Add promise to the list
  					}
  				}
  				$.when.apply(this, loaders).then(function() {
  					dfd.resolve();
  				});
  			});
  			return dfd.promise();
  		}
docs: Call fn(node) for all child nodes and recursively load lazy children.<br>
  <b>Note:</b> If you need this method, you probably should consider to review
  your architecture! Recursivley loading nodes is a perfect way for lazy
  programmers to flood the server with requests ;-)
  
  @param {function} [fn] optional callback function.
  Return false to stop iteration, return "skip" to skip this node and
  its children only.
  @param {boolean} [includeSelf=false]
  @returns {$.Promise}
  @since 2.4