It's similar but the main difference is that `absolute_right` and `absolute_bottom` in `Dimensions` were calculated, read-only values. Given that `TextBlock` was the only case (to date) that wrote to them, when I was writing it, it seemed better to put the weirdness here rather than folding it back into `Dimensions`.

It doesn't seem hard to fold it back into `Dimensions` if you think it'd be better.