[From the LzNode#construct documentation.]
The construct method is also responsible for placing the newly-built view into the appropriate place within its lexical parent's view hierarchy. The process for this is as follows: • First, if the view has an ignoreplacement attribute with a true value, then the view will be placed directly under its lexical parent in all cases. The next steps are skipped. • Second, the placement view name is determined from the first of the following that matches: • Third, if there is no placement view name, the subview is placed within its lexical parent (that is, view.immediateparent = view.parent), and the next steps are skipped. • Fourth, the placement view name is looked up within the lexical parent by calling determinePlacement, and the result is taken as the view's placement view. • If this new placement view is a subview and it has a defaultplacement attribute, determinePlacement is called again. This process is repeated until no defaultplacement attribute is found to ensure that all placement directives are correctly followed.
Why do we need defaultplacement, placement, determineplacement, _and_ ignoreplacement? Couldn't this be a little simpler? And, I can't really understand the second step. What following matches?
