Guide on how to handle edge cases that can come up when writing software for a safety-critical system