Is there a good/strong reason why PageViewport and Page are defined as subclasses of AreaTreeObject rather than Area? In my recent work to add full support for the writing-system trait, I found it to be more consistent to redefine these as subclasses of Area. After all, the XSL-FO spec defines them as a viewport/reference area pair as generated by fo:page-sequence, so notionally speaking, they should be first class areas.
By the way, changing them to Area did not produce any regression in the junit tests, so it does not seem a breaking change at first order. Regards, Glenn