for(Box cur = this; cur != null; cur = cur.getParent()) {
w = min(x + w, cur.pos(0) + cur.size(0)) - max(x, cur.pos(0));
h = min(y + h, cur.pos(1) + cur.size(1)) - max(y, cur.pos(1));
for(Box cur = this; cur != null; cur = cur.getParent()) {
w = min(x + w, cur.pos(0) + cur.size(0)) - max(x, cur.pos(0));
h = min(y + h, cur.pos(1) + cur.size(1)) - max(y, cur.pos(1));