sequenceDiagram
activate Main
Main->>iterator: iterator(...)
deactivate Main
activate iterator
Note over iterator: state=NotReady, nextValue=null
iterator->>-Main: return
activate Main
Main->>iterator: next()
deactivate Main
activate iterator
iterator->>fibIt: run(...)
deactivate iterator
activate fibIt
fibIt->>-iterator: yield(1)
activate iterator
Note over iterator: state=Ready, nextValue=1
Note over iterator: state=NotReady, nextValue=null, value=1
iterator->>-Main: return 1
activate Main
Main->>iterator: next()
deactivate Main
activate iterator
iterator->>fibIt: resume(...)
deactivate iterator
activate fibIt
fibIt->>-iterator: yield(1)
activate iterator
Note over iterator: state=Ready, nextValue=1
Note over iterator: state=NotReady, nextValue=null, value=1
iterator->>Main: return 1
activate Main
deactivate iterator
deactivate Main
|
sequenceDiagram
activate Main
Main->>iterator: hasNext()
deactivate Main
activate iterator
iterator->>fibIt: resume(...)
deactivate iterator
activate fibIt
fibIt->>-iterator: yield(2)
activate iterator
Note over iterator: state=Ready, nextValue=2
iterator->>-Main: return true
activate Main
Main->>iterator: next()
deactivate Main
activate iterator
Note over iterator: state=NotReady, nextValue=null, value=2
iterator->>Main: return 2
activate Main
deactivate iterator
deactivate Main
|