A bunch of work towards supporting arrays in HLIR