public static void Write(ref byte[] bytes, ref int offset, decimal value)
        {
            var union = new DecimalUnion {
                Value = value
            };

            Write(ref bytes, ref offset, union.byte0);
            Write(ref bytes, ref offset, union.byte1);
            Write(ref bytes, ref offset, union.byte2);
            Write(ref bytes, ref offset, union.byte3);
            Write(ref bytes, ref offset, union.byte4);
            Write(ref bytes, ref offset, union.byte5);
            Write(ref bytes, ref offset, union.byte6);
            Write(ref bytes, ref offset, union.byte7);
            Write(ref bytes, ref offset, union.byte8);
            Write(ref bytes, ref offset, union.byte9);
            Write(ref bytes, ref offset, union.byte10);
            Write(ref bytes, ref offset, union.byte11);
            Write(ref bytes, ref offset, union.byte12);
            Write(ref bytes, ref offset, union.byte13);
            Write(ref bytes, ref offset, union.byte14);
            Write(ref bytes, ref offset, union.byte15);
        }
        public static void Write(BitStream stream, decimal value)
        {
            var union = new DecimalUnion {
                Value = value
            };

            Write(stream, union.byte0);
            Write(stream, union.byte1);
            Write(stream, union.byte2);
            Write(stream, union.byte3);
            Write(stream, union.byte4);
            Write(stream, union.byte5);
            Write(stream, union.byte6);
            Write(stream, union.byte7);
            Write(stream, union.byte8);
            Write(stream, union.byte9);
            Write(stream, union.byte10);
            Write(stream, union.byte11);
            Write(stream, union.byte12);
            Write(stream, union.byte13);
            Write(stream, union.byte14);
            Write(stream, union.byte15);
        }