private ExpressionSyntax CreateWithMessage(ExpressionSyntax expression, string baseIndent) { if (ExpectedMessage == null) { return(expression); } var indent = new string (Formatting.IndentationCharacter, Formatting.IndentationSize); var withMessage = MemberAccess( expression.WithTrailingTrivia(Whitespace(Formatting.NewLine + baseIndent + indent + indent)), "With", "Message"); var matchTypeFunctionName = MatchType?.ToFullString() switch { "MessageMatch.Contains" => "Contains", "MessageMatch.StartsWith" => "StartsWith", "MessageMatch.Regex" => "Matches", "MessageMatch.Exact" => "EqualTo", null => "EqualTo", _ => "UNKNOWN_MATCH_TYPE" }; var withMessageMatchType = MemberAccess(withMessage, matchTypeFunctionName); if (EndsOnSameLine(ExpectedMessage) && !IsMessageTooLong(ExpectedMessage)) { return(CreateSingleLineMessage(withMessageMatchType, ExpectedMessage, baseIndent + indent + indent + indent + indent)); } else { return(CreateMultiLineMessage(withMessageMatchType, ExpectedMessage, baseIndent + indent + indent + indent + indent)); } }