1    type ListIterator<T> =
2        inherit Iterator<T>
3    
4        let list : List<T>
5        let version = list.version
6        let mut index = -1
7    
8        def Iterator.move_next =
9            assert list.version == version
10           index += 1
11           index < list.size
12   
13       def Iterator.get_value =
14           assert list.version == version
15           list[index]
16   
17   type List<T>
18       def try_size = Some size |> as_option
19       def get_iterator = ListIterator<T> self
20   
21       is Iterable<T>
22