**** New globals: {b:b, d:d, g:g, i:i, i1:i1, i2:i2, i4:i4, i8:i8, n:r8, r4:r4, r8:r8, s:s, t:t, u1:u1, u2:u2, u4:u4, u8:u8, v:v}

> ToU4(g)
ToU4(g) : u4?
*** Error: (5,6) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : ToU4(Error(ErrBadType_Src_Dst))
###
> ToU4(s)
ToU4(s) : u4?
Binder : ToU4(s)
###
> ToU4(d)
ToU4(d) : u4?
Binder : ToU4*(d)
Reducer: ToU4(Date.TotalTicks(d))
###
> ToU8(t)
ToU8(t) : u8?
Binder : ToU8*(t)
Reducer: ToU8(Time.TotalTicks(t))
###
> ToU8(n)
ToU8(n) : u8?
Binder : ToU8(n)
###
> ToU8(r8)
ToU8(r8) : u8?
Binder : ToU8(r8)
###
> ToU8(r4)
ToU8(r4) : u8?
Binder : ToU8(r4)
###
> ToU4(i)
ToU4(i) : u4?
Binder : ToU4(i)
###
> ToU8(i8)
ToU8(i8) : u8?
Binder : ToU8(i8)
###
> ToU4(i4)
ToU4(i4) : u4?
Binder : ToU4(i4)
###
> ToU2(i2)
ToU2(i2) : u2?
Binder : ToU2(i2)
###
> ToU1(i1)
ToU1(i1) : u1?
Binder : ToU1(i1)
###
> ToU4(u8)
ToU4(u8) : u4?
Binder : ToU4(u8)
###
> ToU2(u4)
ToU2(u4) : u2?
Binder : ToU2(u4)
###
> ToU1(u2)
ToU1(u2) : u1?
Binder : ToU1(u2)
###
> ToU4(v)
ToU4(v) : u4
Binder : ToU4*(Unit<u4>(v))
Reducer: 0
###
> ToU1(b)
ToU1(b) : u1
Binder : ToU1*(b)
Reducer: Num<u1>(b)
###
> ToU8(d)
ToU8(d) : u8
Binder : ToU8*(d)
Reducer: CastU8(Date.TotalTicks(d))
###
> ToU8(u8)
ToU8(u8) : u8
Binder : ToU8*(u8)
Reducer: u8
###
> ToU8(u4)
ToU8(u4) : u8
Binder : ToU8*(u4)
Reducer: Num<u8>(u4)
###
> ToU4(u4)
ToU4(u4) : u4
Binder : ToU4*(u4)
Reducer: u4
###
> ToU4(u2)
ToU4(u2) : u4
Binder : ToU4*(u2)
Reducer: Num<u4>(u2)
###
> ToU2(u2)
ToU2(u2) : u2
Binder : ToU2*(u2)
Reducer: u2
###
> ToU2(u1)
ToU2(u1) : u2
Binder : ToU2*(u1)
Reducer: Num<u2>(u1)
###
> ToU1(u1)
ToU1(u1) : u1
Binder : ToU1*(u1)
Reducer: u1
###

**** New globals: {o:o, qb:b?, qd:d?, qi:i?, qi1:i1?, qi2:i2?, qi4:i4?, qi8:i8?, qn:r8?, qr4:r4?, qr8:r8?, qt:t?, qu1:u1?, qu2:u2?, qu4:u4?, qu8:u8?}

> ToU4(qd)
ToU4(qd) : u4?
Binder : Guard(?1: qd, ToU4*(?1))
Reducer: Guard(?1: qd, ToU4(Date.TotalTicks(?1)))
###
> ToU8(qt)
ToU8(qt) : u8?
Binder : Guard(?1: qt, ToU8*(?1))
Reducer: Guard(?1: qt, ToU8(Time.TotalTicks(?1)))
###
> ToU8(qn)
ToU8(qn) : u8?
Binder : Guard(?1: qn, ToU8(?1))
###
> ToU8(qr8)
ToU8(qr8) : u8?
Binder : Guard(?1: qr8, ToU8(?1))
###
> ToU8(qr4)
ToU8(qr4) : u8?
Binder : Guard(?1: qr4, ToU8(?1))
###
> ToU8(qi)
ToU8(qi) : u8?
Binder : Guard(?1: qi, ToU8(?1))
###
> ToU8(qi8)
ToU8(qi8) : u8?
Binder : Guard(?1: qi8, ToU8(?1))
###
> ToU4(qi4)
ToU4(qi4) : u4?
Binder : Guard(?1: qi4, ToU4(?1))
###
> ToU2(qi2)
ToU2(qi2) : u2?
Binder : Guard(?1: qi2, ToU2(?1))
###
> ToU1(qi1)
ToU1(qi1) : u1?
Binder : Guard(?1: qi1, ToU1(?1))
###
> ToU4(qu8)
ToU4(qu8) : u4?
Binder : Guard(?1: qu8, ToU4(?1))
###
> ToU2(qu4)
ToU2(qu4) : u2?
Binder : Guard(?1: qu4, ToU2(?1))
###
> ToU1(qu2)
ToU1(qu2) : u1?
Binder : Guard(?1: qu2, ToU1(?1))
###
> ToU8(o)
ToU8(o) : u8?
Binder : Guard(?1: o, ToU8*(Unit<u8>(?1)))
Reducer: null
###
> ToU1(qb)
ToU1(qb) : u1?
Binder : Guard(?1: qb, ToU1*(?1))
Reducer: Guard(?1: qb, Num<u1>(?1))
###
> ToU8(qd)
ToU8(qd) : u8?
Binder : Guard(?1: qd, ToU8*(?1))
Reducer: Guard(?1: qd, CastU8(Date.TotalTicks(?1)))
###
> ToU8(qu8)
ToU8(qu8) : u8?
Binder : Guard(?1: qu8, ToU8*(?1))
Reducer: qu8
###
> ToU8(qu4)
ToU8(qu4) : u8?
Binder : Guard(?1: qu4, ToU8*(?1))
Reducer: Guard(?1: qu4, Num<u8>(?1))
###
> ToU4(qu4)
ToU4(qu4) : u4?
Binder : Guard(?1: qu4, ToU4*(?1))
Reducer: qu4
###
> ToU4(qu2)
ToU4(qu2) : u4?
Binder : Guard(?1: qu2, ToU4*(?1))
Reducer: Guard(?1: qu2, Num<u4>(?1))
###
> ToU2(qu2)
ToU2(qu2) : u2?
Binder : Guard(?1: qu2, ToU2*(?1))
Reducer: qu2
###
> ToU2(qu1)
ToU2(qu1) : u2?
Binder : Guard(?1: qu1, ToU2*(?1))
Reducer: Guard(?1: qu1, Num<u2>(?1))
###
> ToU1(qu1)
ToU1(qu1) : u1?
Binder : Guard(?1: qu1, ToU1*(?1))
Reducer: qu1
###

