protected override void Invoke(ICodeAction action)
        {
            var snapshot   = _document.CurrentSnapshot;
            var oldText    = snapshot.ToSourceText();
            var syntaxTree = action.GetEdit();
            var newText    = syntaxTree.Text;
            var changes    = newText.GetChanges(oldText);

            var textChangeOptions = new TextChangeOptions();

            textChangeOptions.RetainSelection = true;

            var textChange  = _document.CreateTextChange(TextChangeTypes.Custom, textChangeOptions);
            var currentText = oldText;

            foreach (var change in changes)
            {
                var range = currentText.ToRange(change.Span);
                textChange.ReplaceText(range, change.NewText);
                currentText = currentText.WithChanges(change);
            }

            textChange.Apply();
        }