public void Invoke()
        {
            var classPicker   = new ClassPicker(_snapshot.GetProject(GaugePackage.DTE));
            var selectedClass = string.Empty;

            classPicker.ShowModal();
            selectedClass = classPicker.SelectedClass;

            var containingLine = _trackingSpan.GetStartPoint(_snapshot).GetContainingLine();

            if (_project.GetStepImplementation(containingLine) != null || selectedClass == null)
            {
                return;
            }

            CodeClass    targetClass;
            CodeFunction implementationFunction;
            var          gotImplementation = _stepImplementationGenerator.TryGenerateMethodStub(selectedClass, containingLine,
                                                                                                out targetClass,
                                                                                                out implementationFunction);

            if (!gotImplementation)
            {
                return;
            }

            _project.RefreshImplementations();
            Project.NavigateToFunction(implementationFunction);
            _unimplementedStepTagger.MarkTagImplemented(_span);
            IsEnabled = false;
        }