Why does this `throw` rather than return `false` when the specification is not fulfilled?  API for `isSatisfiedByInternal()` seems to be a boolean rather than a throws API?