- Generate bytecode by recursively walking Expression.
- Default strategy: leave expression result on JVM stack.
- Outer expression can ask to leave result elsewhere,
perhaps as event calls on a passed-in Consumer.
- Can generate custom bytecode for built-in functions.