again, if caller is supposed to check this, then makes sense to be AssertionError (because it's supposed to be a statement for debugging / catching contract violations).