If you really need all of that I think I'd go with a separate object holding all of the options:

options = new SerializeOptions();

options.PrettyPrint = true;

options.Flag2 = "red"

options.Flag3 = 27;

serialize(someObject, options)

So 1 line of C/C++ becomes 5 lines of Java/C#? That sounds about right! :-) Though I'm sure we can get to 30 if we squeeze in an abstract factory or two!

You can do the above in C#, I haven't written Java in a decade so can't comment on that. I don't really understand your argument though - the options approach is extremely readable. You can also do the options approach in C or C++. The amount of stuff that you can slap into one line is an interesting benchmark to use for languages.