Previously, we would go crazy and shift things way out of bounds. Add tests to verify that the decoding algorithm is safe around the limits of the result type.
And not just ssize_t/size_t. This is useful in cases where the output size is supposed to be larger than size_t.