Shouldn't it stop one column before `isAtEndOfLine()`?  I got the lastCharIndex logic from `MoveRight`