The difference between `assert` and `assume` is small and more intentional than actual at this point.  The larger point is that with the precondition checking implemented as it is currently via `checkValidityOrThrowException`, I wasn't sure whether these were intended only as development-time checks or whether there was an expectation that the ISE thrown would actually be caught and dealt with in some fashion in code deployed into production.