**** New udf: G, arity: 3
**** Add globals: {xb__:b, xb_q:b?, xd__:d, xd_q:d?, xi4_:i4, xi4q:i4?, xi__:i, xi_q:i?, xr4_:r4, xr4q:r4?, xr8_:r8, xr8q:r8?, xs__:s, xt__:t, xt_q:t?, xu4_:u4, xu4q:u4?}
**** Add globals: {yb__:b, yb_q:b?, yd__:d, yd_q:d?, yi4_:i4, yi4q:i4?, yi__:i, yi_q:i?, yr4_:r4, yr4q:r4?, yr8_:r8, yr8q:r8?, ys__:s, yt__:t, yt_q:t?, yu4_:u4, yu4q:u4?}
**** Add globals: {zb__:b, zb_q:b?, zd__:d, zd_q:d?, zi4_:i4, zi4q:i4?, zi__:i, zi_q:i?, zr4_:r4, zr4q:r4?, zr8_:r8, zr8q:r8?, zs__:s, zt__:t, zt_q:t?, zu4_:u4, zu4q:u4?}

> G(xs__, ys__, zs__) // RRR
G(xs__, ys__, zs__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xs__) !@= Global(ys__) $= Global(zs__)))
// (∂.xs__:s, ∂.ys__:s, ∂.zs__:s) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):str
      1) stloc.0 [str]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):str
      1) stloc.1 [str]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):str
      1) stloc.2 [str]
      1) ldloc.0 [str]
      1) ldloc.1 [str]
      5) call static str::Equals(str, str):bool
      5) brtrue [0]
      1) ldloc.1 [str]
      1) ldloc.2 [str]
      5) call static StrComparer::EqTi(str, str):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 58

Func sig: (xs__:s, ys__:s, zs__:s) to b
Type: bool, Value: false
###
> G(xb__, yb__, zb__)
G(xb__, yb__, zb__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb__) !@= Global(yb__) @= Global(zb__)))
// (∂.xb__:b, ∂.yb__:b, ∂.zb__:b) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.0 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.1 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.2 [bool]
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) beq [0]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 50

Func sig: (xb__:b, yb__:b, zb__:b) to b
Type: bool, Value: false
###
> G(xr8_, yr8_, zr8_)
G(xr8_, yr8_, zr8_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8_) !@= Global(yr8_) $= Global(zr8_)))
// (∂.xr8_:r8, ∂.yr8_:r8, ∂.zr8_:r8) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.0 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.1 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.2 [r8]
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [0]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 55

Func sig: (xr8_:r8, yr8_:r8, zr8_:r8) to b
Type: bool, Value: false
###
> G(xr4_, yr4_, zr4_)
G(xr4_, yr4_, zr4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4_) !@= Global(yr4_) $= Global(zr4_)))
// (∂.xr4_:r4, ∂.yr4_:r4, ∂.zr4_:r4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.0 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.1 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.2 [r4]
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [0]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 55

Func sig: (xr4_:r4, yr4_:r4, zr4_:r4) to b
Type: bool, Value: false
###
> G(xi__, yi__, zi__)
G(xi__, yi__, zi__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi__) !@= Global(yi__) @= Global(zi__)))
// (∂.xi__:i, ∂.yi__:i, ∂.zi__:i) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.2 [ia]
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [0]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 58

Func sig: (xi__:i, yi__:i, zi__:i) to b
Type: bool, Value: false
###
> G(xi4_, yi4_, zi4_)
G(xi4_, yi4_, zi4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4_) !@= Global(yi4_) @= Global(zi4_)))
// (∂.xi4_:i4, ∂.yi4_:i4, ∂.zi4_:i4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.2 [i4]
      1) ldloc.0 [i4]
      1) ldloc.1 [i4]
      5) beq [0]
      1) ldloc.1 [i4]
      1) ldloc.2 [i4]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 50

