void InternalMoveTo(VirtualSnapshotPoint bufferPosition, PositionAffinity caretAffinity, bool captureHorizontalPosition, bool captureVerticalPosition, bool raiseEvent)
        {
            int requestedPosition          = bufferPosition.Position;
            ITextSnapshotLine snapshotLine = TextEditor.TextSnapshot.GetLineFromPosition(requestedPosition);
            int line = snapshotLine.LineNumber + 1;

            int col;

            if (bufferPosition.IsInVirtualSpace)
            {
                col = bufferPosition.VirtualSpaces;

                if (!TextEditor.Options.TabsToSpaces)
                {
                    col = col / TextEditor.Options.TabSize;
                }
            }
            else
            {
                col = requestedPosition - snapshotLine.Start;
            }

            col += 1;

            TextEditor.SetCaretTo(line, col, false, false);
        }