﻿:: {g:g, o:o, s:s, b:b, qb:b?, d:d, qd:d?, n:n, qn:n?, r8:r8, qr8:r8?, r4:r4, qr4:r4?, i:i, qi:i?, i8:i8, qi8:i8?, i4:i4, qi4:i4?, i2:i2, qi2:i2?, i1:i1, qi1:i1?, u8:u8, qu8:u8?, u4:u4, qu4:u4?, u2:u2, qu2:u2?, u1:u1, qu1:u1?}

Bin(3, 4)
Bin(2, -1)
Bin(2, 0)

Bin(-0, 2)
Bin(-0f, 2f)
Bin(-0.0, 2.0)

Bin(-2, -0)
Bin(-2f, -0f)
Bin(-2.0, -0.0)

Bin(0x3FFF_FFFFI4, 2I4)
Bin(0x3FFF_FFFFI4, 4I4)
Bin(0x7FFF_FFFFU4, 2I4) // i8
Bin(0x7FFF_FFFFU4, 2U4) // i8
Bin(0x7FFF_FFFFU4, 4I4) // i8
Bin(0x3FFF_FFFF, 2)
Bin(0x3FFF_FFFF, 4)
Bin(0x7FFF_FFFFU, 2 ) // i8
Bin(0x7FFF_FFFFU, 2U) // u8
Bin(0x7FFF_FFFFU, 4 ) // i8
Bin(0x3FFF_FFFF_FFFF_FFFF, 2)
Bin(0x3FFF_FFFF_FFFF_FFFF, 4)
Bin(0x7FFF_FFFF_FFFF_FFFFU, 2)
Bin(0x7FFF_FFFF_FFFF_FFFFU, 2U)
Bin(0x7FFF_FFFF_FFFF_FFFFU, 4)

Bin(3, null)
Bin(null, 3)
Bin(0, null)
Bin(null, 0)
Bin(null, null)

Bin(i4, 3)
Bin(3, i4)

Bin(i4, null)
Bin(null, i4)


Bin(3, true)
Bin(true, 3)
Bin(true, false)
Bin("hello", true)

Bin(2.0, 4.0)
Bin(2.0, 3.0)
Bin(3f, null)
Bin(null, 2f)
Bin(2, r4)
Bin(r4, 3)
Bin(1, r4)
Bin(r4, 1)
Bin(null, r4)
Bin(r4, null)
Bin(0, r4)
Bin(r4, 0)

Bin(2ia, 0)
Bin(2i8, 0)
Bin(2u, 0u)
Bin(0x80000000i4, -1)
Bin(0x8000000000000000i8, -1)
Bin(2, -1)
Bin(7u8, 4u)
Bin(7ia, 4)
Bin(7, -4)
Bin(7i8, -4)
Bin(7ia, -4)
Bin(i4, -4)
Bin(2u8, 0u)
Bin(3.0r4, 2.0r4)
Bin(3.0r8, 2.0r8)

Bin(CastR4(1/0.0), 0f)
Bin(CastR4(-1/0.0), 0f)
Bin(0f/0f, 0f)
Bin(-0f/0f, 0f)

Bin(1.0/0, 0.0)
Bin(-1.0/0, 0.0)
Bin(0r8/0, 0.0)
Bin(-0r8/0, 0.0)

Bin(1r/0r, 0r)
Bin(-1r/0r, 0r)
Bin(0r/0r, 0r)
Bin(-0r/0r, 0.0r)

// REVIEW: These should be consistent but aren't currently.
Bin(1.0/0, 1.0/0)
Bin(1.0/0, -1.0/0)

Bin(0x812345u8, 0x81234567u8)
Bin(0x80123456u8, 0x81234567u8)
Bin(0x81234567u8, 0x80123456u8)
Bin(0x81234567u8, 0x812345u8)

Bin(3, g)
Bin(3, o)
Bin(3, s)
Bin(3, d)
Bin(3, b)
Bin(3, n)
Bin(3, r8)
Bin(3, r4)
Bin(3, i)
Bin(3, i8)
Bin(3, i4)
Bin(3, i2)
Bin(3, i1)
Bin(3, u8)
Bin(3, u4)
Bin(3, u2)
Bin(3, u1)

Bin(-3, g)
Bin(-3, o)
Bin(-3, s)
Bin(-3, d)
Bin(-3, b)
Bin(-3, n)
Bin(-3, r8)
Bin(-3, r4)
Bin(-3, i)
Bin(-3, i8)
Bin(-3, i4)
Bin(-3, i2)
Bin(-3, i1)
Bin(-3, u8)
Bin(-3, u4)
Bin(-3, u2)
Bin(-3, u1)

