private Diagnostic AnalyzeSyntax(
            SemanticModel semanticModel, CodeStyleOption2 <ExpressionBodyPreference> option,
            LambdaExpressionSyntax declaration, CancellationToken cancellationToken)
        {
            if (CanOfferUseExpressionBody(option.Value, declaration, declaration.GetLanguageVersion()))
            {
                var location = GetDiagnosticLocation(declaration);

                var additionalLocations = ImmutableArray.Create(declaration.GetLocation());
                var properties          = ImmutableDictionary <string, string> .Empty;
                return(DiagnosticHelper.Create(
                           CreateDescriptorWithId(UseExpressionBodyTitle, UseExpressionBodyTitle),
                           location, option.Notification.Severity, additionalLocations, properties));
            }

            if (CanOfferUseBlockBody(semanticModel, option.Value, declaration, cancellationToken))
            {
                // They have an expression body.  Create a diagnostic to convert it to a block
                // if they don't want expression bodies for this member.
                var location = GetDiagnosticLocation(declaration);

                var properties          = ImmutableDictionary <string, string> .Empty;
                var additionalLocations = ImmutableArray.Create(declaration.GetLocation());
                return(DiagnosticHelper.Create(
                           CreateDescriptorWithId(UseBlockBodyTitle, UseBlockBodyTitle),
                           location, option.Notification.Severity, additionalLocations, properties));
            }

            return(null);
        }
        private static LambdaExpressionSyntax UpdateWorker(
            SemanticModel semanticModel, LambdaExpressionSyntax originalDeclaration, LambdaExpressionSyntax currentDeclaration)
        {
            var expressionBody = GetBodyAsExpression(currentDeclaration);

            return(expressionBody == null
                ? WithExpressionBody(currentDeclaration, originalDeclaration.GetLanguageVersion())
                : WithBlockBody(semanticModel, originalDeclaration, currentDeclaration));
        }