Func sig: (xi4_:i4, yi4_:i4, zi4_:i4) to b
Type: bool, Value: false
###
> G(xu4_, yu4_, zu4_)
G(xu4_, yu4_, zu4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4_) !@= Global(yu4_) @= Global(zu4_)))
// (∂.xu4_:u4, ∂.yu4_:u4, ∂.zu4_:u4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.2 [u4]
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) beq [0]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 50

Func sig: (xu4_:u4, yu4_:u4, zu4_:u4) to b
Type: bool, Value: false
###
> G(xd__, yd__, zd__)
G(xd__, yd__, zd__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd__) !@= Global(yd__) @= Global(zd__)))
// (∂.xd__:d, ∂.yd__:d, ∂.zd__:d) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.0 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.1 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.2 [Date]
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [0]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 58

Func sig: (xd__:d, yd__:d, zd__:d) to b
Type: bool, Value: false
###
> G(xt__, yt__, zt__)
G(xt__, yt__, zt__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt__) !@= Global(yt__) @= Global(zt__)))
// (∂.xt__:t, ∂.yt__:t, ∂.zt__:t) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.0 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.1 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.2 [Time]
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [0]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 58

Func sig: (xt__:t, yt__:t, zt__:t) to b
Type: bool, Value: false
###
> G(xb_q, yb__, zb__) // QRR
G(xb_q, yb__, zb__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb_q) !@= Global(yb__) @= Global(zb__)))
// (∂.xb_q:b?, ∂.yb__:b, ∂.zb__:b) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.1 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.2 [bool]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) beq [1]
  Label [0]:
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 68

Func sig: (xb_q:b?, yb__:b, zb__:b) to b
Type: bool, Value: true 
###
> G(xr8q, yr8_, zr8_)
G(xr8q, yr8_, zr8_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8q) !@= Global(yr8_) $= Global(zr8_)))
// (∂.xr8q:r8?, ∂.yr8_:r8, ∂.zr8_:r8) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.1 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.2 [r8]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [1]
  Label [0]:
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 73

Func sig: (xr8q:r8?, yr8_:r8, zr8_:r8) to b
Type: bool, Value: true 
###
> G(xr4q, yr4_, zr4_)
G(xr4q, yr4_, zr4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4q) !@= Global(yr4_) $= Global(zr4_)))
// (∂.xr4q:r4?, ∂.yr4_:r4, ∂.zr4_:r4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.1 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.2 [r4]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [1]
  Label [0]:
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 73

Func sig: (xr4q:r4?, yr4_:r4, zr4_:r4) to b
Type: bool, Value: true 
###
> G(xi_q, yi__, zi__)
G(xi_q, yi__, zi__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi_q) !@= Global(yi__) @= Global(zi__)))
// (∂.xi_q:i?, ∂.yi__:i, ∂.zi__:i) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.2 [ia]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [1]
  Label [0]:
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 76

Func sig: (xi_q:i?, yi__:i, zi__:i) to b
Type: bool, Value: true 
###
> G(xi4q, yi4_, zi4_)
G(xi4q, yi4_, zi4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4q) !@= Global(yi4_) @= Global(zi4_)))
// (∂.xi4q:i4?, ∂.yi4_:i4, ∂.zi4_:i4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.0 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.2 [i4]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) ldloc.1 [i4]
      5) beq [1]
  Label [0]:
      1) ldloc.1 [i4]
      1) ldloc.2 [i4]
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 68

Func sig: (xi4q:i4?, yi4_:i4, zi4_:i4) to b
Type: bool, Value: true 
###
> G(xu4q, yu4_, zu4_)
G(xu4q, yu4_, zu4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4q) !@= Global(yu4_) @= Global(zu4_)))
// (∂.xu4q:u4?, ∂.yu4_:u4, ∂.zu4_:u4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.2 [u4]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) beq [1]
  Label [0]:
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 68

Func sig: (xu4q:u4?, yu4_:u4, zu4_:u4) to b
Type: bool, Value: true 
###
> G(xd_q, yd__, zd__)
G(xd_q, yd__, zd__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd_q) !@= Global(yd__) @= Global(zd__)))
// (∂.xd_q:d?, ∂.yd__:d, ∂.zd__:d) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.1 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.2 [Date]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [1]
  Label [0]:
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 76

