You might need to defend against every possible scenario, but this approach often produces bloated, confusing code. Hanlon's Razor suggests that you should not assume malice when simple mistakes or ...