code: func NewChannelIterator(ch <-chan KVPair, start, end []byte) *ChannelIterator {
  	ci := &ChannelIterator{
  		ch:    ch,
  		start: start,
  		end:   end,
  	}
  	// Load first element if it exists
  	ci.Next()
  	return ci
  }
docs: // ChannelIterator wraps a stream of kvp KVPairs over a channel as a stateful KVIterator. The start and end keys provided
  // are purely indicative (for Domain()) and are assumed to be honoured by the input channel - they are not checked
  // and keys are not sorted. NewChannelIterator will block until the first value is received over the channel.