Func sig: (xd_q:d?, yd__:d, zd__:d) to b
Type: bool, Value: true 
###
> G(xt_q, yt__, zt__)
G(xt_q, yt__, zt__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt_q) !@= Global(yt__) @= Global(zt__)))
// (∂.xt_q:t?, ∂.yt__:t, ∂.zt__:t) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.1 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.2 [Time]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [1]
  Label [0]:
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 76

Func sig: (xt_q:t?, yt__:t, zt__:t) to b
Type: bool, Value: true 
###
> G(xb__, yb_q, zb__) // RQR
G(xb__, yb_q, zb__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb__) !@= Global(yb_q) @= Global(zb__)))
// (∂.xb__:b, ∂.yb_q:b?, ∂.zb__:b) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.0 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.2 [bool]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.3 [bool]
      1) ldloc.0 [bool]
      1) ldloc.3 [bool]
      5) beq [0]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 70

Func sig: (xb__:b, yb_q:b?, zb__:b) to b
Type: bool, Value: false
###
> G(xr8_, yr8q, zr8_)
G(xr8_, yr8q, zr8_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8_) !@= Global(yr8q) $= Global(zr8_)))
// (∂.xr8_:r8, ∂.yr8q:r8?, ∂.zr8_:r8) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.0 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.2 [r8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.3 [r8]
      1) ldloc.0 [r8]
      1) ldloc.3 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [0]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 75

Func sig: (xr8_:r8, yr8q:r8?, zr8_:r8) to b
Type: bool, Value: false
###
> G(xr4_, yr4q, zr4_)
G(xr4_, yr4q, zr4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4_) !@= Global(yr4q) $= Global(zr4_)))
// (∂.xr4_:r4, ∂.yr4q:r4?, ∂.zr4_:r4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.0 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.2 [r4]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) stloc.3 [r4]
      1) ldloc.0 [r4]
      1) ldloc.3 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [0]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 75

Func sig: (xr4_:r4, yr4q:r4?, zr4_:r4) to b
Type: bool, Value: false
###
> G(xi__, yi_q, zi__)
G(xi__, yi_q, zi__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi__) !@= Global(yi_q) @= Global(zi__)))
// (∂.xi__:i, ∂.yi_q:i?, ∂.zi__:i) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.2 [ia]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) stloc.3 [ia]
      1) ldloc.0 [ia]
      1) ldloc.3 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [0]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 78

Func sig: (xi__:i, yi_q:i?, zi__:i) to b
Type: bool, Value: false
###
> G(xi4_, yi4q, zi4_)
G(xi4_, yi4q, zi4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4_) !@= Global(yi4q) @= Global(zi4_)))
// (∂.xi4_:i4, ∂.yi4q:i4?, ∂.zi4_:i4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.1 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.2 [i4]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) stloc.3 [i4]
      1) ldloc.0 [i4]
      1) ldloc.3 [i4]
      5) beq [0]
      1) ldloc.3 [i4]
      1) ldloc.2 [i4]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 70

Func sig: (xi4_:i4, yi4q:i4?, zi4_:i4) to b
Type: bool, Value: false
###
> G(xu4_, yu4q, zu4_)
G(xu4_, yu4q, zu4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4_) !@= Global(yu4q) @= Global(zu4_)))
// (∂.xu4_:u4, ∂.yu4q:u4?, ∂.zu4_:u4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.2 [u4]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) stloc.3 [u4]
      1) ldloc.0 [u4]
      1) ldloc.3 [u4]
      5) beq [0]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 70

Func sig: (xu4_:u4, yu4q:u4?, zu4_:u4) to b
Type: bool, Value: false
###
> G(xd__, yd_q, zd__)
G(xd__, yd_q, zd__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd__) !@= Global(yd_q) @= Global(zd__)))
// (∂.xd__:d, ∂.yd_q:d?, ∂.zd__:d) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.0 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.2 [Date]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) stloc.3 [Date]
      1) ldloc.0 [Date]
      1) ldloc.3 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [0]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 78

