private static bool ContainsExpression(ExecutableStatementSyntax container, ExpressionSyntax contained)
 {
     return(contained != null &&
            container.DescendantNodes()
            .OfType <MemberAccessExpressionSyntax>()
            .Any(m => m.Expression != null && VisualBasicEquivalenceChecker.AreEquivalent(contained, m.Expression)));
 }
 private static bool IsCandidateStatement(ExecutableStatementSyntax statement, ExpressionSyntax expression)
 {
     return(statement != null &&
            IsAllowedStatement(statement) &&
            !ContainsEmptyMemberAccess(statement) &&
            ContainsExpression(statement, expression));
 }
 private static bool IsAllowedStatement(ExecutableStatementSyntax statement)
 {
     return(WhiteListedStatementTypes.Contains(statement.GetType()));
 }
 private static bool ContainsEmptyMemberAccess(ExecutableStatementSyntax container)
 {
     return(container.DescendantNodes()
            .OfType <MemberAccessExpressionSyntax>()
            .Any(m => m.Expression == null));
 }