code: func (f *StreamFrame) MaybeSplitOffFrame(maxSize protocol.ByteCount, version protocol.VersionNumber) (*StreamFrame, error) {
  	if maxSize >= f.Length(version) {
  		return nil, nil
  	}
  
  	n := f.MaxDataLen(maxSize, version)
  	if n == 0 {
  		return nil, errors.New("too small")
  	}
  	newFrame := &StreamFrame{
  		FinBit:         false,
  		StreamID:       f.StreamID,
  		Offset:         f.Offset,
  		Data:           f.Data[:n],
  		DataLenPresent: f.DataLenPresent,
  	}
  
  	f.Data = f.Data[n:]
  	f.Offset += n
  
  	return newFrame, nil
  }
docs: // MaybeSplitOffFrame splits a frame such that it is not bigger than n bytes.
  // If n >= len(frame), nil is returned and nothing is modified.