Func sig: (xd__:d, yd_q:d?, zd__:d) to b
Type: bool, Value: false
###
> G(xt__, yt_q, zt__)
G(xt__, yt_q, zt__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt__) !@= Global(yt_q) @= Global(zt__)))
// (∂.xt__:t, ∂.yt_q:t?, ∂.zt__:t) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.0 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.2 [Time]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) stloc.3 [Time]
      1) ldloc.0 [Time]
      1) ldloc.3 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [0]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 78

Func sig: (xt__:t, yt_q:t?, zt__:t) to b
Type: bool, Value: false
###
> G(xb__, yb__, zb_q) // RRQ
G(xb__, yb__, zb_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb__) !@= Global(yb__) @= Global(zb_q)))
// (∂.xb__:b, ∂.yb__:b, ∂.zb_q:b?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.0 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.1 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.2 [Opt<bool>]
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) beq [0]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 68

Func sig: (xb__:b, yb__:b, zb_q:b?) to b
Type: bool, Value: false
###
> G(xr8_, yr8_, zr8q)
G(xr8_, yr8_, zr8q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8_) !@= Global(yr8_) $= Global(zr8q)))
// (∂.xr8_:r8, ∂.yr8_:r8, ∂.zr8q:r8?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.0 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.1 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.2 [Opt<r8>]
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [0]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 73

Func sig: (xr8_:r8, yr8_:r8, zr8q:r8?) to b
Type: bool, Value: false
###
> G(xr4_, yr4_, zr4q)
G(xr4_, yr4_, zr4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4_) !@= Global(yr4_) $= Global(zr4q)))
// (∂.xr4_:r4, ∂.yr4_:r4, ∂.zr4q:r4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.0 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.1 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.2 [Opt<r4>]
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [0]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 73

Func sig: (xr4_:r4, yr4_:r4, zr4q:r4?) to b
Type: bool, Value: false
###
> G(xi__, yi__, zi_q)
G(xi__, yi__, zi_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi__) !@= Global(yi__) @= Global(zi_q)))
// (∂.xi__:i, ∂.yi__:i, ∂.zi_q:i?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.2 [Opt<ia>]
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [0]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 76

Func sig: (xi__:i, yi__:i, zi_q:i?) to b
Type: bool, Value: false
###
> G(xi4_, yi4_, zi4q)
G(xi4_, yi4_, zi4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4_) !@= Global(yi4_) @= Global(zi4q)))
// (∂.xi4_:i4, ∂.yi4_:i4, ∂.zi4q:i4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.2 [Opt<i4>]
      1) ldloc.0 [i4]
      1) ldloc.1 [i4]
      5) beq [0]
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [i4]
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::GetValueOrDefault():i4
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 68

Func sig: (xi4_:i4, yi4_:i4, zi4q:i4?) to b
Type: bool, Value: false
###
> G(xu4_, yu4_, zu4q)
G(xu4_, yu4_, zu4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4_) !@= Global(yu4_) @= Global(zu4q)))
// (∂.xu4_:u4, ∂.yu4_:u4, ∂.zu4q:u4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.2 [Opt<u4>]
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) beq [0]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 68

Func sig: (xu4_:u4, yu4_:u4, zu4q:u4?) to b
Type: bool, Value: false
###
> G(xd__, yd__, zd_q)
G(xd__, yd__, zd_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd__) !@= Global(yd__) @= Global(zd_q)))
// (∂.xd__:d, ∂.yd__:d, ∂.zd_q:d?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.0 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.1 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.2 [Opt<Date>]
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [0]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 76

Func sig: (xd__:d, yd__:d, zd_q:d?) to b
Type: bool, Value: false
###
> G(xt__, yt__, zt_q)
G(xt__, yt__, zt_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt__) !@= Global(yt__) @= Global(zt_q)))
// (∂.xt__:t, ∂.yt__:t, ∂.zt_q:t?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.0 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.1 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.2 [Opt<Time>]
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [0]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 76

