code: func (f *AckFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
  	b.WriteByte(0x2)
  	utils.WriteVarInt(b, uint64(f.LargestAcked()))
  	utils.WriteVarInt(b, encodeAckDelay(f.DelayTime))
  
  	numRanges := f.numEncodableAckRanges()
  	utils.WriteVarInt(b, uint64(numRanges-1))
  
  	// write the first range
  	_, firstRange := f.encodeAckRange(0)
  	utils.WriteVarInt(b, firstRange)
  
  	// write all the other range
  	for i := 1; i < numRanges; i++ {
  		gap, len := f.encodeAckRange(i)
  		utils.WriteVarInt(b, gap)
  		utils.WriteVarInt(b, len)
  	}
  	return nil
  }
docs: // Write writes an ACK frame.