1    type Iterator<T> @abstract =
2        def move_next : bool
3        def get_value : T
4    
5        def try_next =
6            if move_next
7            then Some get_value
8            else None
9    
10       def get_next = try_next |> unwrap
11   
12   class Iterable<T> =
13       def get_iterator : Iterator<T>
14       def try_size : Option<u32>
15