Preserve array-based string.Join expression trees

Proprietary

Wrap originally expanded string.Join string/object values in an explicit array inside a proven expression-tree lambda before retargeting. Retain the original params-array method and evaluation order when .NET 9 span params would make the tree fail to compile. Leave ordinary delegates, explicit arrays, ambiguous single-value calls, named/generic arguments, custom overloads, comments and conditional snapshots unchanged.

OpenRewrite.Recipes.CSharp.Migration.Dotnet.Net9.PreserveStringJoinArrayExpressions
mod run . --recipe=OpenRewrite.Recipes.CSharp.Migration.Dotnet.Net9.PreserveStringJoinArrayExpressions

Install it once, then run it on every repository under the current directory. New to the Moderne CLI? Set it up.