compressed(hi) is similar to compressed, but instead of reusing the previous position high as the current position low, it uses a pair of positions for each sparse index.
The patch only introduces the definition (syntax) but does not provide codegen implementation.
If we go with the two-arrays implementation, then these could be given the values 0b1010_XX: i.e., where the 0bX010_XX part indicates the presence of the position-lows array, and the 0b1XXX_XX part indicates the presence of the position-highs array.
The reason I mention this is because that sort of encoding will make sense in the future once we add ELL support; i.e., we'd have the bits (hasLowPositions, hasHighPositions, hasCoordinates) and then we'd have the level types CompressedWithHi = (1,1,1); Compressed = (1,0,1); Singleton = (0,0,1); Counted = (1,0,0); Dense = (0,0,0). Of course, since this changes how the Compressed/Singleton/Dense types are encoded relative to one another, we can always wait until we add the Counted level-type to make these changes.