string|String.Buffer is a union type, so using it in conjunction with an `= lfun should result in an error reported to the programmer.
That is not possible to know at compile time, however.
And we _never_ pass by value in pike, so it would be totally unexpected to any pike developer.