public static byte[] EncodeOutputStates(OutputStates outputStates)
{
var outputStateBytes = outputStates.ToByteArray();
var buffer = new byte[4 + outputStateBytes.Length];
Buffer.BlockCopy(BitConverter.GetBytes(outputStates.Length), 0, buffer, 0, 4);
Buffer.BlockCopy(outputStateBytes, 0, buffer, 4, outputStateBytes.Length);
return buffer;
}