Here's a minimal roundtripping failure: ```scala val msg = upack.Arr(upack.Ext(33, new Array[Byte](4)), upack.False) val bytes = upack.writeToByteArray(msg) val msg2 = upack.read(bytes) ``` This decodes as `upack.Arr(upack.Ext(33, new Array[Byte](4)), upack.Int32(33))` (the last bit is the problem: `upack.Int32(33)` instead of `upack.False`).