Layout:

	0123456789ABCDEF0123456789ABCDEF
	[edit0                         ]
	[button0       ][button1       ]
	[button2       ][button3       ]
	[checkbox0            ][b][b][b]	(4, 5, 6)
	[l]									(label0)
	(stretchy space       )+-------+
	(stretchy space       )|       |
	(space   )[b](space   )| area0 |    (7)
	(stretchy space       )|       |
	(stretchy space       )+-------+

The visual layout has to be

	H:|[edit0]|
	H:|[button0(>=0)][button1(==button0)]|
	H:|[button2(>=0)][button3(==button2)]|
	H:|[checkbox0(>=0)][button4][button5][button6]|
	H:|[label0]				(note the lack of trailing |)
	H:|->=0-[button7]->=0-[area0]|
	V:|[edit0][button0][button2][checkbox0][label0]->=0-[button7]->=0-|
	V:|[edit0][button0][button2][checkbox0][label0][area0(>=0)]| (TODO is this one necessary?)

The problem now is that an empty box has to be represented by something. In the above hand-made example (which I have to test; TODO) we worked around the spaces. How do we do the same in code?

The lower part of the box above is itself a single box laid out like so

	hbox0:	[stretchy vbox0][area0]
	vbox0:	[stretchy xbox0][hbox2][stretchy xbox1]
	hbox2:	[stretchy xbox2][button7][stretchy xbox3]
	xbox*:	[empty box]

Do we need to start representing empty boxes using NSViews?