See, that's where I'd scrutinize what's happening a bit further. The compiler is simply an enforcer in this case; you're not 'satisfying the compiler', you're working in a set of extremely strong constraints that force you to consider possibilities you might otherwise defer looking at in a less stringent language.