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