code: func (f *AckFrame) Length(version protocol.VersionNumber) protocol.ByteCount {
  	largestAcked := f.AckRanges[0].Largest
  	numRanges := f.numEncodableAckRanges()
  
  	length := 1 + utils.VarIntLen(uint64(largestAcked)) + utils.VarIntLen(encodeAckDelay(f.DelayTime))
  
  	length += utils.VarIntLen(uint64(numRanges - 1))
  	lowestInFirstRange := f.AckRanges[0].Smallest
  	length += utils.VarIntLen(uint64(largestAcked - lowestInFirstRange))
  
  	for i := 1; i < numRanges; i++ {
  		gap, len := f.encodeAckRange(i)
  		length += utils.VarIntLen(gap)
  		length += utils.VarIntLen(len)
  	}
  	return length
  }
docs: // Length of a written frame