docs: function(inMessage, inPayload, inSender) {
  		// Note: Controls will generally be both in a $ hash and a child list somewhere.
  		// Attempt to avoid duplicated messages by sending only to components that are not
  		// UiComponent, as those components are guaranteed not to be in a child list.
  		// May cause a problem if there is a scenario where a UiComponent owns a pure 
  		// Component that in turn owns Controls.
  		//
  		// waterfall to all pure components
  		for (var n in this.$) {
  			if (!(this.$[n] instanceof enyo.UiComponent)) {
  				this.$[n].waterfall(inMessage, inPayload, inSender);
  			}
  		}
  		// waterfall to my children
  		for (var i=0, cs=this.children, c; c=cs[i]; i++) {
  			// Do not send {showingOnly: true} events to hidden controls. This flag is set for resize events 
  			// which are broadcast from within the framework. This saves a *lot* of unnecessary layout.
  			// TODO: Maybe remember that we did this, and re-send those messages on setShowing(true)? 
  			// No obvious problems with it as-is, though
  			if (c.showing || !(inPayload && inPayload.showingOnly)) {
  				c.waterfall(inMessage, inPayload, inSender);
  			}
  		}
  	}