
@startuml StringMergingIterator

actor       Actor                 as a
participant StringMergingIterator as smi
entity      Iterator1             as i1
entity      Iterator2             as i2

a   -> smi : next()
smi -> i1  : hasNext()
i1  -> smi : true
smi -> i2  : hasNext()
i2  -> smi : true
smi -> i1  : next()
i1  -> smi : next value
smi -> a   : next value
a   -> smi : next()
smi -> i1  : hasNext()
i1  -> smi : true
smi -> i2  : hasNext()
i2  -> smi : true
smi -> i2  : next()
i2  -> smi : next value
smi -> a   : next value
a   -> smi : next()
smi -> i1  : hasNext()
i1  -> smi : false
smi -> i2  : next()
i2  -> smi : next value
smi -> a   : next value
@enduml