public ICollection <ArraySegment <byte> > Serialize(MqttBasePacket packet) { if (packet == null) { throw new ArgumentNullException(nameof(packet)); } using (var stream = new MemoryStream(128)) using (var writer = new MqttPacketWriter(stream)) { var fixedHeader = SerializePacket(packet, writer); var remainingLength = (int)stream.Length; writer.Write(fixedHeader); MqttPacketWriter.WriteRemainingLength(remainingLength, writer); var headerLength = (int)stream.Length - remainingLength; #if NET461 || NET452 || NETSTANDARD2_0 var buffer = stream.GetBuffer(); #else var buffer = stream.ToArray(); #endif return(new List <ArraySegment <byte> > { new ArraySegment <byte>(buffer, remainingLength, headerLength), new ArraySegment <byte>(buffer, 0, remainingLength) }); } }