docs: function(inChild) {
  		// allow delegating the child to a different container
  		if (this.controlParent /*&& !inChild.isChrome*/) {
  			// this.controlParent might have a controlParent, and so on; seek the ultimate parent
  			this.controlParent.addChild(inChild);
  		} else {
  			// NOTE: addChild drives setParent.
  			// It's the opposite for setContainer, where containerChanged (in Containable)
  			// drives addControl.
  			// Because of the way 'parent' is derived from 'container', this difference is
  			// helpful for implementing controlParent.
  			// By the same token, since 'parent' is derived from 'container', setParent is
  			// not intended to be called by client code. Therefore, the lack of parallelism
  			// should be private to this implementation.
  			// Set the child's parent property to this
  			inChild.setParent(this);
  			// track in children array
  			this.children[this.prepend ? "unshift" : "push"](inChild);
  			/*
  			// FIXME: hacky, allows us to reparent a rendered control; we need better API for dynamic reparenting
  			if (inChild.hasNode()) {
  				inChild[this.prepend ? "_prepend" : "_append"]();
  			}
  			*/
  		}
  	}