Positional arguments (client → daemon), GIR / C order.
Empty list is omitted on the bin socket. Direction is not on the wire — the handler or typelib knows the signature.
Gee.ArrayList cannot store GLib.Value (a struct). valac requires a boxed element type. That is boxing, not optional or null arguments. An empty list means no positional args. Prefer args to pack mixed types.
req.args = OLLMrpc.args("s", "hi");