code: func (d *Decoder) Decode(idx *MemoryIndex) error {
  	if err := validateHeader(d); err != nil {
  		return err
  	}
  
  	flow := []func(*MemoryIndex, io.Reader) error{
  		readVersion,
  		readFanout,
  		readObjectNames,
  		readCRC32,
  		readOffsets,
  		readChecksums,
  	}
  
  	for _, f := range flow {
  		if err := f(idx, d); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // Decode reads from the stream and decode the content into the MemoryIndex struct.