today I learned that case statements generate so much bytecode that you really must be wary of aggressively inlining them