Currently the newOutputSerializer parameter is the first parameter to AddStages. Its position before the stages being added makes it "look" like it's the input serializer to the first added stage rather than the output serializer of the last added stage. Placing it at the end of the parameter list after the last added stage makes it look more like the output serializer for that last stage.
The reason it was placed first was so that the new stages could be a `params` parameter. But we can add overloads for 1-4 new stages without using `params` and C#'s new `[]` syntax for array values makes `params` less useful than before.
These methods are `internal` so this is not a breaking change to any public API.