Tmp/codegen hlist workaround

retargets #610 to 2.0
breaks binary compatibility, will add commit to re-establish binary compat later (as agreed on)
no review /cc @szeiger