code: func (s SerializableUsageSet) Serialize() []byte {
  	sz := 1 + 4 + (len(s) * (32 + 4 + timeSzBytes + timeSzBytes + 4))
  	out := make([]byte, sz)
  	out[0] = szMemSetHeaderV1
  	binary.BigEndian.PutUint32(out[1:], uint32(len(s)))
  	p := 5
  	for k, entry := range s {
  		copy(out[p:], k[:])
  		p += 32
  		binary.BigEndian.PutUint32(out[p:], uint32(entry.usage))
  		p += 4
  		created, _ := entry.created.In(time.UTC).MarshalBinary()
  		expires, _ := entry.expire.In(time.UTC).MarshalBinary()
  		copy(out[p:], created)
  		p += len(created)
  		copy(out[p:], expires)
  		p += len(expires)
  		binary.BigEndian.PutUint32(out[p:], uint32(entry.max))
  		p += 4
  	}
  	return out
  }
docs: // Format:
  // Header (1 byte)
  // Size (n) (4 bytes)
  // n memEntrys
  //		key 32 bytes
  // 		usage 4 bytes
  //		created 15 bytes
  // 		expires 15 bytes
  // 		max 4 bytes