whole_func_string: function (tree) {
  	var plugs = tree.plugins,
  		dependencies = [],
  		i;
  
  	// get an array with dependency names from all plugins
  	for (i in plugs) {
  		plugs[i].dependencies.forEach( function (name) {
  			dependencies.push( name );
  		});
  	}
  	// search irresolvable plugins
  	var missingDependencies = [];
  	dependencies.forEach( function (el) {
  		if (!tree.plugins[el]) {
  			if (!tree.groups[el] && el !== 'wtDone') {
  				missingDependencies.push( el );
  			}
  		}
  	});
  	if (missingDependencies.length) {
  		return missingDependencies;
  	}
  	return false;
  }
func_code_string: function (tree) {
  	var plugs = tree.plugins,
  		dependencies = [],
  		i;
  
  	// get an array with dependency names from all plugins
  	for (i in plugs) {
  		plugs[i].dependencies.forEach( function (name) {
  			dependencies.push( name );
  		});
  	}
  	// search irresolvable plugins
  	var missingDependencies = [];
  	dependencies.forEach( function (el) {
  		if (!tree.plugins[el]) {
  			if (!tree.groups[el] && el !== 'wtDone') {
  				missingDependencies.push( el );
  			}
  		}
  	});
  	if (missingDependencies.length) {
  		return missingDependencies;
  	}
  	return false;
  }
func_documentation_string: ---   PRIVATE METHODS   --- /*!
  Detect if any plugin has an irresolvable dependency
  @param  {Object} tree target tree
  @return {Array}      list of missing dependencies