Reimplement previousVisiblePosition() as previousVisibleBoundary()
and nextVisiblePosition() as nextVisibleBoundary()