Func sig: (xt__:t, yt__:t, zt_q:t?) to b
Type: bool, Value: false
###
> G(xb_q, yb_q, zb__) // QQR
G(xb_q, yb_q, zb__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb_q) !@= Global(yb_q) @= Global(zb__)))
// (∂.xb_q:b?, ∂.yb_q:b?, ∂.zb__:b) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.2 [bool]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.3 [bool]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) beq [0]
  Label [1]:
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 88

Func sig: (xb_q:b?, yb_q:b?, zb__:b) to b
Type: bool, Value: false
###
> G(xr8q, yr8q, zr8_)
G(xr8q, yr8q, zr8_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8q) !@= Global(yr8q) $= Global(zr8_)))
// (∂.xr8q:r8?, ∂.yr8q:r8?, ∂.zr8_:r8) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.2 [r8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.3 [r8]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [0]
  Label [1]:
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 93

Func sig: (xr8q:r8?, yr8q:r8?, zr8_:r8) to b
Type: bool, Value: false
###
> G(xr4q, yr4q, zr4_)
G(xr4q, yr4q, zr4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4q) !@= Global(yr4q) $= Global(zr4_)))
// (∂.xr4q:r4?, ∂.yr4q:r4?, ∂.zr4_:r4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.2 [r4]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) stloc.3 [r4]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [0]
  Label [1]:
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 93

Func sig: (xr4q:r4?, yr4q:r4?, zr4_:r4) to b
Type: bool, Value: false
###
> G(xi_q, yi_q, zi__)
G(xi_q, yi_q, zi__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi_q) !@= Global(yi_q) @= Global(zi__)))
// (∂.xi_q:i?, ∂.yi_q:i?, ∂.zi__:i) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.2 [ia]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) stloc.3 [ia]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [0]
  Label [1]:
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 96

Func sig: (xi_q:i?, yi_q:i?, zi__:i) to b
Type: bool, Value: false
###
> G(xi4q, yi4q, zi4_)
G(xi4q, yi4q, zi4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4q) !@= Global(yi4q) @= Global(zi4_)))
// (∂.xi4q:i4?, ∂.yi4q:i4?, ∂.zi4_:i4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.0 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.1 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.2 [i4]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) stloc.3 [i4]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) ldloc.3 [i4]
      5) beq [0]
  Label [1]:
      1) ldloc.3 [i4]
      1) ldloc.2 [i4]
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 88

Func sig: (xi4q:i4?, yi4q:i4?, zi4_:i4) to b
Type: bool, Value: false
###
> G(xu4q, yu4q, zu4_)
G(xu4q, yu4q, zu4_) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4q) !@= Global(yu4q) @= Global(zu4_)))
// (∂.xu4q:u4?, ∂.yu4q:u4?, ∂.zu4_:u4) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.2 [u4]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) stloc.3 [u4]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) beq [0]
  Label [1]:
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 88

Func sig: (xu4q:u4?, yu4q:u4?, zu4_:u4) to b
Type: bool, Value: false
###
> G(xd_q, yd_q, zd__)
G(xd_q, yd_q, zd__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd_q) !@= Global(yd_q) @= Global(zd__)))
// (∂.xd_q:d?, ∂.yd_q:d?, ∂.zd__:d) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.2 [Date]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) stloc.3 [Date]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [0]
  Label [1]:
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 96

Func sig: (xd_q:d?, yd_q:d?, zd__:d) to b
Type: bool, Value: false
###
> G(xt_q, yt_q, zt__)
G(xt_q, yt_q, zt__) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt_q) !@= Global(yt_q) @= Global(zt__)))
// (∂.xt_q:t?, ∂.yt_q:t?, ∂.zt__:t) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.2 [Time]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) stloc.3 [Time]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [0]
  Label [1]:
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 96

Func sig: (xt_q:t?, yt_q:t?, zt__:t) to b
Type: bool, Value: false
###
> G(xb_q, yb__, zb_q) // QRQ
G(xb_q, yb__, zb_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb_q) !@= Global(yb__) @= Global(zb_q)))
// (∂.xb_q:b?, ∂.yb__:b, ∂.zb_q:b?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.1 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.2 [Opt<bool>]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 86

