Also, you should really probably just check `reqWidth === undefined` here. No need to check NaN and null (you could check those when the object is constructed, however).

Also, I'm not sure about the semantics of resize and if we should have objects modifying the rect they are given for resize. I suppose it's fine, everything just gives cloned rects to children anyway. Originally I was going to have the semantics so that modifying the rect meant the child was requesting a different size, but I realize now that isn't really a good idea.