Domain errors with HasCallStack

This feels unnatural.

The constant function should have a “position” argument, and for this particular case the position is getCallstack. Exceptions are not needed here at all (though I could go as far as to say they’re not needed ever when dealing with expected errors, but that’s just my view on things).

Also I would expect the size check on Data to be performed in a separate stage instead of being mushed together with all other future errors.