Func sig: (xb_q:b?, yb__:b, zb_q:b?) to b
Type: bool, Value: false
###
> G(xr8q, yr8_, zr8q)
G(xr8q, yr8_, zr8q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8q) !@= Global(yr8_) $= Global(zr8q)))
// (∂.xr8q:r8?, ∂.yr8_:r8, ∂.zr8q:r8?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.1 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.2 [Opt<r8>]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 91

Func sig: (xr8q:r8?, yr8_:r8, zr8q:r8?) to b
Type: bool, Value: false
###
> G(xr4q, yr4_, zr4q)
G(xr4q, yr4_, zr4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4q) !@= Global(yr4_) $= Global(zr4q)))
// (∂.xr4q:r4?, ∂.yr4_:r4, ∂.zr4q:r4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.1 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.2 [Opt<r4>]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 91

Func sig: (xr4q:r4?, yr4_:r4, zr4q:r4?) to b
Type: bool, Value: false
###
> G(xi_q, yi__, zi_q)
G(xi_q, yi__, zi_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi_q) !@= Global(yi__) @= Global(zi_q)))
// (∂.xi_q:i?, ∂.yi__:i, ∂.zi_q:i?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.2 [Opt<ia>]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 94

Func sig: (xi_q:i?, yi__:i, zi_q:i?) to b
Type: bool, Value: false
###
> G(xi4q, yi4_, zi4q)
G(xi4q, yi4_, zi4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4q) !@= Global(yi4_) @= Global(zi4q)))
// (∂.xi4q:i4?, ∂.yi4_:i4, ∂.zi4q:i4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.0 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.2 [Opt<i4>]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) ldloc.1 [i4]
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [i4]
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::GetValueOrDefault():i4
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 86

Func sig: (xi4q:i4?, yi4_:i4, zi4q:i4?) to b
Type: bool, Value: false
###
> G(xu4q, yu4_, zu4q)
G(xu4q, yu4_, zu4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4q) !@= Global(yu4_) @= Global(zu4q)))
// (∂.xu4q:u4?, ∂.yu4_:u4, ∂.zu4q:u4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.2 [Opt<u4>]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 86

Func sig: (xu4q:u4?, yu4_:u4, zu4q:u4?) to b
Type: bool, Value: false
###
> G(xd_q, yd__, zd_q)
G(xd_q, yd__, zd_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd_q) !@= Global(yd__) @= Global(zd_q)))
// (∂.xd_q:d?, ∂.yd__:d, ∂.zd_q:d?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.1 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.2 [Opt<Date>]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 94

Func sig: (xd_q:d?, yd__:d, zd_q:d?) to b
Type: bool, Value: false
###
> G(xt_q, yt__, zt_q)
G(xt_q, yt__, zt_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt_q) !@= Global(yt__) @= Global(zt_q)))
// (∂.xt_q:t?, ∂.yt__:t, ∂.zt_q:t?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.1 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.2 [Opt<Time>]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 94

Func sig: (xt_q:t?, yt__:t, zt_q:t?) to b
Type: bool, Value: false
###
> G(xb__, yb_q, zb_q) // RQQ
G(xb__, yb_q, zb_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb__) !@= Global(yb_q) $= Global(zb_q)))
// (∂.xb__:b, ∂.yb_q:b?, ∂.zb_q:b?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.0 [bool]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.2 [Opt<bool>]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.3 [bool]
      1) ldloc.0 [bool]
      1) ldloc.3 [bool]
      5) beq [0]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 88

Func sig: (xb__:b, yb_q:b?, zb_q:b?) to b
Type: bool, Value: false
###
> G(xr8_, yr8q, zr8q)
G(xr8_, yr8q, zr8q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8_) !@= Global(yr8q) $= Global(zr8q)))
// (∂.xr8_:r8, ∂.yr8q:r8?, ∂.zr8q:r8?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r8
      1) stloc.0 [r8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.2 [Opt<r8>]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.3 [r8]
      1) ldloc.0 [r8]
      1) ldloc.3 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [0]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 93

