type A is array (T) of S; -- these three A'Range is the same as T
type A is array (T'Range) of S; -- declarations
type A is array (T'First .. T'Last) of S; -- are equivalent
type B is array (T range <>) of S; -- B'Range is illegal (B is unconstrained)
subtype SB is B (2 .. 5); -- SB'Range is the same as 2 .. 5
type M is array (Boolean, T) of S; -- M'Range is equivalent to M'Range (1), which is Boolean
-- M'Range (2) is the same as T
OA: A; -- OA'Range is the same as T
OB: B (2 .. 5); -- OB'Range is equal to 2 .. 5