On storing ASTs in flat arrays for performance, and the relationship with bytecode interpreters: https://www.cs.cornell.edu/~asampson/blog/flattening.html