private static void AnalyzePropertySetter(PropertyDeclarationSyntax propertyNode, SyntaxNodeAnalysisContext context)
        {
            var setter = propertyNode.AccessorList.Accessors.Single(
                _ => _.IsKind(SyntaxKind.SetAccessorDeclaration)).Body;

            var setterWalker = new FindSetOrLoadInvocationsWalker(setter, context.SemanticModel);

            if (setterWalker.Invocation != null)
            {
                var setterStatements = setter.Statements;

                if (setterStatements.Count() != 1)
                {
                    context.ReportDiagnostic(Diagnostic.Create(
                                                 EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule,
                                                 setter.GetLocation()));
                }
                else
                {
                    var expressionNode = setterStatements[0] as ExpressionStatementSyntax;

                    if (expressionNode == null)
                    {
                        context.ReportDiagnostic(Diagnostic.Create(
                                                     EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule,
                                                     setter.GetLocation()));
                    }
                    else
                    {
                        var invocation = expressionNode.ChildNodes().SingleOrDefault(
                            _ => _.IsKind(SyntaxKind.InvocationExpression)) as InvocationExpressionSyntax;

                        if (invocation == null || invocation != setterWalker.Invocation)
                        {
                            context.ReportDiagnostic(Diagnostic.Create(
                                                         EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule,
                                                         setter.GetLocation()));
                        }
                    }
                }
            }
        }
    private static void AnalyzePropertySetter(PropertyDeclarationSyntax propertyNode, SyntaxNodeAnalysisContext context)
    {
      var setter = propertyNode.AccessorList.Accessors.Single(
        _ => _.IsKind(SyntaxKind.SetAccessorDeclaration)).Body;

      var setterWalker = new FindSetOrLoadInvocationsWalker(setter, context.SemanticModel);

      if (setterWalker.Invocation != null)
      {
        var setterStatements = setter.Statements;

        if (setterStatements.Count() != 1)
        {
          context.ReportDiagnostic(Diagnostic.Create(
            EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule,
            setter.GetLocation()));
        }
        else
        {
          var expressionNode = setterStatements[0] as ExpressionStatementSyntax;

          if (expressionNode == null)
          {
            context.ReportDiagnostic(Diagnostic.Create(
              EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule,
              setter.GetLocation()));
          }
          else
          {
            var invocation = expressionNode.ChildNodes().SingleOrDefault(
              _ => _.IsKind(SyntaxKind.InvocationExpression)) as InvocationExpressionSyntax;

            if (invocation == null || invocation != setterWalker.Invocation)
            {
              context.ReportDiagnostic(Diagnostic.Create(
                EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule,
                setter.GetLocation()));
            }
          }
        }
      }
    }