The hash table is generated by gperf. For runtime element types, we use a append-only linked list. A bit clumsy, but I think I got it right.