public override byte[] CreateBody() { var buffer = new List <byte>(); foreach (var mutate in _builder.GetEnumerator()) { var opcode = (byte)mutate.OpCode; var flags = (byte)(mutate.CreateParents ? 0x01 : 0x00); var pathLength = Encoding.UTF8.GetByteCount(mutate.Path); var fragment = mutate.Value == null ? new byte[0] : Transcoder.Serializer.Serialize(mutate.Value); var spec = new byte[pathLength + 8]; Converter.FromByte(opcode, spec, 0); Converter.FromByte(flags, spec, 1); Converter.FromUInt16((ushort)pathLength, spec, 2); Converter.FromUInt32((uint)fragment.Length, spec, 4); Converter.FromString(mutate.Path, spec, 8); buffer.AddRange(spec); buffer.AddRange(fragment); _lookupCommands.Add(mutate); } return(buffer.ToArray()); }