see below for replacements for asserts in situations where asserts are difficult to state).