private void CreateStatement(CSharpElementFactory factory, ICSharpExpression expression)
        {
            var statement           = (IExpressionStatement)factory.CreateStatement("'__' = expression;");
            var propertyDeclaration = factory.CreatePrivatePropertyDeclaration(Context.Type, Context.SuggestedPropertyName);
            var assignment          = (IAssignmentExpression)statement.Expression;

            assignment.SetSource(expression);

            var psiServices       = expression.GetPsiServices();
            var suggestionManager = psiServices.Naming.Suggestion;
            var classDeclaration  = Context.ParameterDeclaration.GetContainingNode <IClassDeclaration>().NotNull();

            var suggestion = suggestionManager.CreateEmptyCollection(
                PluralityKinds.Unknown, expression.Language, true, expression);

            suggestion.Add(expression, new EntryOptions
            {
                SubrootPolicy          = SubrootPolicy.Decompose,
                PredefinedPrefixPolicy = PredefinedPrefixPolicy.Remove
            });

            suggestion.Prepare(propertyDeclaration.DeclaredElement, new SuggestionOptions
            {
                UniqueNameContext = (ITreeNode)classDeclaration.Body ?? classDeclaration
            });

            propertyDeclaration.SetName(suggestion.FirstName());

            var memberAnchor = GetAnchorMember(classDeclaration.MemberDeclarations.ToList());

            classDeclaration.AddClassMemberDeclarationAfter(propertyDeclaration, (IClassMemberDeclaration)memberAnchor);

            var languageHelper =
                LanguageManager.Instance.TryGetService <IIntroduceFromParameterLanguageHelper>(
                    Context.Parameter.PresentationLanguage);

            if (languageHelper == null)
            {
                return;
            }

            var anchorInitializationAnchorMember = GetAnchorInitializationAnchorMember(Context.ConstructorDeclaration);

            languageHelper.AddAssignmentToBody(Context.ConstructorDeclaration, anchorInitializationAnchorMember, false,
                                               Context.Parameter, propertyDeclaration.DeclaredName);
        }
        private void CreateStatement(CSharpElementFactory factory, ICSharpExpression expression,
            IPsiSourceFile sourceFile)
        {
            var statement = (IExpressionStatement) factory.CreateStatement("'__' = expression;");
            var propertyDeclaration = factory.CreatePrivatePropertyDeclaration(Context.Type,
                Context.SuggestedPropertyName);
            var assignment = (IAssignmentExpression) statement.Expression;
            assignment.SetSource(expression);
            var psiServices = expression.GetPsiServices();
            var suggestionManager = psiServices.Naming.Suggestion;
            var classDeclaration = Context.ParameterDeclaration.GetContainingNode<IClassDeclaration>().NotNull();

            var suggestion = suggestionManager.CreateEmptyCollection(
                PluralityKinds.Unknown, expression.Language, true, sourceFile);

            suggestion.Add(expression, new EntryOptions
            {
                SubrootPolicy = SubrootPolicy.Decompose,
                PredefinedPrefixPolicy = PredefinedPrefixPolicy.Remove
            });

            suggestion.Prepare(propertyDeclaration.DeclaredElement, new SuggestionOptions
            {
                UniqueNameContext = (ITreeNode) classDeclaration.Body ?? classDeclaration
            });

            propertyDeclaration.SetName(suggestion.FirstName());

            var memberAnchor = GetAnchorMember(classDeclaration.MemberDeclarations.ToList());
            classDeclaration.AddClassMemberDeclarationAfter(propertyDeclaration, (IClassMemberDeclaration) memberAnchor);

            var languageHelper =
                LanguageManager.Instance.TryGetService<IIntroducePrivatePropertyFromParameterLanguageHelper>(
                    Context.Parameter.PresentationLanguage);

            if (languageHelper == null) return;

            var anchorInitializationAnchorMember = GetAnchorInitializationAnchorMember(Context.ConstructorDeclaration);
            languageHelper.AddAssignmentToBody(Context.ConstructorDeclaration, anchorInitializationAnchorMember, false,
                Context.Parameter, propertyDeclaration.DeclaredElement);
        }