code: function(C, action, thisp, results) {
  		results = results || [];
  		action = action || gui.Combo.identity;
  		C.$subclasses.forEach(function(sub) {
  			results.push(action.call(thisp, sub));
  			gui.Class.descendants(sub, action, thisp, results);
  		}, thisp);
  		return results;
  	}
docs: Apply action recursively to all derived subclasses of given class.
  Returns an array of accumulated results. If no action is provided,
  returns array of descendant sublasses.
  @param {function} C constructor
  @param @optional {function} action
  @param @optional {object} thisp
  @param @internal {Array<gui.Class|object>} results
  @returns {Array<gui.Class|object>}