Right now, Position, VisiblePosition, and TextIterator each implements a logic to walk DOM tree visually. Each one provides slightly different functionality and each has its own quirks. Because we have lot of inconsistencies and interdependencies, it has been a burden on people working on editing code. We should cleanup these 3 classes in addition to functions provided in visible_units.cpp for Position/VisiblePosition.