Func sig: (xr8_:r8, yr8q:r8?, zr8q:r8?) to b
Type: bool, Value: false
###
> G(xr4_, yr4q, zr4q)
G(xr4_, yr4q, zr4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4_) !@= Global(yr4q) $= Global(zr4q)))
// (∂.xr4_:r4, ∂.yr4q:r4?, ∂.zr4q:r4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):r4
      1) stloc.0 [r4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.2 [Opt<r4>]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) stloc.3 [r4]
      1) ldloc.0 [r4]
      1) ldloc.3 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [0]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 93

Func sig: (xr4_:r4, yr4q:r4?, zr4q:r4?) to b
Type: bool, Value: false
###
> G(xi__, yi_q, zi_q)
G(xi__, yi_q, zi_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi__) !@= Global(yi_q) $= Global(zi_q)))
// (∂.xi__:i, ∂.yi_q:i?, ∂.zi_q:i?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.2 [Opt<ia>]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) stloc.3 [ia]
      1) ldloc.0 [ia]
      1) ldloc.3 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [0]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 96

Func sig: (xi__:i, yi_q:i?, zi_q:i?) to b
Type: bool, Value: false
###
> G(xi4_, yi4q, zi4q)
G(xi4_, yi4q, zi4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4_) !@= Global(yi4q) $= Global(zi4q)))
// (∂.xi4_:i4, ∂.yi4q:i4?, ∂.zi4q:i4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.1 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.2 [Opt<i4>]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) stloc.3 [i4]
      1) ldloc.0 [i4]
      1) ldloc.3 [i4]
      5) beq [0]
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [i4]
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::GetValueOrDefault():i4
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 88

Func sig: (xi4_:i4, yi4q:i4?, zi4q:i4?) to b
Type: bool, Value: false
###
> G(xu4_, yu4q, zu4q)
G(xu4_, yu4q, zu4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4_) !@= Global(yu4q) $= Global(zu4q)))
// (∂.xu4_:u4, ∂.yu4q:u4?, ∂.zu4q:u4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.2 [Opt<u4>]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) stloc.3 [u4]
      1) ldloc.0 [u4]
      1) ldloc.3 [u4]
      5) beq [0]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 88

Func sig: (xu4_:u4, yu4q:u4?, zu4q:u4?) to b
Type: bool, Value: false
###
> G(xd__, yd_q, zd_q)
G(xd__, yd_q, zd_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd__) !@= Global(yd_q) $= Global(zd_q)))
// (∂.xd__:d, ∂.yd_q:d?, ∂.zd_q:d?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Date
      1) stloc.0 [Date]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.2 [Opt<Date>]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) stloc.3 [Date]
      1) ldloc.0 [Date]
      1) ldloc.3 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [0]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 96

Func sig: (xd__:d, yd_q:d?, zd_q:d?) to b
Type: bool, Value: false
###
> G(xt__, yt_q, zt_q)
G(xt__, yt_q, zt_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt__) !@= Global(yt_q) $= Global(zt_q)))
// (∂.xt__:t, ∂.yt_q:t?, ∂.zt_q:t?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):Time
      1) stloc.0 [Time]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.2 [Opt<Time>]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) stloc.3 [Time]
      1) ldloc.0 [Time]
      1) ldloc.3 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [0]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [bool]
      1) ret
  Total Size: 96

Func sig: (xt__:t, yt_q:t?, zt_q:t?) to b
Type: bool, Value: false
###
> G(xb_q, yb_q, zb_q) // QQQ
G(xb_q, yb_q, zb_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xb_q) !@= Global(yb_q) $= Global(zb_q)))
// (∂.xb_q:b?, ∂.yb_q:b?, ∂.zb_q:b?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<bool>
      1) stloc.2 [Opt<bool>]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) stloc.3 [bool]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) beq [0]
  Label [1]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 106