**** New globals: {g:g, o:o, qr4:r4?, qu2:u2?, qu4:u4?, qu8:u8?, r4:r4, u2:u2, u4:u4, u8:u8, v:v}

> ToU4(v)
ToU4(v) : u4
Binder : ToU4*(Unit<u4>(v))
Reducer: 0
###
> ToU4(v, v)
ToU4(v, v) : u4
*** Warning: (8,9) Node: v, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(Unit<u4>(v), Unit<u4>(v))
Reducer: 0
###
> ToU4(v, o)
ToU4(v, o) : u4
*** Warning: (8,9) Node: o, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(Unit<u4>(v), null)
Reducer: 0
###
> ToU4(v, qu2)
ToU4(v, qu2) : u4
*** Warning: (8,11) Node: qu2, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(Unit<u4>(v), Guard(?1: qu2, Num<u4>(?1)))
Reducer: 0
###
> ToU4(v, u2)
ToU4(v, u2) : u4
*** Warning: (8,10) Node: u2, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(Unit<u4>(v), Num<u4>(u2))
Reducer: 0
###
> ToU4(u2)
ToU4(u2) : u4
Binder : ToU4*(u2)
Reducer: Num<u4>(u2)
###
> ToU4(u2, v)
ToU4(u2, v) : u4
*** Warning: (9,10) Node: v, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(u2, Unit<u4>(v))
Reducer: Num<u4>(u2)
###
> ToU4(u2, o)
ToU4(u2, o) : u4
*** Warning: (9,10) Node: o, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(u2, null)
Reducer: Num<u4>(u2)
###
> ToU4(u2, qu2)
ToU4(u2, qu2) : u4
*** Warning: (9,12) Node: qu2, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(u2, Guard(?1: qu2, Num<u4>(?1)))
Reducer: Num<u4>(u2)
###
> ToU4(u2, u2)
ToU4(u2, u2) : u4
*** Warning: (9,11) Node: u2, Message: Second argument of 'ToU4' is not used
Binder : ToU4*(u2, Num<u4>(u2))
Reducer: Num<u4>(u2)
###
> ToU4(u8)
ToU4(u8) : u4?
Binder : ToU4(u8)
###
> ToU4(u8, v)
ToU4(u8, v) : u4
Binder : ToU4(u8, Unit<u4>(v))
Reducer: ToU4(u8, 0)
###
> ToU4(u8, o)
ToU4(u8, o) : u4?
Binder : ToU4(u8, null)
###
> ToU4(u8, qu2)
ToU4(u8, qu2) : u4?
Binder : ToU4(u8, Guard(?1: qu2, Num<u4>(?1)))
###
> ToU4(u8, u2)
ToU4(u8, u2) : u4
Binder : ToU4(u8, Num<u4>(u2))
###
> ToU4(o)
ToU4(o) : u4?
Binder : Guard(?1: o, ToU4*(Unit<u4>(?1)))
Reducer: null
###
> ToU4(o, v)
ToU4(o, v) : u4?
*** Warning: (8,9) Node: v, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: o, ToU4*(Unit<u4>(?1), Unit<u4>(v)))
Reducer: null
###
> ToU4(o, o)
ToU4(o, o) : u4?
*** Warning: (8,9) Node: o, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: o, ToU4*(Unit<u4>(?1), null))
Reducer: null
###
> ToU4(o, qu2)
ToU4(o, qu2) : u4?
*** Warning: (8,11) Node: qu2, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: o, ToU4*(Unit<u4>(?1), Guard(?2: qu2, Num<u4>(?2))))
Reducer: null
###
> ToU4(o, u2)
ToU4(o, u2) : u4?
*** Warning: (8,10) Node: u2, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: o, ToU4*(Unit<u4>(?1), Num<u4>(u2)))
Reducer: null
###
> ToU4(qu2)
ToU4(qu2) : u4?
Binder : Guard(?1: qu2, ToU4*(?1))
Reducer: Guard(?1: qu2, Num<u4>(?1))
###
> ToU4(qu2, v)
ToU4(qu2, v) : u4?
*** Warning: (10,11) Node: v, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: qu2, ToU4*(?1, Unit<u4>(v)))
Reducer: Guard(?1: qu2, Num<u4>(?1))
###
> ToU4(qu2, o)
ToU4(qu2, o) : u4?
*** Warning: (10,11) Node: o, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: qu2, ToU4*(?1, null))
Reducer: Guard(?1: qu2, Num<u4>(?1))
###
> ToU4(qu2, qu2)
ToU4(qu2, qu2) : u4?
*** Warning: (10,13) Node: qu2, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: qu2, ToU4*(?1, Guard(?2: qu2, Num<u4>(?2))))
Reducer: Guard(?1: qu2, Num<u4>(?1))
###
> ToU4(qu2, u2)
ToU4(qu2, u2) : u4?
*** Warning: (10,12) Node: u2, Message: Second argument of 'ToU4' is not used
Binder : Guard(?1: qu2, ToU4*(?1, Num<u4>(u2)))
Reducer: Guard(?1: qu2, Num<u4>(?1))
###
> ToU4(qu8)
ToU4(qu8) : u4?
Binder : Guard(?1: qu8, ToU4(?1))
###
> ToU4(qu8, v)
ToU4(qu8, v) : u4?
Binder : Guard(?1: qu8, ToU4(?1, Unit<u4>(v)))
Reducer: Guard(?1: qu8, ToU4(?1, 0))
###
> ToU4(qu8, o)
ToU4(qu8, o) : u4?
Binder : Guard(?1: qu8, ToU4(?1, null))
###
> ToU4(qu8, qu2)
ToU4(qu8, qu2) : u4?
Binder : Guard(?1: qu8, ToU4(?1, Guard(?2: qu2, Num<u4>(?2))))
###
> ToU4(qu8, u2)
ToU4(qu8, u2) : u4?
Binder : Guard(?1: qu8, ToU4(?1, Num<u4>(u2)))
###
> To(g, qu4)
To(g, qu4) : u4?
*** Error: (3,4) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : To*(Error(ErrBadType_Src_Dst), qu4)
Reducer: ToU4(Error(ErrBadType_Src_Dst), qu4)
###
> To(g, u4)
To(g, u4) : u4
*** Error: (3,4) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : To*(Error(ErrBadType_Src_Dst), u4)
Reducer: ToU4(Error(ErrBadType_Src_Dst), u4)
###
> To(v, qu4)
To(v, qu4) : u4
*** Warning: (6,9) Node: qu4, Message: Second argument of 'To' is not used
Binder : To*(Unit<u4>(v), qu4)
Reducer: 0
###
> To(v, u4)
To(v, u4) : u4
*** Warning: (6,8) Node: u4, Message: Second argument of 'To' is not used
Binder : To*(Unit<u4>(v), u4)
Reducer: 0
###
> To(r4, qu4)
To(r4, qu4) : u4?
Binder : To*(r4, qu4)
Reducer: ToU4(r4, qu4)
###
> To(r4, u4)
To(r4, u4) : u4
Binder : To*(r4, u4)
Reducer: ToU4(r4, u4)
###
> To(o, qu4)
To(o, qu4) : u4?
*** Warning: (6,9) Node: qu4, Message: Second argument of 'To' is not used
Binder : Guard(?1: o, To*(Unit<u4>(?1), qu4))
Reducer: null
###
> To(o, u4)
To(o, u4) : u4?
*** Warning: (6,8) Node: u4, Message: Second argument of 'To' is not used
Binder : Guard(?1: o, To*(Unit<u4>(?1), u4))
Reducer: null
###
> To(qr4, qu4)
To(qr4, qu4) : u4?
Binder : Guard(?1: qr4, To*(?1, qu4))
Reducer: Guard(?1: qr4, ToU4(?1, qu4))
###
> To(qr4, u4)
To(qr4, u4) : u4?
Binder : Guard(?1: qr4, To*(?1, u4))
Reducer: Guard(?1: qr4, ToU4(?1, u4))
###

