A blunt force solution would be to create a range as Range!(ReturnType!Array...)(cast(Array!T)this, low, high); and then do the correct casts in Range.The ReturnType would be the ReturnType of opIndex of the Range type and the Array would be stored as plain array without any qualifier.
other than that I'm not sure how to go about this.