That refers to lower and higher than the default (old style) array which needs to fit in there too.  Since "for in" on sparse arrays only loops through indices that exist (and since we can't even count on it running at all if it's empty) we can't check when the proper time is to run through the default array inside there, so we have to put it outside, forcing us to split the loop in two.

One alternative that seems less ridiculous on the surface is to merge the default and priority arrays into a new array then loop through that, but that seemed like it would be a bit slower.