**** New globals: {b:b*, d:d*, g:g*, i:i*, i1:i1*, i2:i2*, i4:i4*, i8:i8*, n:r8*, r4:r4*, r8:r8*, s:s*, t:t*, u1:u1*, u2:u2*, u4:u4*, u8:u8*, v:v*}

> ToU4(g)
ToU4(g) : u4?*
*** Error: (5,6) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : ForEach(*1: g, ToU4(Error(ErrBadType_Src_Dst)))
###
> ToU4(s)
ToU4(s) : u4?*
Binder : ForEach(*1: s, ToU4(*1))
###
> ToU4(d)
ToU4(d) : u4?*
Binder : ForEach(*1: d, ToU4*(*1))
Reducer: ForEach(*1: d, ToU4(Date.TotalTicks(*1)))
###
> ToU8(t)
ToU8(t) : u8?*
Binder : ForEach(*1: t, ToU8*(*1))
Reducer: ForEach(*1: t, ToU8(Time.TotalTicks(*1)))
###
> ToU8(n)
ToU8(n) : u8?*
Binder : ForEach(*1: n, ToU8(*1))
###
> ToU8(r8)
ToU8(r8) : u8?*
Binder : ForEach(*1: r8, ToU8(*1))
###
> ToU8(r4)
ToU8(r4) : u8?*
Binder : ForEach(*1: r4, ToU8(*1))
###
> ToU4(i)
ToU4(i) : u4?*
Binder : ForEach(*1: i, ToU4(*1))
###
> ToU8(i8)
ToU8(i8) : u8?*
Binder : ForEach(*1: i8, ToU8(*1))
###
> ToU4(i4)
ToU4(i4) : u4?*
Binder : ForEach(*1: i4, ToU4(*1))
###
> ToU2(i2)
ToU2(i2) : u2?*
Binder : ForEach(*1: i2, ToU2(*1))
###
> ToU1(i1)
ToU1(i1) : u1?*
Binder : ForEach(*1: i1, ToU1(*1))
###
> ToU4(u8)
ToU4(u8) : u4?*
Binder : ForEach(*1: u8, ToU4(*1))
###
> ToU2(u4)
ToU2(u4) : u2?*
Binder : ForEach(*1: u4, ToU2(*1))
###
> ToU1(u2)
ToU1(u2) : u1?*
Binder : ForEach(*1: u2, ToU1(*1))
###
> ToU4(v)
ToU4(v) : u4*
Binder : ForEach(*1: v, ToU4*(Unit<u4>(*1)))
Reducer: ForEach(*1: v, 0)
###
> ToU1(b)
ToU1(b) : u1*
Binder : ForEach(*1: b, ToU1*(*1))
Reducer: ForEach(*1: b, Num<u1>(*1))
###
> ToU8(d)
ToU8(d) : u8*
Binder : ForEach(*1: d, ToU8*(*1))
Reducer: ForEach(*1: d, CastU8(Date.TotalTicks(*1)))
###
> ToU8(u8)
ToU8(u8) : u8*
Binder : ForEach(*1: u8, ToU8*(*1))
Reducer: u8
###
> ToU8(u4)
ToU8(u4) : u8*
Binder : ForEach(*1: u4, ToU8*(*1))
Reducer: ForEach(*1: u4, Num<u8>(*1))
###
> ToU4(u4)
ToU4(u4) : u4*
Binder : ForEach(*1: u4, ToU4*(*1))
Reducer: u4
###
> ToU4(u2)
ToU4(u2) : u4*
Binder : ForEach(*1: u2, ToU4*(*1))
Reducer: ForEach(*1: u2, Num<u4>(*1))
###
> ToU2(u2)
ToU2(u2) : u2*
Binder : ForEach(*1: u2, ToU2*(*1))
Reducer: u2
###
> ToU2(u1)
ToU2(u1) : u2*
Binder : ForEach(*1: u1, ToU2*(*1))
Reducer: ForEach(*1: u1, Num<u2>(*1))
###
> ToU1(u1)
ToU1(u1) : u1*
Binder : ForEach(*1: u1, ToU1*(*1))
Reducer: u1
###

