code: func NewIterator(r *Reader, chunks []bgzf.Chunk) (*Iterator, error) {
  	if len(chunks) == 0 {
  		return &Iterator{r: r, err: io.EOF}, nil
  	}
  	err := r.SetChunk(&chunks[0])
  	if err != nil {
  		return nil, err
  	}
  	chunks = chunks[1:]
  	return &Iterator{r: r, chunks: chunks}, nil
  }
docs: // NewIterator returns a Iterator to read from r, limiting the reads to the provided
  // chunks.
  //
  //  chunks, err := idx.Chunks(ref, beg, end)
  //  if err != nil {
  //  	return err
  //  }
  //  i, err := NewIterator(r, chunks)
  //  if err != nil {
  //  	return err
  //  }
  //  for i.Next() {
  //  	fn(i.Record())
  //  }
  //  return i.Close()
  //