kind Countdown { start: Int }
kind CountdownIter { current: Int }
impl Countdown as ToIter[Int] {
    func to_iter(self): CountdownIter {
        ret CountdownIter { current: self.start }
    }
}
impl CountdownIter as Iter[Int] {
    func next(self): Opt[Int] {
        if self.current <= 0 { ret Opt[Int].Non }
        let value = self.current
        self.current = self.current - 1
        ret Opt[Int].Val(value)
    }
}
let launch = Countdown { start: 3 }
for n in launch { print(n) }
print("go")
