配列について、ちょっと思いついたことが。
Adaで IntArray is array (range <>) of Integer; って宣言しておいて TheArray is IntArray(1..10); って範囲を指定したら
IntArrayとTheArrayは派生関係みたいになるでしょ?
これ、C#のBoxingと組み合わせられないかなあって。具体的には前者を参照型、後者を値型扱いにして

type IntArray is [ ] int; //参照型
type TheArray is [1..10] int; //値型

Arr: TheArray; //値型インスタンス(new不要で実体が作成される)
Arr[3] = 10;

PArr: IntArray = Arr; //Boxing
PArr[2] = PArr[3]; //Boxingしたまま使える
One: int = PArr[2]; //One = 10

Arr2: TheArray = PArr as TheArray; //Unboxing