Move code out of PuzzleManager to new Puzzle.getCursorRanges
Replace move with moveToCell and moveInDirection