class IteratorsIterator
  constructor: (@iterators) ->
    @index = 0
    @length = @iterators.length

  next: ->
    ite = @_currentIterator()
    ite and ite.hasNext() and ite.next()

  hasNext: ->
    ite = @_currentIterator()
    ite and ite.hasNext()

  rewind: ->
    @index = 0
    @current()

  current: ->
    @_currentIterator().current()

  _currentIterator: ->
    if @index < @length
      if @iterators[@index].hasNext()
        @iterators[@index]
      else
        @index++
        @_currentIterator()

module.exports = IteratorsIterator