Bin(3u, g)
Bin(3u, o)
Bin(3u, s)
Bin(3u, d)
Bin(3u, b)
Bin(3u, n)
Bin(3u, r8)
Bin(3u, r4)
Bin(3u, i)
Bin(3u, i8)
Bin(3u, i4)
Bin(3u, i2)
Bin(3u, i1)
Bin(3u, u8)
Bin(3u, u4)
Bin(3u, u2)
Bin(3u, u1)

Bin(3f, g)
Bin(3f, o)
Bin(3f, s)
Bin(3f, d)
Bin(3f, b)
Bin(3f, n)
Bin(3f, r8)
Bin(3f, r4)
Bin(3f, i)
Bin(3f, i8)
Bin(3f, i4)
Bin(3f, i2)
Bin(3f, i1)
Bin(3f, u8)
Bin(3f, u4)
Bin(3f, u2)
Bin(3f, u1)

Bin(3, qd)
Bin(3, qb)
Bin(3, qn)
Bin(3, qr8)
Bin(3, qr4)
Bin(3, qi)
Bin(3, qi8)
Bin(3, qi4)
Bin(3, qi2)
Bin(3, qi1)
Bin(3, qu8)
Bin(3, qu4)
Bin(3, qu2)
Bin(3, qu1)

Bin(-3, qd)
Bin(-3, qb)
Bin(-3, qn)
Bin(-3, qr8)
Bin(-3, qr4)
Bin(-3, qi)
Bin(-3, qi8)
Bin(-3, qi4)
Bin(-3, qi2)
Bin(-3, qi1)
Bin(-3, qu8)
Bin(-3, qu4)
Bin(-3, qu2)
Bin(-3, qu1)

Bin(3u, qd)
Bin(3u, qb)
Bin(3u, qn)
Bin(3u, qr8)
Bin(3u, qr4)
Bin(3u, qi)
Bin(3u, qi8)
Bin(3u, qi4)
Bin(3u, qi2)
Bin(3u, qi1)
Bin(3u, qu8)
Bin(3u, qu4)
Bin(3u, qu2)
Bin(3u, qu1)

Bin(3f, qd)
Bin(3f, qb)
Bin(3f, qn)
Bin(3f, qr8)
Bin(3f, qr4)
Bin(3f, qi)
Bin(3f, qi8)
Bin(3f, qi4)
Bin(3f, qi2)
Bin(3f, qi1)
Bin(3f, qu8)
Bin(3f, qu4)
Bin(3f, qu2)
Bin(3f, qu1)

Bin(g, 1)
Bin(o, 1)
Bin(s, 1)
Bin(d, 1)
Bin(b, 1)
Bin(n, 1)
Bin(r8, 1)
Bin(r4, 1)
Bin(i, 1)
Bin(i8, 1)
Bin(i4, 1)
Bin(i2, 1)
Bin(i1, 1)
Bin(u8, 1)
Bin(u4, 1)
Bin(u2, 1)
Bin(u1, 1)

Bin(qd, 1)
Bin(qb, 1)
Bin(qn, 1)
Bin(qr8, 1)
Bin(qr4, 1)
Bin(qi, 1)
Bin(qi8, 1)
Bin(qi4, 1)
Bin(qi2, 1)
Bin(qi1, 1)
Bin(qu8, 1)
Bin(qu4, 1)
Bin(qu2, 1)
Bin(qu1, 1)

Bin(null, 0)
Bin(g, 0)
Bin(o, 0)
Bin(s, 0)
Bin(d, 0)
Bin(b, 0)
Bin(n, 0)
Bin(r8, 0)
Bin(r4, 0)
Bin(i, 0)
Bin(i8, 0)
Bin(i4, 0)
Bin(i2, 0)
Bin(i1, 0)
Bin(u8, 0)
Bin(u4, 0)
Bin(u2, 0)
Bin(u1, 0)

Bin(qd, 0)
Bin(qb, 0)
Bin(qn, 0)
Bin(qr8, 0)
Bin(qr4, 0)
Bin(qi, 0)
Bin(qi8, 0)
Bin(qi4, 0)
Bin(qi2, 0)
Bin(qi1, 0)
Bin(qu8, 0)
Bin(qu4, 0)
Bin(qu2, 0)
Bin(qu1, 0)