- The function is static inside your implementation
- If the precondition fails the entire module you have is in an inconsistent state
- For pre-conditions and post-conditions.
- You are in a public function.
- You are checking that the caller is using the API correctly.