To me, it appears that there are really two (entirely separate) concepts:
A. Supporting the useful concept of variable length (but otherwise entirely conventional) arrays;
B. Supporting a language feature that acts as a window to an array, through which that array can be manipulated.
And currently these two concepts are combined.
Suggestion: it would be clearer if the two concepts were separated:
- Convert 'int[] VarArr;' so it produces a straightforward value-type variable array, called 'VarArr';
- Implement a new concept 'int slice Window;' to produce an object of type 'int slice', called 'Window'.
'Window' is a 'slice' into an int array, not an array itself or even a variable.
Opinions?