code: func newDoubleIter(from, to noder.Noder, hashEqual noder.Equal) (
  	*doubleIter, error) {
  	var ii doubleIter
  	var err error
  
  	if ii.from.iter, err = NewIter(from); err != nil {
  		return nil, fmt.Errorf("from: %s", err)
  	}
  	if ii.from.current, err = ii.from.iter.Next(); turnEOFIntoNil(err) != nil {
  		return nil, fmt.Errorf("from: %s", err)
  	}
  
  	if ii.to.iter, err = NewIter(to); err != nil {
  		return nil, fmt.Errorf("to: %s", err)
  	}
  	if ii.to.current, err = ii.to.iter.Next(); turnEOFIntoNil(err) != nil {
  		return nil, fmt.Errorf("to: %s", err)
  	}
  
  	ii.hashEqual = hashEqual
  
  	return &ii, nil
  }
docs: // NewdoubleIter returns a new doubleIter for the merkletries "from" and
  // "to".  The hashEqual callback function will be used by the doubleIter
  // to compare the hash of the noders in the merkletries.  The doubleIter
  // will be initialized to the first elements in each merkletrie if any.