    "Given a function with a single parameter of tuple type
     `[P1, P2, ..., Pn]`, return a function with multiple
     parameters of type `P1`, `P2`, ..., `Pn`.

     That is, if `fun` has type `W([X,Y,Z])` then `flatten(fun)`
     has type `W(X,Y,Z)`.

     In the case of a function whose parameter type is a
     sequence type or unterminated tuple type, the returned
     function is variadic:

     - if the given function accepts `[S*]`, the returned
       function has a single variadic parameter of type `S*`,
     - if the given function accepts `[S+]`, the returned
       function has a single variadic parameter of type `S+`,
     - if the given function accepts `[P1, P2, ..., Pn, S*]`,
       the returned function has multiple parameters with types
       `P1`, `P2`, ..., `Pn`, `S*`, or
     - if the given function accepts `[P1, P2, ..., Pn, S+]`,
       the returned function has multiple parameters with types
       `P1`, `P2`, ..., `Pn`, `S+`."
    see(`function unflatten`)
    tagged("Functions")
    shared native Return(*Args) flatten<Return,Args>
            (Return tupleFunction(Args tuple))
            given Args satisfies Anything[];