private static IEnumerable<NameAndLocation> GetAllMutations(SyntaxNode syntax)
{
var assignments = syntax.DescendantNodes()
.Where(NodeIsAssignmentExpression)
.Cast<AssignmentExpressionSyntax>()
.Select(expression => new NameAndLocation(
GetIdentifierFromAssignmentExpression(expression),
expression.GetLocation()));
var prefixExpressions = syntax.DescendantNodes()
.Where(NodeIsPrefixExpression)
.Cast<PrefixUnaryExpressionSyntax>()
.Select(expression => new NameAndLocation(
GetIdentifierFromPrefixOperand(expression),
expression.GetLocation()));
var postfixExpressions = syntax.DescendantNodes()
.Where(NodeIsPostfixExpression)
.Cast<PostfixUnaryExpressionSyntax>()
.Select(expression => new NameAndLocation(
GetIdentifierFromPostfixOperand(expression),
expression.GetLocation()));
return assignments.Cons(prefixExpressions).Cons(postfixExpressions);
}