**** New globals: {o:o*, qb:b?*, qd:d?*, qi:i?*, qi1:i1?*, qi2:i2?*, qi4:i4?*, qi8:i8?*, qn:r8?*, qr4:r4?*, qr8:r8?*, qt:t?*, qu1:u1?*, qu2:u2?*, qu4:u4?*, qu8:u8?*}

> ToU4(qd)
ToU4(qd) : u4?*
Binder : ForEach(*1: qd, Guard(?2: *1, ToU4*(?2)))
Reducer: ForEach(*1: qd, Guard(?2: *1, ToU4(Date.TotalTicks(?2))))
###
> ToU8(qt)
ToU8(qt) : u8?*
Binder : ForEach(*1: qt, Guard(?2: *1, ToU8*(?2)))
Reducer: ForEach(*1: qt, Guard(?2: *1, ToU8(Time.TotalTicks(?2))))
###
> ToU8(qn)
ToU8(qn) : u8?*
Binder : ForEach(*1: qn, Guard(?2: *1, ToU8(?2)))
###
> ToU8(qr8)
ToU8(qr8) : u8?*
Binder : ForEach(*1: qr8, Guard(?2: *1, ToU8(?2)))
###
> ToU8(qr4)
ToU8(qr4) : u8?*
Binder : ForEach(*1: qr4, Guard(?2: *1, ToU8(?2)))
###
> ToU8(qi)
ToU8(qi) : u8?*
Binder : ForEach(*1: qi, Guard(?2: *1, ToU8(?2)))
###
> ToU8(qi8)
ToU8(qi8) : u8?*
Binder : ForEach(*1: qi8, Guard(?2: *1, ToU8(?2)))
###
> ToU4(qi4)
ToU4(qi4) : u4?*
Binder : ForEach(*1: qi4, Guard(?2: *1, ToU4(?2)))
###
> ToU2(qi2)
ToU2(qi2) : u2?*
Binder : ForEach(*1: qi2, Guard(?2: *1, ToU2(?2)))
###
> ToU1(qi1)
ToU1(qi1) : u1?*
Binder : ForEach(*1: qi1, Guard(?2: *1, ToU1(?2)))
###
> ToU4(qu8)
ToU4(qu8) : u4?*
Binder : ForEach(*1: qu8, Guard(?2: *1, ToU4(?2)))
###
> ToU2(qu4)
ToU2(qu4) : u2?*
Binder : ForEach(*1: qu4, Guard(?2: *1, ToU2(?2)))
###
> ToU1(qu2)
ToU1(qu2) : u1?*
Binder : ForEach(*1: qu2, Guard(?2: *1, ToU1(?2)))
###
> ToU8(o)
ToU8(o) : u8?*
Binder : ForEach(*1: o, Guard(?2: *1, ToU8*(Unit<u8>(?2))))
Reducer: ForEach(*1: o, null)
###
> ToU1(qb)
ToU1(qb) : u1?*
Binder : ForEach(*1: qb, Guard(?2: *1, ToU1*(?2)))
Reducer: ForEach(*1: qb, Guard(?2: *1, Num<u1>(?2)))
###
> ToU8(qd)
ToU8(qd) : u8?*
Binder : ForEach(*1: qd, Guard(?2: *1, ToU8*(?2)))
Reducer: ForEach(*1: qd, Guard(?2: *1, CastU8(Date.TotalTicks(?2))))
###
> ToU8(qu8)
ToU8(qu8) : u8?*
Binder : ForEach(*1: qu8, Guard(?2: *1, ToU8*(?2)))
Reducer: qu8
###
> ToU8(qu4)
ToU8(qu4) : u8?*
Binder : ForEach(*1: qu4, Guard(?2: *1, ToU8*(?2)))
Reducer: ForEach(*1: qu4, Guard(?2: *1, Num<u8>(?2)))
###
> ToU4(qu4)
ToU4(qu4) : u4?*
Binder : ForEach(*1: qu4, Guard(?2: *1, ToU4*(?2)))
Reducer: qu4
###
> ToU4(qu2)
ToU4(qu2) : u4?*
Binder : ForEach(*1: qu2, Guard(?2: *1, ToU4*(?2)))
Reducer: ForEach(*1: qu2, Guard(?2: *1, Num<u4>(?2)))
###
> ToU2(qu2)
ToU2(qu2) : u2?*
Binder : ForEach(*1: qu2, Guard(?2: *1, ToU2*(?2)))
Reducer: qu2
###
> ToU2(qu1)
ToU2(qu1) : u2?*
Binder : ForEach(*1: qu1, Guard(?2: *1, ToU2*(?2)))
Reducer: ForEach(*1: qu1, Guard(?2: *1, Num<u2>(?2)))
###
> ToU1(qu1)
ToU1(qu1) : u1?*
Binder : ForEach(*1: qu1, Guard(?2: *1, ToU1*(?2)))
Reducer: qu1
###
> ToU4(3.14)
ToU4(3.14) : u4?
Binder : ToU4(3.14)
Reducer: Opt<u4?>(3)
###
> ToU4(1/0)
ToU4(1 / 0) : u4?
Binder : ToU4(Mul(1, [/] 0))
Reducer: null
###
> ToU4(3.14, null)
ToU4(3.14, null) : u4?
Binder : ToU4(3.14, null)
Reducer: Opt<u4?>(3)
###
> ToU4(1/0,  null)
ToU4(1 / 0, null) : u4?
Binder : ToU4(Mul(1, [/] 0), null)
Reducer: null
###
> ToU4(3.14, Null(5u2))
ToU4(3.14, Null(5)) : u4?
Binder : ToU4(3.14, Guard(?1: DefOpt*(5), Num<u4>(?1)))
Reducer: Opt<u4?>(3)
###
> ToU4(3.14, Opt (5u2))
ToU4(3.14, Opt(5)) : u4?
Binder : ToU4(3.14, Guard(?1: Opt*(5), Num<u4>(?1)))
Reducer: Opt<u4?>(3)
###
> ToU4(1/0,  Null(5u2))
ToU4(1 / 0, Null(5)) : u4?
Binder : ToU4(Mul(1, [/] 0), Guard(?1: DefOpt*(5), Num<u4>(?1)))
Reducer: null
###
> ToU4(1/0,  Opt (5u2))
ToU4(1 / 0, Opt(5)) : u4?
Binder : ToU4(Mul(1, [/] 0), Guard(?1: Opt*(5), Num<u4>(?1)))
Reducer: Opt<u4?>(5)
###
> ToU4(3.14, 5u2)
ToU4(3.14, 5) : u4
Binder : ToU4(3.14, 5)
Reducer: 3
###
> ToU4(1/0,  5u2)
ToU4(1 / 0, 5) : u4
Binder : ToU4(Mul(1, [/] 0), 5)
Reducer: 5
###
> ToU4(Null(3.14))
ToU4(Null(3.14)) : u4?
Binder : Guard(?1: DefOpt*(3.14), ToU4(?1))
Reducer: null
###
> ToU4(Opt (3.14))
ToU4(Opt(3.14)) : u4?
Binder : Guard(?1: Opt*(3.14), ToU4(?1))
Reducer: Opt<u4?>(3)
###
> ToU4(Opt (1/0 ))
ToU4(Opt(1 / 0)) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToU4(?1))
Reducer: null
###
> ToU4(Null(3.14), null)
ToU4(Null(3.14), null) : u4?
Binder : Guard(?1: DefOpt*(3.14), ToU4(?1, null))
Reducer: null
###
> ToU4(Opt (3.14), null)
ToU4(Opt(3.14), null) : u4?
Binder : Guard(?1: Opt*(3.14), ToU4(?1, null))
Reducer: Opt<u4?>(3)
###
> ToU4(Opt (1/0 ), null)
ToU4(Opt(1 / 0), null) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToU4(?1, null))
Reducer: null
###
> ToU4(Null(3.14), Null(5u2))
ToU4(Null(3.14), Null(5)) : u4?
Binder : Guard(?1: DefOpt*(3.14), ToU4(?1, Guard(?2: DefOpt*(5), Num<u4>(?2))))
Reducer: null
###
> ToU4(Null(3.14), Opt (5u2))
ToU4(Null(3.14), Opt(5)) : u4?
Binder : Guard(?1: DefOpt*(3.14), ToU4(?1, Guard(?2: Opt*(5), Num<u4>(?2))))
Reducer: null
###
> ToU4(Opt (3.14), Null(5u2))
ToU4(Opt(3.14), Null(5)) : u4?
Binder : Guard(?1: Opt*(3.14), ToU4(?1, Guard(?2: DefOpt*(5), Num<u4>(?2))))
Reducer: Opt<u4?>(3)
###
> ToU4(Opt (3.14), Opt (5u2))
ToU4(Opt(3.14), Opt(5)) : u4?
Binder : Guard(?1: Opt*(3.14), ToU4(?1, Guard(?2: Opt*(5), Num<u4>(?2))))
Reducer: Opt<u4?>(3)
###
> ToU4(Opt (1/0 ), Null(5u2))
ToU4(Opt(1 / 0), Null(5)) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToU4(?1, Guard(?2: DefOpt*(5), Num<u4>(?2))))
Reducer: null
###
> ToU4(Opt (1/0 ), Opt (5u2))
ToU4(Opt(1 / 0), Opt(5)) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToU4(?1, Guard(?2: Opt*(5), Num<u4>(?2))))
Reducer: Opt<u4?>(5)
###
> ToU4(Null(3.14), 5u2)
ToU4(Null(3.14), 5) : u4?
Binder : Guard(?1: DefOpt*(3.14), ToU4(?1, 5))
Reducer: null
###
> ToU4(Opt (3.14), 5u2)
ToU4(Opt(3.14), 5) : u4?
Binder : Guard(?1: Opt*(3.14), ToU4(?1, 5))
Reducer: Opt<u4?>(3)
###
> ToU4(Opt (1/0 ), 5u2)
ToU4(Opt(1 / 0), 5) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToU4(?1, 5))
Reducer: Opt<u4?>(5)
###
> To(3.14, Null(5u4))
To(3.14, Null(5)) : u4?
Binder : To*(3.14, DefOpt*(5))
Reducer: Opt<u4?>(3)
###
> To(3.14, Opt (5u4))
To(3.14, Opt(5)) : u4?
Binder : To*(3.14, Opt*(5))
Reducer: Opt<u4?>(3)
###
> To(1/0,  Null(5u4))
To(1 / 0, Null(5)) : u4?
Binder : To*(Mul(1, [/] 0), DefOpt*(5))
Reducer: null
###
> To(1/0 , Opt (5u4))
To(1 / 0, Opt(5)) : u4?
Binder : To*(Mul(1, [/] 0), Opt*(5))
Reducer: Opt<u4?>(5)
###
> To(3.14, 5u4)
To(3.14, 5) : u4
Binder : To*(3.14, 5)
Reducer: 3
###
> To(1/0,  5u4)
To(1 / 0, 5) : u4
Binder : To*(Mul(1, [/] 0), 5)
Reducer: 5
###
> To(Null(3.14), Null(5u4))
To(Null(3.14), Null(5)) : u4?
Binder : Guard(?1: DefOpt*(3.14), To*(?1, DefOpt*(5)))
Reducer: null
###
> To(Null(3.14), Opt (5u4))
To(Null(3.14), Opt(5)) : u4?
Binder : Guard(?1: DefOpt*(3.14), To*(?1, Opt*(5)))
Reducer: null
###
> To(Opt (3.14), Null(5u4))
To(Opt(3.14), Null(5)) : u4?
Binder : Guard(?1: Opt*(3.14), To*(?1, DefOpt*(5)))
Reducer: Opt<u4?>(3)
###
> To(Opt (3.14), Opt (5u4))
To(Opt(3.14), Opt(5)) : u4?
Binder : Guard(?1: Opt*(3.14), To*(?1, Opt*(5)))
Reducer: Opt<u4?>(3)
###
> To(Opt (1/0 ), Null(5u4))
To(Opt(1 / 0), Null(5)) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), To*(?1, DefOpt*(5)))
Reducer: null
###
> To(Opt (1/0 ), Opt (5u4))
To(Opt(1 / 0), Opt(5)) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), To*(?1, Opt*(5)))
Reducer: Opt<u4?>(5)
###
> To(Null(3.14), 5u4)
To(Null(3.14), 5) : u4?
Binder : Guard(?1: DefOpt*(3.14), To*(?1, 5))
Reducer: null
###
> To(Opt (3.14), 5u4)
To(Opt(3.14), 5) : u4?
Binder : Guard(?1: Opt*(3.14), To*(?1, 5))
Reducer: Opt<u4?>(3)
###
> To(Opt (1/0 ), 5u4)
To(Opt(1 / 0), 5) : u4?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), To*(?1, 5))
Reducer: Opt<u4?>(5)
###
> ToU1(false)
ToU1(false) : u1
Binder : ToU1*(false)
Reducer: 0
###
> ToU1(true)
ToU1(true) : u1
Binder : ToU1*(true)
Reducer: 1
###
> ToU1(-1)
ToU1(-1) : u1?
Binder : ToU1(-1)
Reducer: null
###
> ToU1(0)
ToU1(0) : u1?
Binder : ToU1(0)
Reducer: Opt<u1?>(0)
###
> ToU1(255)
ToU1(255) : u1?
Binder : ToU1(255)
Reducer: Opt<u1?>(255)
###
> ToU1(256)
ToU1(256) : u1?
Binder : ToU1(256)
Reducer: null
###
> To(-1, 5u1)
To(-1, 5) : u1
Binder : To*(-1, 5)
Reducer: 5
###
> ToU2(-1)
ToU2(-1) : u2?
Binder : ToU2(-1)
Reducer: null
###
> ToU2(0)
ToU2(0) : u2?
Binder : ToU2(0)
Reducer: Opt<u2?>(0)
###
> ToU2(65535)
ToU2(65535) : u2?
Binder : ToU2(65535)
Reducer: Opt<u2?>(65535)
###
> ToU2(65536)
ToU2(65536) : u2?
Binder : ToU2(65536)
Reducer: null
###
> To(0, 5u2)
To(0, 5) : u2
Binder : To*(0, 5)
Reducer: 0
###
> ToU4(-1i8)
ToU4(-1) : u4?
Binder : ToU4(-1)
Reducer: null
###
> ToU4(0i8)
ToU4(0) : u4?
Binder : ToU4(0)
Reducer: Opt<u4?>(0)
###
> ToU4(4294967295i8)
ToU4(4294967295) : u4?
Binder : ToU4(4294967295)
Reducer: Opt<u4?>(4294967295)
###
> ToU4(4294967296i8)
ToU4(4294967296) : u4?
Binder : ToU4(4294967296)
Reducer: null
###
> To(4294967295i8, 5u4)
To(4294967295, 5) : u4
Binder : To*(4294967295, 5)
Reducer: 4294967295
###
> ToU8(-1ia)
ToU8(-1) : u8?
Binder : ToU8(-1)
Reducer: null
###
> ToU8(0ia)
ToU8(0) : u8?
Binder : ToU8(0)
Reducer: Opt<u8?>(0)
###
> ToU8(18446744073709551615ia)
ToU8(18446744073709551615) : u8?
Binder : ToU8(18446744073709551615)
Reducer: Opt<u8?>(18446744073709551615)
###
> ToU8(18446744073709551616ia)
ToU8(18446744073709551616) : u8?
Binder : ToU8(18446744073709551616)
Reducer: null
###
> To(18446744073709551616ia, 5u8)
To(18446744073709551616, 5) : u8
Binder : To*(18446744073709551616, 5)
Reducer: 5
###
> ToU4(-1/0)
ToU4(-1 / 0) : u4?
Binder : ToU4(Mul(-1, [/] 0))
Reducer: null
###
> ToU4(1/0)
ToU4(1 / 0) : u4?
Binder : ToU4(Mul(1, [/] 0))
Reducer: null
###
> ToU4(0/0)
ToU4(0 / 0) : u4?
Binder : ToU4(Mul(0, [/] 0))
Reducer: null
###
> To(-1/0, 1u4)
To(-1 / 0, 1) : u4
Binder : To*(Mul(-1, [/] 0), 1)
Reducer: 1
###
> To(1/0, 2u4)
To(1 / 0, 2) : u4
Binder : To*(Mul(1, [/] 0), 2)
Reducer: 2
###
> ToU4(0/0, 3u2)
ToU4(0 / 0, 3) : u4
Binder : ToU4(Mul(0, [/] 0), 3)
Reducer: 3
###
> ToU1(-0x10000000000000 * 2.0 ^ -52)
ToU1(-4503599627370496 * 2^-52) : u1?
Binder : ToU1(Mul(-4503599627370496, Power(2, -52)))
Reducer: null
###
> ToU1(-0x1FFFFFFFFFFFFF * 2.0 ^ -53)
ToU1(-9007199254740991 * 2^-53) : u1?
Binder : ToU1(Mul(-9007199254740991, Power(2, -53)))
Reducer: Opt<u1?>(0)
###
> ToU1(ToR4(-0x7FFFFF    * 2.0 ^ -23))
ToU1(ToR4(-8388607 * 2^-23)) : u1?
Binder : ToU1(ToR4*(Mul(-8388607, Power(2, -23))))
Reducer: Opt<u1?>(0)
###
> ToU1(ToR4( 0xFFFFFF    * 2.0 ^ -16))
ToU1(ToR4(16777215 * 2^-16)) : u1?
Binder : ToU1(ToR4*(Mul(16777215, Power(2, -16))))
Reducer: Opt<u1?>(255)
###
> ToU1( 0x1FFFFFFFFFFFFF * 2.0 ^ -45)
ToU1(9007199254740991 * 2^-45) : u1?
Binder : ToU1(Mul(9007199254740991, Power(2, -45)))
Reducer: Opt<u1?>(255)
###
> ToU1( 0x10000000000000 * 2.0 ^ -44)
ToU1(4503599627370496 * 2^-44) : u1?
Binder : ToU1(Mul(4503599627370496, Power(2, -44)))
Reducer: null
###
> ToU2(-0x10000000000000 * 2.0 ^ -52)
ToU2(-4503599627370496 * 2^-52) : u2?
Binder : ToU2(Mul(-4503599627370496, Power(2, -52)))
Reducer: null
###
> ToU2(-0x1FFFFFFFFFFFFF * 2.0 ^ -53)
ToU2(-9007199254740991 * 2^-53) : u2?
Binder : ToU2(Mul(-9007199254740991, Power(2, -53)))
Reducer: Opt<u2?>(0)
###
> ToU2(ToR4(-0x7FFFFF    * 2.0 ^ -23))
ToU2(ToR4(-8388607 * 2^-23)) : u2?
Binder : ToU2(ToR4*(Mul(-8388607, Power(2, -23))))
Reducer: Opt<u2?>(0)
###
> ToU2(ToR4( 0xFFFFFF    * 2.0 ^ -8))
ToU2(ToR4(16777215 * 2^-8)) : u2?
Binder : ToU2(ToR4*(Mul(16777215, Power(2, -8))))
Reducer: Opt<u2?>(65535)
###
> ToU2( 0x1FFFFFFFFFFFFF * 2.0 ^ -37)
ToU2(9007199254740991 * 2^-37) : u2?
Binder : ToU2(Mul(9007199254740991, Power(2, -37)))
Reducer: Opt<u2?>(65535)
###
> ToU2( 0x10000000000000 * 2.0 ^ -36)
ToU2(4503599627370496 * 2^-36) : u2?
Binder : ToU2(Mul(4503599627370496, Power(2, -36)))
Reducer: null
###
> ToU4(-0x10000000000000 * 2.0 ^ -52)
ToU4(-4503599627370496 * 2^-52) : u4?
Binder : ToU4(Mul(-4503599627370496, Power(2, -52)))
Reducer: null
###
> ToU4(-0x1FFFFFFFFFFFFF * 2.0 ^ -53)
ToU4(-9007199254740991 * 2^-53) : u4?
Binder : ToU4(Mul(-9007199254740991, Power(2, -53)))
Reducer: Opt<u4?>(0)
###
> ToU4(ToR4(-0x7FFFFF    * 2.0 ^ -23))
ToU4(ToR4(-8388607 * 2^-23)) : u4?
Binder : ToU4(ToR4*(Mul(-8388607, Power(2, -23))))
Reducer: Opt<u4?>(0)
###
> ToU4(ToR4( 0xFFFFFF    * 2.0 ^ 8))
ToU4(ToR4(16777215 * 2^8)) : u4?
Binder : ToU4(ToR4*(Mul(16777215, Power(2, 8))))
Reducer: Opt<u4?>(4294967040)
###
> ToU4( 0x1FFFFFFFFFFFFF * 2.0 ^ -21)
ToU4(9007199254740991 * 2^-21) : u4?
Binder : ToU4(Mul(9007199254740991, Power(2, -21)))
Reducer: Opt<u4?>(4294967295)
###
> ToU4( 0x10000000000000 * 2.0 ^ -20)
ToU4(4503599627370496 * 2^-20) : u4?
Binder : ToU4(Mul(4503599627370496, Power(2, -20)))
Reducer: null
###
> ToU8(-0x10000000000000 * 2.0 ^ -52)
ToU8(-4503599627370496 * 2^-52) : u8?
Binder : ToU8(Mul(-4503599627370496, Power(2, -52)))
Reducer: null
###
> ToU8(-0x1FFFFFFFFFFFFF * 2.0 ^ -53)
ToU8(-9007199254740991 * 2^-53) : u8?
Binder : ToU8(Mul(-9007199254740991, Power(2, -53)))
Reducer: Opt<u8?>(0)
###
> ToU8(ToR4(-0x7FFFFF    * 2.0 ^ -23))
ToU8(ToR4(-8388607 * 2^-23)) : u8?
Binder : ToU8(ToR4*(Mul(-8388607, Power(2, -23))))
Reducer: Opt<u8?>(0)
###
> ToU8(ToR4( 0xFFFFFF    * 2.0 ^ 40))
ToU8(ToR4(16777215 * 2^40)) : u8?
Binder : ToU8(ToR4*(Mul(16777215, Power(2, 40))))
Reducer: Opt<u8?>(18446742974197923840)
###
> ToU8( 0x1FFFFFFFFFFFFF * 2.0 ^ 11)
ToU8(9007199254740991 * 2^11) : u8?
Binder : ToU8(Mul(9007199254740991, Power(2, 11)))
Reducer: Opt<u8?>(18446744073709549568)
###
> ToU8( 0x10000000000000 * 2.0 ^ 12)
ToU8(4503599627370496 * 2^12) : u8?
Binder : ToU8(Mul(4503599627370496, Power(2, 12)))
Reducer: null
###
> ToU4("")
ToU4("") : u4?
Binder : ToU4("")
Reducer: null
###
> ToU4(" ")
ToU4(" ") : u4?
Binder : ToU4(" ")
Reducer: null
###
> To("", 1u2)
To("", 1) : u2
Binder : To*("", 1)
Reducer: 1
###
> ToU4(" ", 2u2)
ToU4(" ", 2) : u4
Binder : ToU4(" ", 2)
Reducer: 2
###
> ToU4("false")
ToU4("false") : u4?
Binder : ToU4("false")
Reducer: null
###
> ToU4("true")
ToU4("true") : u4?
Binder : ToU4("true")
Reducer: null
###
> To("false", 0u4)
To("false", 0) : u4
Binder : To*("false", 0)
Reducer: 0
###
> ToU4("true", 1u2)
ToU4("true", 1) : u4
Binder : ToU4("true", 1)
Reducer: 1
###
> ToU4("1_234")
ToU4("1_234") : u4?
Binder : ToU4("1_234")
Reducer: null
###
> To("1_234", 5u4)
To("1_234", 5) : u4
Binder : To*("1_234", 5)
Reducer: 5
###
> ToU4("-0")
ToU4("-0") : u4?
Binder : ToU4("-0")
Reducer: Opt<u4?>(0)
###
> ToU1("-1 ")
ToU1("-1 ") : u1?
Binder : ToU1("-1 ")
Reducer: null
###
> ToU1("(0)")
ToU1("(0)") : u1?
Binder : ToU1("(0)")
Reducer: Opt<u1?>(0)
###
> ToU1("255")
ToU1("255") : u1?
Binder : ToU1("255")
Reducer: Opt<u1?>(255)
###
> ToU1("256")
ToU1("256") : u1?
Binder : ToU1("256")
Reducer: null
###
> To("-1", 5u1)
To("-1", 5) : u1
Binder : To*("-1", 5)
Reducer: 5
###
> ToU2("(1)")
ToU2("(1)") : u2?
Binder : ToU2("(1)")
Reducer: null
###
> ToU2("-0 ")
ToU2("-0 ") : u2?
Binder : ToU2("-0 ")
Reducer: Opt<u2?>(0)
###
> ToU2("65535")
ToU2("65535") : u2?
Binder : ToU2("65535")
Reducer: Opt<u2?>(65535)
###
> ToU2("65536")
ToU2("65536") : u2?
Binder : ToU2("65536")
Reducer: null
###
> To("0", 5u2)
To("0", 5) : u2
Binder : To*("0", 5)
Reducer: 0
###
> ToU4("-1 ")
ToU4("-1 ") : u4?
Binder : ToU4("-1 ")
Reducer: null
###
> ToU4("(0)")
ToU4("(0)") : u4?
Binder : ToU4("(0)")
Reducer: Opt<u4?>(0)
###
> ToU4("4,294,967,295")
ToU4("4,294,967,295") : u4?
Binder : ToU4("4,294,967,295")
Reducer: Opt<u4?>(4294967295)
###
> ToU4("4,294,967,296")
ToU4("4,294,967,296") : u4?
Binder : ToU4("4,294,967,296")
Reducer: null
###
> To("4294967295", 5u4)
To("4294967295", 5) : u4
Binder : To*("4294967295", 5)
Reducer: 4294967295
###
> ToU8("(1)")
ToU8("(1)") : u8?
Binder : ToU8("(1)")
Reducer: null
###
> ToU8(" 0 ")
ToU8(" 0 ") : u8?
Binder : ToU8(" 0 ")
Reducer: Opt<u8?>(0)
###
> ToU8("18,446,744,073,709,551,615")
ToU8("18,446,744,073,709,551,615") : u8?
Binder : ToU8("18,446,744,073,709,551,615")
Reducer: Opt<u8?>(18446744073709551615)
###
> ToU8("18,446,744,073,709,551,616")
ToU8("18,446,744,073,709,551,616") : u8?
Binder : ToU8("18,446,744,073,709,551,616")
Reducer: null
###
> To("18,446,744,073,709,551,616", 5u8)
To("18,446,744,073,709,551,616", 5) : u8
Binder : To*("18,446,744,073,709,551,616", 5)
Reducer: 5
###
> ToU4("-0.0")
ToU4("-0.0") : u4?
Binder : ToU4("-0.0")
Reducer: null
###
> ToU4("12.34")
ToU4("12.34") : u4?
Binder : ToU4("12.34")
Reducer: null
###
> ToU4("2e20")
ToU4("2e20") : u4?
Binder : ToU4("2e20")
Reducer: null
###
> ToU4("∞")
ToU4("∞") : u4?
Binder : ToU4("∞")
Reducer: null
###
> ToU4("Infinity")
ToU4("Infinity") : u4?
Binder : ToU4("Infinity")
Reducer: null
###
> ToU4("NaN")
ToU4("NaN") : u4?
Binder : ToU4("NaN")
Reducer: null
###
> To("-0.0", 5u4)
To("-0.0", 5) : u4
Binder : To*("-0.0", 5)
Reducer: 5
###
> To("12.34", 5u4)
To("12.34", 5) : u4
Binder : To*("12.34", 5)
Reducer: 5
###
> To("2e20", 5u4)
To("2e20", 5) : u4
Binder : To*("2e20", 5)
Reducer: 5
###
> ToU4("∞", 5u2)
ToU4("∞", 5) : u4
Binder : ToU4("∞", 5)
Reducer: 5
###
> ToU4("Infinity", 5u2)
ToU4("Infinity", 5) : u4
Binder : ToU4("Infinity", 5)
Reducer: 5
###
> ToU4("NaN", 5u2)
ToU4("NaN", 5) : u4
Binder : ToU4("NaN", 5)
Reducer: 5
###
> ToU1(Date(1, 1, 1, 0, 0, 0, 1, 0))
ToU1(Date(1, 1, 1, 0, 0, 0, 1, 0)) : u1?
Binder : ToU1*(Date(1, 1, 1, 0, 0, 0, 1, 0))
Reducer: ToU1(Date.TotalTicks(Date(1, 1, 1, 0, 0, 0, 1, 0)))
###
> ToU8(Time(23, 59, 59))
ToU8(Time(23, 59, 59)) : u8?
Binder : ToU8*(Time(23, 59, 59))
Reducer: ToU8(Time.TotalTicks(Time(23, 59, 59)))
###
