What about replacing JsMessage and unravel by just a simple function?
I don't see any usecase where we would need to just call JsMessage(args) first and then later call unravel,
nor call unravel multiple times for the same JsMessage with/without same arguments.
But I can imagine doing the opposite: First define a struct, and then cast multiple args sets matching this struct.

A simple function would be something like:
`let [x, y, z] = JsMessage(args, [ctypes.int, ctypes.char.ptr, ctypes.int]);`
or
`let [x, y, z] = JsMessage(args, ctypes.int, ctypes.char.ptr, ctypes.int);`

Or if we want to convert multiple args matching the same struct:
```
let test1Struct = JsMessage(ctypes.int, ctypes.char.ptr, ctypes.int);
let [x, y, z] = test1Struct.unravel(args);
```