protected override ExpressionSyntax GetNewExpression(ExpressionSyntax expression, FluentAssertionsDiagnosticProperties properties) { var removeMethodContainingFirstLambda = NodeReplacement.RemoveAndExtractArguments("Select"); var newExpression = GetNewExpression(expression, removeMethodContainingFirstLambda); var removeArgument = NodeReplacement.RemoveFirstArgument("Equal"); newExpression = GetNewExpression(newExpression, removeArgument); var argumentInvocation = (InvocationExpressionSyntax)removeArgument.Argument.Expression; var identifier = ((MemberAccessExpressionSyntax)argumentInvocation.Expression).Expression; var firstLambda = (SimpleLambdaExpressionSyntax)removeMethodContainingFirstLambda.Arguments[0].Expression; var secondLambda = (SimpleLambdaExpressionSyntax)argumentInvocation.ArgumentList.Arguments[0].Expression; var newArguments = SyntaxFactory.SeparatedList <ArgumentSyntax>() .Add(removeArgument.Argument.WithExpression(identifier)) .Add(removeArgument.Argument.WithExpression(CombineLambdas(firstLambda, secondLambda).NormalizeWhitespace() )); return(GetNewExpression(newExpression, NodeReplacement.PrependArguments("Equal", newArguments))); }