Allow errors to have a number of labels determined at runtime. An example of this is when the rust compiler labels all the arms of a `match` expression when one of them has an incompatible type