1    type OneMany<T> =
2        | One T
3        | Many List<T>
4    
5        fun get (i : u32) = case self of
6            One x -> assert i == 0
7                     x
8            Many list -> list[i]
9    
10       fun get (i : i32) =
11           assert i >= 0
12           self[i as u32]
13   
14       def as_slice = case self of
15           One x@ptr -> Slice<T> x 1
16           Many list -> list.as_slice
17   
18       def get_iterator = as_slice.get_iterator
19   
20       def size = case self of
21           One _ -> 1
22           Many list -> list.size
23