Currently we allocate a hb_array_T with a capacity of 8 for the errors array for every AST node. Since most nodes are never going to have errors, this seems a bit wasteful.
Maybe could think about a way to lazily call hb_array_init the first time we try to append an error to a node.