Func sig: (xb_q:b?, yb_q:b?, zb_q:b?) to b
Type: bool, Value: false
###
> G(xr8q, yr8q, zr8q)
G(xr8q, yr8q, zr8q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr8q) !@= Global(yr8q) $= Global(zr8q)))
// (∂.xr8q:r8?, ∂.yr8q:r8?, ∂.zr8q:r8?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r8>
      1) stloc.2 [Opt<r8>]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) stloc.3 [r8]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [0]
  Label [1]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 111

Func sig: (xr8q:r8?, yr8q:r8?, zr8q:r8?) to b
Type: bool, Value: false
###
> G(xr4q, yr4q, zr4q)
G(xr4q, yr4q, zr4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xr4q) !@= Global(yr4q) $= Global(zr4q)))
// (∂.xr4q:r4?, ∂.yr4q:r4?, ∂.zr4q:r4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<r4>
      1) stloc.2 [Opt<r4>]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) stloc.3 [r4]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [0]
  Label [1]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 111

Func sig: (xr4q:r4?, yr4q:r4?, zr4q:r4?) to b
Type: bool, Value: false
###
> G(xi_q, yi_q, zi_q)
G(xi_q, yi_q, zi_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi_q) !@= Global(yi_q) $= Global(zi_q)))
// (∂.xi_q:i?, ∂.yi_q:i?, ∂.zi_q:i?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<ia>
      1) stloc.2 [Opt<ia>]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) stloc.3 [ia]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [0]
  Label [1]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 114

Func sig: (xi_q:i?, yi_q:i?, zi_q:i?) to b
Type: bool, Value: false
###
> G(xi4q, yi4q, zi4q)
G(xi4q, yi4q, zi4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xi4q) !@= Global(yi4q) $= Global(zi4q)))
// (∂.xi4q:i4?, ∂.yi4q:i4?, ∂.zi4q:i4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.0 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.1 [Opt<i4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<i4>
      1) stloc.2 [Opt<i4>]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i4> (1)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) stloc.3 [i4]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<i4> (0)]
      5) call Opt<i4>::GetValueOrDefault():i4
      1) ldloc.3 [i4]
      5) beq [0]
  Label [1]:
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [i4]
      2) ldloca.s [Opt<i4> (2)]
      5) call Opt<i4>::GetValueOrDefault():i4
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 106

Func sig: (xi4q:i4?, yi4q:i4?, zi4q:i4?) to b
Type: bool, Value: false
###
> G(xu4q, yu4q, zu4q)
G(xu4q, yu4q, zu4q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xu4q) !@= Global(yu4q) $= Global(zu4q)))
// (∂.xu4q:u4?, ∂.yu4q:u4?, ∂.zu4q:u4?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<u4>
      1) stloc.2 [Opt<u4>]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) stloc.3 [u4]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) beq [0]
  Label [1]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 106

Func sig: (xu4q:u4?, yu4q:u4?, zu4q:u4?) to b
Type: bool, Value: false
###
> G(xd_q, yd_q, zd_q)
G(xd_q, yd_q, zd_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xd_q) !@= Global(yd_q) $= Global(zd_q)))
// (∂.xd_q:d?, ∂.yd_q:d?, ∂.zd_q:d?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Date>
      1) stloc.2 [Opt<Date>]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) stloc.3 [Date]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [0]
  Label [1]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 114

Func sig: (xd_q:d?, yd_q:d?, zd_q:d?) to b
Type: bool, Value: false
###
> G(xt_q, yt_q, zt_q)
G(xt_q, yt_q, zt_q) : b
BndKind:Compare, Type:b, Bnd:(Cmp(Global(xt_q) !@= Global(yt_q) $= Global(zt_q)))
// (∂.xt_q:t?, ∂.yt_q:t?, ∂.zt_q:t?) : b
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.2
      1) ldelem.ref
      5) call static CodeGenUtil::ToOpt(obj):Opt<Time>
      1) stloc.2 [Opt<Time>]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) stloc.3 [Time]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [1]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [0]
  Label [1]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) box [bool]
      1) ret
  Total Size: 114

Func sig: (xt_q:t?, yt_q:t?, zt_q:t?) to b
Type: bool, Value: false
###
