The ScrollView class and its various subclasses are complicated and full of special cases to deal with edge cases. We should revisit the design of these classes and try to implement a clearer design.