code: func (d Data) MarshalBinary() ([]byte, error) {
  	// Count number of bytes needed to allocate at once
  	var c int
  	for _, dd := range d {
  		c += 2 + len(dd)
  	}
  
  	b := buffer.New(nil)
  	d.Marshal(b)
  	return b.Data(), nil
  }
docs: // MarshalBinary allocates a byte slice containing the data from a Data
  // structure.