**** New udf: Glue, arity: 2
**** New udf: Glue, arity: 3
**** New udf: Polish, arity: 1
**** New udf: M, arity: 1
**** New udf: Op, arity: 1
**** New udf: H, arity: 3
**** New definitions: xs__, type: s*
**** New definitions: xb__, type: b*
**** New definitions: xr8_, type: r8*
**** New definitions: xr4_, type: r4*
**** New definitions: xi__, type: i*
**** New definitions: xi2_, type: i2*
**** New definitions: xu4_, type: u4*
**** New definitions: xd__, type: d*
**** New definitions: xt__, type: t*
**** New definitions: ys__, type: s*
**** New definitions: yb__, type: b*
**** New definitions: yr8_, type: r8*
**** New definitions: yr4_, type: r4*
**** New definitions: yi__, type: i*
**** New definitions: yi2_, type: i2*
**** New definitions: yu4_, type: u4*
**** New definitions: yd__, type: d*
**** New definitions: yt__, type: t*
**** New definitions: zs__, type: s*
**** New definitions: zb__, type: b*
**** New definitions: zr8_, type: r8*
**** New definitions: zr4_, type: r4*
**** New definitions: zi__, type: i*
**** New definitions: zi2_, type: i2*
**** New definitions: zu4_, type: u4*
**** New definitions: zd__, type: d*
**** New definitions: zt__, type: t*
**** New definitions: xs_q, type: s*
**** New definitions: xb_q, type: b?*
**** New definitions: xr8q, type: r8?*
**** New definitions: xr4q, type: r4?*
**** New definitions: xi_q, type: i?*
**** New definitions: xi2q, type: i2?*
**** New definitions: xu4q, type: u4?*
**** New definitions: xd_q, type: d?*
**** New definitions: xt_q, type: t?*
**** New definitions: ys_q, type: s*
**** New definitions: yb_q, type: b?*
**** New definitions: yr8q, type: r8?*
**** New definitions: yr4q, type: r4?*
**** New definitions: yi_q, type: i?*
**** New definitions: yi2q, type: i2?*
**** New definitions: yu4q, type: u4?*
**** New definitions: yd_q, type: d?*
**** New definitions: yt_q, type: t?*
**** New definitions: zs_q, type: s*
**** New definitions: zb_q, type: b?*
**** New definitions: zr8q, type: r8?*
**** New definitions: zr4q, type: r4?*
**** New definitions: zi_q, type: i?*
**** New definitions: zi2q, type: i2?*
**** New definitions: zu4q, type: u4?*
**** New definitions: zd_q, type: d?*
**** New definitions: zt_q, type: t?*
**** New udf: G, arity: 3
**** New definitions: __IL_Func_Ind, type: i8

> G(xs__, ys__, zs__) // RRR
G(xs__, ys__, zs__) : (s, s, s, s, s)*
BndKind:Call, Type:(s, s, s, s, s)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xs__), Call(∂.ChainMap([map:2] Global(ys__), Call(∂.ForEach([map:3] Global(zs__), (Scope(1), Scope(2), Scope(3)):(s, s, s)):(s, s, s)*)):(s, s, s)*)):(s, s, s)*)):(s, s, s)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):s), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):s), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):s), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, s, s, s)):(b, b, b, b, b, s, s, s))):(b, b, b, b, b, s, s, s)*)):(b, b, b, b, b, s, s, s)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(s, s, s))):(s, s, s, s, s))):(s, s, s, s, s)*))
ForEach_1(Arr<obj>, (str,str,str)):(bool,bool,bool,bool,bool,str,str,str)
      1) ldarg.1 [(str,str,str)]
      5) ldfld (str,str,str)::_F0:str
      5) call static WrapFuncGen::Exec(str):str
      1) stloc.0 [str]
      1) ldarg.1 [(str,str,str)]
      5) ldfld (str,str,str)::_F1:str
      5) call static WrapFuncGen::Exec(str):str
      1) stloc.1 [str]
      1) ldarg.1 [(str,str,str)]
      5) ldfld (str,str,str)::_F2:str
      5) call static WrapFuncGen::Exec(str):str
      1) stloc.2 [str]
      5) newobj (bool,bool,bool,bool,bool,str,str,str)()
      1) dup
      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 str::Equals(str, str):bool
      1) ldc.i4.0
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F0:bool
      1) dup
      1) ldloc.0 [str]
      1) ldloc.1 [str]
      5) call static StrComparer::Ge(str, str):bool
      5) brfalse [2]
      1) ldloc.1 [str]
      1) ldloc.2 [str]
      5) call static StrComparer::Ge(str, str):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F1:bool
      1) dup
      1) ldloc.0 [str]
      1) ldloc.1 [str]
      5) call static StrComparer::Gt(str, str):bool
      5) brfalse [4]
      1) ldloc.1 [str]
      1) ldloc.2 [str]
      5) call static StrComparer::Gt(str, str):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F2:bool
      1) dup
      1) ldloc.0 [str]
      1) ldloc.1 [str]
      5) call static StrComparer::Le(str, str):bool
      5) brfalse [6]
      1) ldloc.1 [str]
      1) ldloc.2 [str]
      5) call static StrComparer::Le(str, str):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F3:bool
      1) dup
      1) ldloc.0 [str]
      1) ldloc.1 [str]
      5) call static StrComparer::Lt(str, str):bool
      5) brfalse [8]
      1) ldloc.1 [str]
      1) ldloc.2 [str]
      5) call static StrComparer::Lt(str, str):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F4:bool
      1) dup
      1) ldloc.0 [str]
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F5:str
      1) dup
      1) ldloc.1 [str]
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F6:str
      1) dup
      1) ldloc.2 [str]
      5) stfld (bool,bool,bool,bool,bool,str,str,str)::_F7:str
      1) ret
  Total Size: 221

Func sig: (<ctx>:x, xs__:s*, ys__:s*, zs__:s*) to (s, s, s, s, s)*
Sequence: Seq<(str,str,str,str,str)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, A)
 2) (___M_, N_EL, <null>, <null>, B)
 3) (M____, N_LG, <null>, A, <null>)
 4) (___M_, N_EL, <null>, A, A)
 5) (M__MM, N_L_, <null>, A, B)
 6) (M____, N_LG, <null>, B, <null>)
 7) (M____, N_LG, <null>, B, A)
 8) (___M_, N_EL, <null>, B, B)
 9) (_M___, N_EG, A, <null>, <null>)
10) (M____, N_LG, A, <null>, A)
11) (M____, N_LG, A, <null>, B)
12) (_M___, N_EG, A, A, <null>)
13) (_M_M_, N_E_, A, A, A)
14) (___M_, N_EL, A, A, B)
15) (M____, N_LG, A, B, <null>)
16) (M____, N_LG, A, B, A)
17) (___M_, N_EL, A, B, B)
18) (_M___, N_EG, B, <null>, <null>)
19) (M____, N_LG, B, <null>, A)
20) (M____, N_LG, B, <null>, B)
21) (MMM__, N_G_, B, A, <null>)
22) (_M___, N_EG, B, A, A)
23) (M____, N_LG, B, A, B)
24) (_M___, N_EG, B, B, <null>)
25) (_M___, N_EG, B, B, A)
26) (_M_M_, N_E_, B, B, B)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: ys__, ForEach(*2: zs__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xs__, ChainMap(*2: ys__, ForEach(*3: zs__, (*1, *2, *3))))
###
> G(xb__, yb__, zb__)
G(xb__, yb__, zb__) : (s, s, b, b, b)*
BndKind:Call, Type:(s, s, b, b, b)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb__), Call(∂.ChainMap([map:2] Global(yb__), Call(∂.ForEach([map:3] Global(zb__), (Scope(1), Scope(2), Scope(3)):(b, b, b)):(b, b, b)*)):(b, b, b)*)):(b, b, b)*)):(b, b, b)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b, b, b)):(b, b, b, b, b, b, b, b))):(b, b, b, b, b, b, b, b)*)):(b, b, b, b, b, b, b, b)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b, b, b))):(s, s, b, b, b))):(s, s, b, b, b)*))
ForEach_1(Arr<obj>, (bool,bool,bool)):(bool,bool,bool,bool,bool,bool,bool,bool)
      1) ldarg.1 [(bool,bool,bool)]
      5) ldfld (bool,bool,bool)::_F0:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.0 [bool]
      1) ldarg.1 [(bool,bool,bool)]
      5) ldfld (bool,bool,bool)::_F1:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.1 [bool]
      1) ldarg.1 [(bool,bool,bool)]
      5) ldfld (bool,bool,bool)::_F2:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.2 [bool]
      5) newobj (bool,bool,bool,bool,bool,bool,bool,bool)()
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) beq [0]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      1) xor
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F0:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) blt.un [2]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F1:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) ble.un [4]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F2:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) bgt.un [6]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F3:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) bge.un [8]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F4:bool
      1) dup
      1) ldloc.0 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F5:bool
      1) dup
      1) ldloc.1 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F6:bool
      1) dup
      1) ldloc.2 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,bool,bool)::_F7:bool
      1) ret
  Total Size: 183

Func sig: (<ctx>:x, xb__:b*, yb__:b*, zb__:b*) to (s, s, b, b, b)*
Sequence: Seq<(str,str,bool,bool,bool)>
 0) (_M_M_, N_E_, false, false, false)
 1) (___M_, N_EL, false, false, true )
 2) (M____, N_LG, false, true , false)
 3) (___M_, N_EL, false, true , true )
 4) (_M___, N_EG, true , false, false)
 5) (M____, N_LG, true , false, true )
 6) (_M___, N_EG, true , true , false)
 7) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 9
    [0](6): ChainMap(*1: yb__, ForEach(*2: zb__, (*3x, *1, *2)))
    [1](3): ChainMap(*1: xb__, ChainMap(*2: yb__, ForEach(*3: zb__, (*1, *2, *3))))
###
> G(xr8_, yr8_, zr8_)
G(xr8_, yr8_, zr8_) : (s, s, r8, r8, r8)*
BndKind:Call, Type:(s, s, r8, r8, r8)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8_), Call(∂.ChainMap([map:2] Global(yr8_), Call(∂.ForEach([map:3] Global(zr8_), (Scope(1), Scope(2), Scope(3)):(r8, r8, r8)):(r8, r8, r8)*)):(r8, r8, r8)*)):(r8, r8, r8)*)):(r8, r8, r8)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8, r8, r8)):(b, b, b, b, b, r8, r8, r8))):(b, b, b, b, b, r8, r8, r8)*)):(b, b, b, b, b, r8, r8, r8)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8, r8, r8))):(s, s, r8, r8, r8))):(s, s, r8, r8, r8)*))
ForEach_1(Arr<obj>, (r8,r8,r8)):(bool,bool,bool,bool,bool,r8,r8,r8)
      1) ldarg.1 [(r8,r8,r8)]
      5) ldfld (r8,r8,r8)::_F0:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.0 [r8]
      1) ldarg.1 [(r8,r8,r8)]
      5) ldfld (r8,r8,r8)::_F1:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.1 [r8]
      1) ldarg.1 [(r8,r8,r8)]
      5) ldfld (r8,r8,r8)::_F2:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.2 [r8]
      5) newobj (bool,bool,bool,bool,bool,r8,r8,r8)()
      1) dup
      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]
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F0:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [2]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F1:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) brfalse [4]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F2:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) brfalse [6]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F3:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) brfalse [8]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F4:bool
      1) dup
      1) ldloc.0 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F5:r8
      1) dup
      1) ldloc.1 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F6:r8
      1) dup
      1) ldloc.2 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,r8,r8)::_F7:r8
      1) ret
  Total Size: 221

Func sig: (<ctx>:x, xr8_:r8*, yr8_:r8*, zr8_:r8*) to (s, s, r8, r8, r8)*
Sequence: Seq<(str,str,r8,r8,r8)>
 0) (_M_M_, N_E_, NaN, NaN, NaN)
 1) (___M_, N_EL, NaN, NaN, -3)
 2) (___M_, N_EL, NaN, NaN, 0)
 3) (___M_, N_EL, NaN, NaN, 5)
 4) (M____, N_LG, NaN, -3, NaN)
 5) (___M_, N_EL, NaN, -3, -3)
 6) (M__MM, N_L_, NaN, -3, 0)
 7) (M__MM, N_L_, NaN, -3, 5)
 8) (M____, N_LG, NaN, 0, NaN)
 9) (M____, N_LG, NaN, 0, -3)
10) (___M_, N_EL, NaN, 0, 0)
11) (M__MM, N_L_, NaN, 0, 5)
12) (M____, N_LG, NaN, 5, NaN)
13) (M____, N_LG, NaN, 5, -3)
14) (M____, N_LG, NaN, 5, 0)
15) (___M_, N_EL, NaN, 5, 5)
16) (_M___, N_EG, -3, NaN, NaN)
17) (M____, N_LG, -3, NaN, -3)
18) (M____, N_LG, -3, NaN, 0)
19) (M____, N_LG, -3, NaN, 5)
20) (_M___, N_EG, -3, -3, NaN)
21) (_M_M_, N_E_, -3, -3, -3)
22) (___M_, N_EL, -3, -3, 0)
23) (___M_, N_EL, -3, -3, 5)
24) (M____, N_LG, -3, 0, NaN)
25) (M____, N_LG, -3, 0, -3)
26) (___M_, N_EL, -3, 0, 0)
27) (M__MM, N_L_, -3, 0, 5)
28) (M____, N_LG, -3, 5, NaN)
29) (M____, N_LG, -3, 5, -3)
30) (M____, N_LG, -3, 5, 0)
31) (___M_, N_EL, -3, 5, 5)
32) (_M___, N_EG, 0, NaN, NaN)
33) (M____, N_LG, 0, NaN, -3)
34) (M____, N_LG, 0, NaN, 0)
35) (M____, N_LG, 0, NaN, 5)
36) (MMM__, N_G_, 0, -3, NaN)
37) (_M___, N_EG, 0, -3, -3)
38) (M____, N_LG, 0, -3, 0)
39) (M____, N_LG, 0, -3, 5)
40) (_M___, N_EG, 0, 0, NaN)
41) (_M___, N_EG, 0, 0, -3)
42) (_M_M_, N_E_, 0, 0, 0)
43) (___M_, N_EL, 0, 0, 5)
44) (M____, N_LG, 0, 5, NaN)
45) (M____, N_LG, 0, 5, -3)
46) (M____, N_LG, 0, 5, 0)
47) (___M_, N_EL, 0, 5, 5)
48) (_M___, N_EG, 5, NaN, NaN)
49) (M____, N_LG, 5, NaN, -3)
50) (M____, N_LG, 5, NaN, 0)
51) (M____, N_LG, 5, NaN, 5)
52) (MMM__, N_G_, 5, -3, NaN)
53) (_M___, N_EG, 5, -3, -3)
54) (M____, N_LG, 5, -3, 0)
55) (M____, N_LG, 5, -3, 5)
56) (MMM__, N_G_, 5, 0, NaN)
57) (MMM__, N_G_, 5, 0, -3)
58) (_M___, N_EG, 5, 0, 0)
59) (M____, N_LG, 5, 0, 5)
60) (_M___, N_EG, 5, 5, NaN)
61) (_M___, N_EG, 5, 5, -3)
62) (_M___, N_EG, 5, 5, 0)
63) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yr8_, ForEach(*2: zr8_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr8_, ChainMap(*2: yr8_, ForEach(*3: zr8_, (*1, *2, *3))))
###
> G(xr4_, yr4_, zr4_)
G(xr4_, yr4_, zr4_) : (s, s, r4, r4, r4)*
BndKind:Call, Type:(s, s, r4, r4, r4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4_), Call(∂.ChainMap([map:2] Global(yr4_), Call(∂.ForEach([map:3] Global(zr4_), (Scope(1), Scope(2), Scope(3)):(r4, r4, r4)):(r4, r4, r4)*)):(r4, r4, r4)*)):(r4, r4, r4)*)):(r4, r4, r4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4, r4, r4)):(b, b, b, b, b, r4, r4, r4))):(b, b, b, b, b, r4, r4, r4)*)):(b, b, b, b, b, r4, r4, r4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4, r4, r4))):(s, s, r4, r4, r4))):(s, s, r4, r4, r4)*))
ForEach_1(Arr<obj>, (r4,r4,r4)):(bool,bool,bool,bool,bool,r4,r4,r4)
      1) ldarg.1 [(r4,r4,r4)]
      5) ldfld (r4,r4,r4)::_F0:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.0 [r4]
      1) ldarg.1 [(r4,r4,r4)]
      5) ldfld (r4,r4,r4)::_F1:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.1 [r4]
      1) ldarg.1 [(r4,r4,r4)]
      5) ldfld (r4,r4,r4)::_F2:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.2 [r4]
      5) newobj (bool,bool,bool,bool,bool,r4,r4,r4)()
      1) dup
      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]
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F0:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [2]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F1:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) brfalse [4]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F2:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) brfalse [6]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F3:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) brfalse [8]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F4:bool
      1) dup
      1) ldloc.0 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F5:r4
      1) dup
      1) ldloc.1 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F6:r4
      1) dup
      1) ldloc.2 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,r4,r4)::_F7:r4
      1) ret
  Total Size: 221

Func sig: (<ctx>:x, xr4_:r4*, yr4_:r4*, zr4_:r4*) to (s, s, r4, r4, r4)*
Sequence: Seq<(str,str,r4,r4,r4)>
 0) (_M_M_, N_E_, NaN, NaN, NaN)
 1) (___M_, N_EL, NaN, NaN, -3)
 2) (___M_, N_EL, NaN, NaN, 0)
 3) (___M_, N_EL, NaN, NaN, 5)
 4) (M____, N_LG, NaN, -3, NaN)
 5) (___M_, N_EL, NaN, -3, -3)
 6) (M__MM, N_L_, NaN, -3, 0)
 7) (M__MM, N_L_, NaN, -3, 5)
 8) (M____, N_LG, NaN, 0, NaN)
 9) (M____, N_LG, NaN, 0, -3)
10) (___M_, N_EL, NaN, 0, 0)
11) (M__MM, N_L_, NaN, 0, 5)
12) (M____, N_LG, NaN, 5, NaN)
13) (M____, N_LG, NaN, 5, -3)
14) (M____, N_LG, NaN, 5, 0)
15) (___M_, N_EL, NaN, 5, 5)
16) (_M___, N_EG, -3, NaN, NaN)
17) (M____, N_LG, -3, NaN, -3)
18) (M____, N_LG, -3, NaN, 0)
19) (M____, N_LG, -3, NaN, 5)
20) (_M___, N_EG, -3, -3, NaN)
21) (_M_M_, N_E_, -3, -3, -3)
22) (___M_, N_EL, -3, -3, 0)
23) (___M_, N_EL, -3, -3, 5)
24) (M____, N_LG, -3, 0, NaN)
25) (M____, N_LG, -3, 0, -3)
26) (___M_, N_EL, -3, 0, 0)
27) (M__MM, N_L_, -3, 0, 5)
28) (M____, N_LG, -3, 5, NaN)
29) (M____, N_LG, -3, 5, -3)
30) (M____, N_LG, -3, 5, 0)
31) (___M_, N_EL, -3, 5, 5)
32) (_M___, N_EG, 0, NaN, NaN)
33) (M____, N_LG, 0, NaN, -3)
34) (M____, N_LG, 0, NaN, 0)
35) (M____, N_LG, 0, NaN, 5)
36) (MMM__, N_G_, 0, -3, NaN)
37) (_M___, N_EG, 0, -3, -3)
38) (M____, N_LG, 0, -3, 0)
39) (M____, N_LG, 0, -3, 5)
40) (_M___, N_EG, 0, 0, NaN)
41) (_M___, N_EG, 0, 0, -3)
42) (_M_M_, N_E_, 0, 0, 0)
43) (___M_, N_EL, 0, 0, 5)
44) (M____, N_LG, 0, 5, NaN)
45) (M____, N_LG, 0, 5, -3)
46) (M____, N_LG, 0, 5, 0)
47) (___M_, N_EL, 0, 5, 5)
48) (_M___, N_EG, 5, NaN, NaN)
49) (M____, N_LG, 5, NaN, -3)
50) (M____, N_LG, 5, NaN, 0)
51) (M____, N_LG, 5, NaN, 5)
52) (MMM__, N_G_, 5, -3, NaN)
53) (_M___, N_EG, 5, -3, -3)
54) (M____, N_LG, 5, -3, 0)
55) (M____, N_LG, 5, -3, 5)
56) (MMM__, N_G_, 5, 0, NaN)
57) (MMM__, N_G_, 5, 0, -3)
58) (_M___, N_EG, 5, 0, 0)
59) (M____, N_LG, 5, 0, 5)
60) (_M___, N_EG, 5, 5, NaN)
61) (_M___, N_EG, 5, 5, -3)
62) (_M___, N_EG, 5, 5, 0)
63) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yr4_, ForEach(*2: zr4_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr4_, ChainMap(*2: yr4_, ForEach(*3: zr4_, (*1, *2, *3))))
###
> G(xi__, yi__, zi__)
G(xi__, yi__, zi__) : (s, s, i, i, i)*
BndKind:Call, Type:(s, s, i, i, i)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi__), Call(∂.ChainMap([map:2] Global(yi__), Call(∂.ForEach([map:3] Global(zi__), (Scope(1), Scope(2), Scope(3)):(i, i, i)):(i, i, i)*)):(i, i, i)*)):(i, i, i)*)):(i, i, i)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i, i, i)):(b, b, b, b, b, i, i, i))):(b, b, b, b, b, i, i, i)*)):(b, b, b, b, b, i, i, i)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i, i, i))):(s, s, i, i, i))):(s, s, i, i, i)*))
ForEach_1(Arr<obj>, (ia,ia,ia)):(bool,bool,bool,bool,bool,ia,ia,ia)
      1) ldarg.1 [(ia,ia,ia)]
      5) ldfld (ia,ia,ia)::_F0:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.0 [ia]
      1) ldarg.1 [(ia,ia,ia)]
      5) ldfld (ia,ia,ia)::_F1:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.1 [ia]
      1) ldarg.1 [(ia,ia,ia)]
      5) ldfld (ia,ia,ia)::_F2:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.2 [ia]
      5) newobj (bool,bool,bool,bool,bool,ia,ia,ia)()
      1) dup
      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_Inequality(ia, ia):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F0:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [2]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F1:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) brfalse [4]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F2:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) brfalse [6]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F3:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) brfalse [8]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F4:bool
      1) dup
      1) ldloc.0 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F5:ia
      1) dup
      1) ldloc.1 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F6:ia
      1) dup
      1) ldloc.2 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,ia,ia)::_F7:ia
      1) ret
  Total Size: 218

Func sig: (<ctx>:x, xi__:i*, yi__:i*, zi__:i*) to (s, s, i, i, i)*
Sequence: Seq<(str,str,ia,ia,ia)>
 0) (_M_M_, N_E_, -3, -3, -3)
 1) (___M_, N_EL, -3, -3, 0)
 2) (___M_, N_EL, -3, -3, 5)
 3) (M____, N_LG, -3, 0, -3)
 4) (___M_, N_EL, -3, 0, 0)
 5) (M__MM, N_L_, -3, 0, 5)
 6) (M____, N_LG, -3, 5, -3)
 7) (M____, N_LG, -3, 5, 0)
 8) (___M_, N_EL, -3, 5, 5)
 9) (_M___, N_EG, 0, -3, -3)
10) (M____, N_LG, 0, -3, 0)
11) (M____, N_LG, 0, -3, 5)
12) (_M___, N_EG, 0, 0, -3)
13) (_M_M_, N_E_, 0, 0, 0)
14) (___M_, N_EL, 0, 0, 5)
15) (M____, N_LG, 0, 5, -3)
16) (M____, N_LG, 0, 5, 0)
17) (___M_, N_EL, 0, 5, 5)
18) (_M___, N_EG, 5, -3, -3)
19) (M____, N_LG, 5, -3, 0)
20) (M____, N_LG, 5, -3, 5)
21) (MMM__, N_G_, 5, 0, -3)
22) (_M___, N_EG, 5, 0, 0)
23) (M____, N_LG, 5, 0, 5)
24) (_M___, N_EG, 5, 5, -3)
25) (_M___, N_EG, 5, 5, 0)
26) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yi__, ForEach(*2: zi__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi__, ChainMap(*2: yi__, ForEach(*3: zi__, (*1, *2, *3))))
###
> G(xi2_, yi2_, zi2_)
G(xi2_, yi2_, zi2_) : (s, s, i2, i2, i2)*
BndKind:Call, Type:(s, s, i2, i2, i2)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2_), Call(∂.ChainMap([map:2] Global(yi2_), Call(∂.ForEach([map:3] Global(zi2_), (Scope(1), Scope(2), Scope(3)):(i2, i2, i2)):(i2, i2, i2)*)):(i2, i2, i2)*)):(i2, i2, i2)*)):(i2, i2, i2)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2, i2, i2)):(b, b, b, b, b, i2, i2, i2))):(b, b, b, b, b, i2, i2, i2)*)):(b, b, b, b, b, i2, i2, i2)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2, i2, i2))):(s, s, i2, i2, i2))):(s, s, i2, i2, i2)*))
ForEach_1(Arr<obj>, (i2,i2,i2)):(bool,bool,bool,bool,bool,i2,i2,i2)
      1) ldarg.1 [(i2,i2,i2)]
      5) ldfld (i2,i2,i2)::_F0:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.0 [i2]
      1) ldarg.1 [(i2,i2,i2)]
      5) ldfld (i2,i2,i2)::_F1:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.1 [i2]
      1) ldarg.1 [(i2,i2,i2)]
      5) ldfld (i2,i2,i2)::_F2:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.2 [i2]
      5) newobj (bool,bool,bool,bool,bool,i2,i2,i2)()
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) beq [0]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F0:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) blt [2]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F1:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) ble [4]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) cgt
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F2:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) bgt [6]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F3:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) bge [8]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) clt
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F4:bool
      1) dup
      1) ldloc.0 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F5:i2
      1) dup
      1) ldloc.1 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F6:i2
      1) dup
      1) ldloc.2 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,i2,i2)::_F7:i2
      1) ret
  Total Size: 187

Func sig: (<ctx>:x, xi2_:i2*, yi2_:i2*, zi2_:i2*) to (s, s, i2, i2, i2)*
Sequence: Seq<(str,str,i2,i2,i2)>
 0) (_M_M_, N_E_, -3, -3, -3)
 1) (___M_, N_EL, -3, -3, 0)
 2) (___M_, N_EL, -3, -3, 5)
 3) (M____, N_LG, -3, 0, -3)
 4) (___M_, N_EL, -3, 0, 0)
 5) (M__MM, N_L_, -3, 0, 5)
 6) (M____, N_LG, -3, 5, -3)
 7) (M____, N_LG, -3, 5, 0)
 8) (___M_, N_EL, -3, 5, 5)
 9) (_M___, N_EG, 0, -3, -3)
10) (M____, N_LG, 0, -3, 0)
11) (M____, N_LG, 0, -3, 5)
12) (_M___, N_EG, 0, 0, -3)
13) (_M_M_, N_E_, 0, 0, 0)
14) (___M_, N_EL, 0, 0, 5)
15) (M____, N_LG, 0, 5, -3)
16) (M____, N_LG, 0, 5, 0)
17) (___M_, N_EL, 0, 5, 5)
18) (_M___, N_EG, 5, -3, -3)
19) (M____, N_LG, 5, -3, 0)
20) (M____, N_LG, 5, -3, 5)
21) (MMM__, N_G_, 5, 0, -3)
22) (_M___, N_EG, 5, 0, 0)
23) (M____, N_LG, 5, 0, 5)
24) (_M___, N_EG, 5, 5, -3)
25) (_M___, N_EG, 5, 5, 0)
26) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yi2_, ForEach(*2: zi2_, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi2_, ChainMap(*2: yi2_, ForEach(*3: zi2_, (*1, *2, *3))))
###
> G(xu4_, yu4_, zu4_)
G(xu4_, yu4_, zu4_) : (s, s, u4, u4, u4)*
BndKind:Call, Type:(s, s, u4, u4, u4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4_), Call(∂.ChainMap([map:2] Global(yu4_), Call(∂.ForEach([map:3] Global(zu4_), (Scope(1), Scope(2), Scope(3)):(u4, u4, u4)):(u4, u4, u4)*)):(u4, u4, u4)*)):(u4, u4, u4)*)):(u4, u4, u4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4, u4, u4)):(b, b, b, b, b, u4, u4, u4))):(b, b, b, b, b, u4, u4, u4)*)):(b, b, b, b, b, u4, u4, u4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4, u4, u4))):(s, s, u4, u4, u4))):(s, s, u4, u4, u4)*))
ForEach_1(Arr<obj>, (u4,u4,u4)):(bool,bool,bool,bool,bool,u4,u4,u4)
      1) ldarg.1 [(u4,u4,u4)]
      5) ldfld (u4,u4,u4)::_F0:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.0 [u4]
      1) ldarg.1 [(u4,u4,u4)]
      5) ldfld (u4,u4,u4)::_F1:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.1 [u4]
      1) ldarg.1 [(u4,u4,u4)]
      5) ldfld (u4,u4,u4)::_F2:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.2 [u4]
      5) newobj (bool,bool,bool,bool,bool,u4,u4,u4)()
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) beq [0]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F0:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) blt.un [2]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F1:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) ble.un [4]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F2:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) bgt.un [6]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F3:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) bge.un [8]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F4:bool
      1) dup
      1) ldloc.0 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F5:u4
      1) dup
      1) ldloc.1 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F6:u4
      1) dup
      1) ldloc.2 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,u4,u4)::_F7:u4
      1) ret
  Total Size: 187

Func sig: (<ctx>:x, xu4_:u4*, yu4_:u4*, zu4_:u4*) to (s, s, u4, u4, u4)*
Sequence: Seq<(str,str,u4,u4,u4)>
 0) (_M_M_, N_E_, 0, 0, 0)
 1) (___M_, N_EL, 0, 0, 3)
 2) (___M_, N_EL, 0, 0, 5)
 3) (M____, N_LG, 0, 3, 0)
 4) (___M_, N_EL, 0, 3, 3)
 5) (M__MM, N_L_, 0, 3, 5)
 6) (M____, N_LG, 0, 5, 0)
 7) (M____, N_LG, 0, 5, 3)
 8) (___M_, N_EL, 0, 5, 5)
 9) (_M___, N_EG, 3, 0, 0)
10) (M____, N_LG, 3, 0, 3)
11) (M____, N_LG, 3, 0, 5)
12) (_M___, N_EG, 3, 3, 0)
13) (_M_M_, N_E_, 3, 3, 3)
14) (___M_, N_EL, 3, 3, 5)
15) (M____, N_LG, 3, 5, 0)
16) (M____, N_LG, 3, 5, 3)
17) (___M_, N_EL, 3, 5, 5)
18) (_M___, N_EG, 5, 0, 0)
19) (M____, N_LG, 5, 0, 3)
20) (M____, N_LG, 5, 0, 5)
21) (MMM__, N_G_, 5, 3, 0)
22) (_M___, N_EG, 5, 3, 3)
23) (M____, N_LG, 5, 3, 5)
24) (_M___, N_EG, 5, 5, 0)
25) (_M___, N_EG, 5, 5, 3)
26) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yu4_, ForEach(*2: zu4_, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xu4_, ChainMap(*2: yu4_, ForEach(*3: zu4_, (*1, *2, *3))))
###
> G(xd__, yd__, zd__)
G(xd__, yd__, zd__) : (s, s, d, d, d)*
BndKind:Call, Type:(s, s, d, d, d)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd__), Call(∂.ChainMap([map:2] Global(yd__), Call(∂.ForEach([map:3] Global(zd__), (Scope(1), Scope(2), Scope(3)):(d, d, d)):(d, d, d)*)):(d, d, d)*)):(d, d, d)*)):(d, d, d)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d, d, d)):(b, b, b, b, b, d, d, d))):(b, b, b, b, b, d, d, d)*)):(b, b, b, b, b, d, d, d)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d, d, d))):(s, s, d, d, d))):(s, s, d, d, d)*))
ForEach_1(Arr<obj>, (Date,Date,Date)):(bool,bool,bool,bool,bool,Date,Date,Date)
      1) ldarg.1 [(Date,Date,Date)]
      5) ldfld (Date,Date,Date)::_F0:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.0 [Date]
      1) ldarg.1 [(Date,Date,Date)]
      5) ldfld (Date,Date,Date)::_F1:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.1 [Date]
      1) ldarg.1 [(Date,Date,Date)]
      5) ldfld (Date,Date,Date)::_F2:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.2 [Date]
      5) newobj (bool,bool,bool,bool,bool,Date,Date,Date)()
      1) dup
      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_Inequality(Date, Date):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F0:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [2]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F1:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) brfalse [4]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F2:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) brfalse [6]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F3:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) brfalse [8]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F4:bool
      1) dup
      1) ldloc.0 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F5:Date
      1) dup
      1) ldloc.1 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F6:Date
      1) dup
      1) ldloc.2 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Date)::_F7:Date
      1) ret
  Total Size: 218

Func sig: (<ctx>:x, xd__:d*, yd__:d*, zd__:d*) to (s, s, d, d, d)*
Sequence: Seq<(str,str,Date,Date,Date)>
 0) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 1) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 2) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 3) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 4) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 5) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 6) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 7) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 8) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 9) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
13) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
14) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
15) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
16) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
17) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
18) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
19) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
20) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
21) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
25) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
26) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yd__, ForEach(*2: zd__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xd__, ChainMap(*2: yd__, ForEach(*3: zd__, (*1, *2, *3))))
###
> G(xt__, yt__, zt__)
G(xt__, yt__, zt__) : (s, s, t, t, t)*
BndKind:Call, Type:(s, s, t, t, t)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt__), Call(∂.ChainMap([map:2] Global(yt__), Call(∂.ForEach([map:3] Global(zt__), (Scope(1), Scope(2), Scope(3)):(t, t, t)):(t, t, t)*)):(t, t, t)*)):(t, t, t)*)):(t, t, t)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t, t, t)):(b, b, b, b, b, t, t, t))):(b, b, b, b, b, t, t, t)*)):(b, b, b, b, b, t, t, t)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t, t, t))):(s, s, t, t, t))):(s, s, t, t, t)*))
ForEach_1(Arr<obj>, (Time,Time,Time)):(bool,bool,bool,bool,bool,Time,Time,Time)
      1) ldarg.1 [(Time,Time,Time)]
      5) ldfld (Time,Time,Time)::_F0:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.0 [Time]
      1) ldarg.1 [(Time,Time,Time)]
      5) ldfld (Time,Time,Time)::_F1:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.1 [Time]
      1) ldarg.1 [(Time,Time,Time)]
      5) ldfld (Time,Time,Time)::_F2:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.2 [Time]
      5) newobj (bool,bool,bool,bool,bool,Time,Time,Time)()
      1) dup
      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_Inequality(Time, Time):bool
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F0:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [2]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F1:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) brfalse [4]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F2:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) brfalse [6]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F3:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) brfalse [8]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F4:bool
      1) dup
      1) ldloc.0 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F5:Time
      1) dup
      1) ldloc.1 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F6:Time
      1) dup
      1) ldloc.2 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Time)::_F7:Time
      1) ret
  Total Size: 218

Func sig: (<ctx>:x, xt__:t*, yt__:t*, zt__:t*) to (s, s, t, t, t)*
Sequence: Seq<(str,str,Time,Time,Time)>
 0) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
 1) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
 2) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
 3) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
 4) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
 5) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
 6) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
 7) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
 8) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
 9) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
10) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
11) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
12) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
13) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
14) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
15) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
16) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
17) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
18) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
19) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
20) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
21) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
22) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
23) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
24) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
25) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
26) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yt__, ForEach(*2: zt__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xt__, ChainMap(*2: yt__, ForEach(*3: zt__, (*1, *2, *3))))
###
> G(xb_q, yb__, zb__) // QRR
G(xb_q, yb__, zb__) : (s, s, b?, b, b)*
BndKind:Call, Type:(s, s, b?, b, b)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb_q), Call(∂.ChainMap([map:2] Global(yb__), Call(∂.ForEach([map:3] Global(zb__), (Scope(1), Scope(2), Scope(3)):(b?, b, b)):(b?, b, b)*)):(b?, b, b)*)):(b?, b, b)*)):(b?, b, b)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b?, b, b)):(b, b, b, b, b, b?, b, b))):(b, b, b, b, b, b?, b, b)*)):(b, b, b, b, b, b?, b, b)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b?, b, b))):(s, s, b?, b, b))):(s, s, b?, b, b)*))
ForEach_1(Arr<obj>, (Opt<bool>,bool,bool)):(bool,bool,bool,bool,bool,Opt<bool>,bool,bool)
      1) ldarg.1 [(Opt<bool>,bool,bool)]
      5) ldfld (Opt<bool>,bool,bool)::_F0:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [(Opt<bool>,bool,bool)]
      5) ldfld (Opt<bool>,bool,bool)::_F1:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.1 [bool]
      1) ldarg.1 [(Opt<bool>,bool,bool)]
      5) ldfld (Opt<bool>,bool,bool)::_F2:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.2 [bool]
      5) newobj (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)()
      1) dup
      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]
      1) xor
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F0:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) blt.un [3]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F1:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) ble.un [5]
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F2:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) bgt.un [8]
  Label [7]:
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F3:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) bge.un [11]
  Label [10]:
      1) ldloc.1 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F5:Opt<bool>
      1) dup
      1) ldloc.1 [bool]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F6:bool
      1) dup
      1) ldloc.2 [bool]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,bool)::_F7:bool
      1) ret
  Total Size: 273

Func sig: (<ctx>:x, xb_q:b?*, yb__:b*, zb__:b*) to (s, s, b?, b, b)*
Sequence: Seq<(str,str,Opt<bool>,bool,bool)>
 0) (___M_, N_EL, <null>, false, false)
 1) (M__MM, N_L_, <null>, false, true )
 2) (M____, N_LG, <null>, true , false)
 3) (___M_, N_EL, <null>, true , true )
 4) (_M_M_, N_E_, false, false, false)
 5) (___M_, N_EL, false, false, true )
 6) (M____, N_LG, false, true , false)
 7) (___M_, N_EL, false, true , true )
 8) (_M___, N_EG, true , false, false)
 9) (M____, N_LG, true , false, true )
10) (_M___, N_EG, true , true , false)
11) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 13
    [0](9): ChainMap(*1: yb__, ForEach(*2: zb__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xb_q, ChainMap(*2: yb__, ForEach(*3: zb__, (*1, *2, *3))))
###
> G(xr8q, yr8_, zr8_)
G(xr8q, yr8_, zr8_) : (s, s, r8?, r8, r8)*
BndKind:Call, Type:(s, s, r8?, r8, r8)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8q), Call(∂.ChainMap([map:2] Global(yr8_), Call(∂.ForEach([map:3] Global(zr8_), (Scope(1), Scope(2), Scope(3)):(r8?, r8, r8)):(r8?, r8, r8)*)):(r8?, r8, r8)*)):(r8?, r8, r8)*)):(r8?, r8, r8)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8?, r8, r8)):(b, b, b, b, b, r8?, r8, r8))):(b, b, b, b, b, r8?, r8, r8)*)):(b, b, b, b, b, r8?, r8, r8)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8?, r8, r8))):(s, s, r8?, r8, r8))):(s, s, r8?, r8, r8)*))
ForEach_1(Arr<obj>, (Opt<r8>,r8,r8)):(bool,bool,bool,bool,bool,Opt<r8>,r8,r8)
      1) ldarg.1 [(Opt<r8>,r8,r8)]
      5) ldfld (Opt<r8>,r8,r8)::_F0:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [(Opt<r8>,r8,r8)]
      5) ldfld (Opt<r8>,r8,r8)::_F1:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.1 [r8]
      1) ldarg.1 [(Opt<r8>,r8,r8)]
      5) ldfld (Opt<r8>,r8,r8)::_F2:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.2 [r8]
      5) newobj (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)()
      1) dup
      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]
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [3]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) brfalse [5]
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) brfalse [8]
  Label [7]:
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) brfalse [11]
  Label [10]:
      1) ldloc.1 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F5:Opt<r8>
      1) dup
      1) ldloc.1 [r8]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F6:r8
      1) dup
      1) ldloc.2 [r8]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,r8)::_F7:r8
      1) ret
  Total Size: 311

Func sig: (<ctx>:x, xr8q:r8?*, yr8_:r8*, zr8_:r8*) to (s, s, r8?, r8, r8)*
Sequence: Seq<(str,str,Opt<r8>,r8,r8)>
 0) (___M_, N_EL, <null>, NaN, NaN)
 1) (M__MM, N_L_, <null>, NaN, -3)
 2) (M__MM, N_L_, <null>, NaN, 0)
 3) (M__MM, N_L_, <null>, NaN, 5)
 4) (M____, N_LG, <null>, -3, NaN)
 5) (___M_, N_EL, <null>, -3, -3)
 6) (M__MM, N_L_, <null>, -3, 0)
 7) (M__MM, N_L_, <null>, -3, 5)
 8) (M____, N_LG, <null>, 0, NaN)
 9) (M____, N_LG, <null>, 0, -3)
10) (___M_, N_EL, <null>, 0, 0)
11) (M__MM, N_L_, <null>, 0, 5)
12) (M____, N_LG, <null>, 5, NaN)
13) (M____, N_LG, <null>, 5, -3)
14) (M____, N_LG, <null>, 5, 0)
15) (___M_, N_EL, <null>, 5, 5)
16) (_M_M_, N_E_, NaN, NaN, NaN)
17) (___M_, N_EL, NaN, NaN, -3)
18) (___M_, N_EL, NaN, NaN, 0)
19) (___M_, N_EL, NaN, NaN, 5)
20) (M____, N_LG, NaN, -3, NaN)
21) (___M_, N_EL, NaN, -3, -3)
22) (M__MM, N_L_, NaN, -3, 0)
23) (M__MM, N_L_, NaN, -3, 5)
24) (M____, N_LG, NaN, 0, NaN)
25) (M____, N_LG, NaN, 0, -3)
26) (___M_, N_EL, NaN, 0, 0)
27) (M__MM, N_L_, NaN, 0, 5)
28) (M____, N_LG, NaN, 5, NaN)
29) (M____, N_LG, NaN, 5, -3)
30) (M____, N_LG, NaN, 5, 0)
31) (___M_, N_EL, NaN, 5, 5)
32) (_M___, N_EG, -3, NaN, NaN)
33) (M____, N_LG, -3, NaN, -3)
34) (M____, N_LG, -3, NaN, 0)
35) (M____, N_LG, -3, NaN, 5)
36) (_M___, N_EG, -3, -3, NaN)
37) (_M_M_, N_E_, -3, -3, -3)
38) (___M_, N_EL, -3, -3, 0)
39) (___M_, N_EL, -3, -3, 5)
40) (M____, N_LG, -3, 0, NaN)
41) (M____, N_LG, -3, 0, -3)
42) (___M_, N_EL, -3, 0, 0)
43) (M__MM, N_L_, -3, 0, 5)
44) (M____, N_LG, -3, 5, NaN)
45) (M____, N_LG, -3, 5, -3)
46) (M____, N_LG, -3, 5, 0)
47) (___M_, N_EL, -3, 5, 5)
48) (_M___, N_EG, 0, NaN, NaN)
49) (M____, N_LG, 0, NaN, -3)
50) (M____, N_LG, 0, NaN, 0)
51) (M____, N_LG, 0, NaN, 5)
52) (MMM__, N_G_, 0, -3, NaN)
53) (_M___, N_EG, 0, -3, -3)
54) (M____, N_LG, 0, -3, 0)
55) (M____, N_LG, 0, -3, 5)
56) (_M___, N_EG, 0, 0, NaN)
57) (_M___, N_EG, 0, 0, -3)
58) (_M_M_, N_E_, 0, 0, 0)
59) (___M_, N_EL, 0, 0, 5)
60) (M____, N_LG, 0, 5, NaN)
61) (M____, N_LG, 0, 5, -3)
62) (M____, N_LG, 0, 5, 0)
63) (___M_, N_EL, 0, 5, 5)
64) (_M___, N_EG, 5, NaN, NaN)
65) (M____, N_LG, 5, NaN, -3)
66) (M____, N_LG, 5, NaN, 0)
67) (M____, N_LG, 5, NaN, 5)
68) (MMM__, N_G_, 5, -3, NaN)
69) (_M___, N_EG, 5, -3, -3)
70) (M____, N_LG, 5, -3, 0)
71) (M____, N_LG, 5, -3, 5)
72) (MMM__, N_G_, 5, 0, NaN)
73) (MMM__, N_G_, 5, 0, -3)
74) (_M___, N_EG, 5, 0, 0)
75) (M____, N_LG, 5, 0, 5)
76) (_M___, N_EG, 5, 5, NaN)
77) (_M___, N_EG, 5, 5, -3)
78) (_M___, N_EG, 5, 5, 0)
79) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 31
    [0](25): ChainMap(*1: yr8_, ForEach(*2: zr8_, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr8q, ChainMap(*2: yr8_, ForEach(*3: zr8_, (*1, *2, *3))))
###
> G(xr4q, yr4_, zr4_)
G(xr4q, yr4_, zr4_) : (s, s, r4?, r4, r4)*
BndKind:Call, Type:(s, s, r4?, r4, r4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4q), Call(∂.ChainMap([map:2] Global(yr4_), Call(∂.ForEach([map:3] Global(zr4_), (Scope(1), Scope(2), Scope(3)):(r4?, r4, r4)):(r4?, r4, r4)*)):(r4?, r4, r4)*)):(r4?, r4, r4)*)):(r4?, r4, r4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4?, r4, r4)):(b, b, b, b, b, r4?, r4, r4))):(b, b, b, b, b, r4?, r4, r4)*)):(b, b, b, b, b, r4?, r4, r4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4?, r4, r4))):(s, s, r4?, r4, r4))):(s, s, r4?, r4, r4)*))
ForEach_1(Arr<obj>, (Opt<r4>,r4,r4)):(bool,bool,bool,bool,bool,Opt<r4>,r4,r4)
      1) ldarg.1 [(Opt<r4>,r4,r4)]
      5) ldfld (Opt<r4>,r4,r4)::_F0:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [(Opt<r4>,r4,r4)]
      5) ldfld (Opt<r4>,r4,r4)::_F1:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.1 [r4]
      1) ldarg.1 [(Opt<r4>,r4,r4)]
      5) ldfld (Opt<r4>,r4,r4)::_F2:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.2 [r4]
      5) newobj (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)()
      1) dup
      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]
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [3]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) brfalse [5]
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) brfalse [8]
  Label [7]:
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) brfalse [11]
  Label [10]:
      1) ldloc.1 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F5:Opt<r4>
      1) dup
      1) ldloc.1 [r4]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F6:r4
      1) dup
      1) ldloc.2 [r4]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,r4)::_F7:r4
      1) ret
  Total Size: 311

Func sig: (<ctx>:x, xr4q:r4?*, yr4_:r4*, zr4_:r4*) to (s, s, r4?, r4, r4)*
Sequence: Seq<(str,str,Opt<r4>,r4,r4)>
 0) (___M_, N_EL, <null>, NaN, NaN)
 1) (M__MM, N_L_, <null>, NaN, -3)
 2) (M__MM, N_L_, <null>, NaN, 0)
 3) (M__MM, N_L_, <null>, NaN, 5)
 4) (M____, N_LG, <null>, -3, NaN)
 5) (___M_, N_EL, <null>, -3, -3)
 6) (M__MM, N_L_, <null>, -3, 0)
 7) (M__MM, N_L_, <null>, -3, 5)
 8) (M____, N_LG, <null>, 0, NaN)
 9) (M____, N_LG, <null>, 0, -3)
10) (___M_, N_EL, <null>, 0, 0)
11) (M__MM, N_L_, <null>, 0, 5)
12) (M____, N_LG, <null>, 5, NaN)
13) (M____, N_LG, <null>, 5, -3)
14) (M____, N_LG, <null>, 5, 0)
15) (___M_, N_EL, <null>, 5, 5)
16) (_M_M_, N_E_, NaN, NaN, NaN)
17) (___M_, N_EL, NaN, NaN, -3)
18) (___M_, N_EL, NaN, NaN, 0)
19) (___M_, N_EL, NaN, NaN, 5)
20) (M____, N_LG, NaN, -3, NaN)
21) (___M_, N_EL, NaN, -3, -3)
22) (M__MM, N_L_, NaN, -3, 0)
23) (M__MM, N_L_, NaN, -3, 5)
24) (M____, N_LG, NaN, 0, NaN)
25) (M____, N_LG, NaN, 0, -3)
26) (___M_, N_EL, NaN, 0, 0)
27) (M__MM, N_L_, NaN, 0, 5)
28) (M____, N_LG, NaN, 5, NaN)
29) (M____, N_LG, NaN, 5, -3)
30) (M____, N_LG, NaN, 5, 0)
31) (___M_, N_EL, NaN, 5, 5)
32) (_M___, N_EG, -3, NaN, NaN)
33) (M____, N_LG, -3, NaN, -3)
34) (M____, N_LG, -3, NaN, 0)
35) (M____, N_LG, -3, NaN, 5)
36) (_M___, N_EG, -3, -3, NaN)
37) (_M_M_, N_E_, -3, -3, -3)
38) (___M_, N_EL, -3, -3, 0)
39) (___M_, N_EL, -3, -3, 5)
40) (M____, N_LG, -3, 0, NaN)
41) (M____, N_LG, -3, 0, -3)
42) (___M_, N_EL, -3, 0, 0)
43) (M__MM, N_L_, -3, 0, 5)
44) (M____, N_LG, -3, 5, NaN)
45) (M____, N_LG, -3, 5, -3)
46) (M____, N_LG, -3, 5, 0)
47) (___M_, N_EL, -3, 5, 5)
48) (_M___, N_EG, 0, NaN, NaN)
49) (M____, N_LG, 0, NaN, -3)
50) (M____, N_LG, 0, NaN, 0)
51) (M____, N_LG, 0, NaN, 5)
52) (MMM__, N_G_, 0, -3, NaN)
53) (_M___, N_EG, 0, -3, -3)
54) (M____, N_LG, 0, -3, 0)
55) (M____, N_LG, 0, -3, 5)
56) (_M___, N_EG, 0, 0, NaN)
57) (_M___, N_EG, 0, 0, -3)
58) (_M_M_, N_E_, 0, 0, 0)
59) (___M_, N_EL, 0, 0, 5)
60) (M____, N_LG, 0, 5, NaN)
61) (M____, N_LG, 0, 5, -3)
62) (M____, N_LG, 0, 5, 0)
63) (___M_, N_EL, 0, 5, 5)
64) (_M___, N_EG, 5, NaN, NaN)
65) (M____, N_LG, 5, NaN, -3)
66) (M____, N_LG, 5, NaN, 0)
67) (M____, N_LG, 5, NaN, 5)
68) (MMM__, N_G_, 5, -3, NaN)
69) (_M___, N_EG, 5, -3, -3)
70) (M____, N_LG, 5, -3, 0)
71) (M____, N_LG, 5, -3, 5)
72) (MMM__, N_G_, 5, 0, NaN)
73) (MMM__, N_G_, 5, 0, -3)
74) (_M___, N_EG, 5, 0, 0)
75) (M____, N_LG, 5, 0, 5)
76) (_M___, N_EG, 5, 5, NaN)
77) (_M___, N_EG, 5, 5, -3)
78) (_M___, N_EG, 5, 5, 0)
79) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 31
    [0](25): ChainMap(*1: yr4_, ForEach(*2: zr4_, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr4q, ChainMap(*2: yr4_, ForEach(*3: zr4_, (*1, *2, *3))))
###
> G(xi_q, yi__, zi__)
G(xi_q, yi__, zi__) : (s, s, i?, i, i)*
BndKind:Call, Type:(s, s, i?, i, i)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi_q), Call(∂.ChainMap([map:2] Global(yi__), Call(∂.ForEach([map:3] Global(zi__), (Scope(1), Scope(2), Scope(3)):(i?, i, i)):(i?, i, i)*)):(i?, i, i)*)):(i?, i, i)*)):(i?, i, i)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i?, i, i)):(b, b, b, b, b, i?, i, i))):(b, b, b, b, b, i?, i, i)*)):(b, b, b, b, b, i?, i, i)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i?, i, i))):(s, s, i?, i, i))):(s, s, i?, i, i)*))
ForEach_1(Arr<obj>, (Opt<ia>,ia,ia)):(bool,bool,bool,bool,bool,Opt<ia>,ia,ia)
      1) ldarg.1 [(Opt<ia>,ia,ia)]
      5) ldfld (Opt<ia>,ia,ia)::_F0:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [(Opt<ia>,ia,ia)]
      5) ldfld (Opt<ia>,ia,ia)::_F1:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.1 [ia]
      1) ldarg.1 [(Opt<ia>,ia,ia)]
      5) ldfld (Opt<ia>,ia,ia)::_F2:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.2 [ia]
      5) newobj (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)()
      1) dup
      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_Inequality(ia, ia):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F0:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [3]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F1:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) brfalse [5]
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F2:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) brfalse [8]
  Label [7]:
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F3:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) brfalse [11]
  Label [10]:
      1) ldloc.1 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F5:Opt<ia>
      1) dup
      1) ldloc.1 [ia]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F6:ia
      1) dup
      1) ldloc.2 [ia]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,ia)::_F7:ia
      1) ret
  Total Size: 308

Func sig: (<ctx>:x, xi_q:i?*, yi__:i*, zi__:i*) to (s, s, i?, i, i)*
Sequence: Seq<(str,str,Opt<ia>,ia,ia)>
 0) (___M_, N_EL, <null>, -3, -3)
 1) (M__MM, N_L_, <null>, -3, 0)
 2) (M__MM, N_L_, <null>, -3, 5)
 3) (M____, N_LG, <null>, 0, -3)
 4) (___M_, N_EL, <null>, 0, 0)
 5) (M__MM, N_L_, <null>, 0, 5)
 6) (M____, N_LG, <null>, 5, -3)
 7) (M____, N_LG, <null>, 5, 0)
 8) (___M_, N_EL, <null>, 5, 5)
 9) (_M_M_, N_E_, -3, -3, -3)
10) (___M_, N_EL, -3, -3, 0)
11) (___M_, N_EL, -3, -3, 5)
12) (M____, N_LG, -3, 0, -3)
13) (___M_, N_EL, -3, 0, 0)
14) (M__MM, N_L_, -3, 0, 5)
15) (M____, N_LG, -3, 5, -3)
16) (M____, N_LG, -3, 5, 0)
17) (___M_, N_EL, -3, 5, 5)
18) (_M___, N_EG, 0, -3, -3)
19) (M____, N_LG, 0, -3, 0)
20) (M____, N_LG, 0, -3, 5)
21) (_M___, N_EG, 0, 0, -3)
22) (_M_M_, N_E_, 0, 0, 0)
23) (___M_, N_EL, 0, 0, 5)
24) (M____, N_LG, 0, 5, -3)
25) (M____, N_LG, 0, 5, 0)
26) (___M_, N_EL, 0, 5, 5)
27) (_M___, N_EG, 5, -3, -3)
28) (M____, N_LG, 5, -3, 0)
29) (M____, N_LG, 5, -3, 5)
30) (MMM__, N_G_, 5, 0, -3)
31) (_M___, N_EG, 5, 0, 0)
32) (M____, N_LG, 5, 0, 5)
33) (_M___, N_EG, 5, 5, -3)
34) (_M___, N_EG, 5, 5, 0)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yi__, ForEach(*2: zi__, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi_q, ChainMap(*2: yi__, ForEach(*3: zi__, (*1, *2, *3))))
###
> G(xi2q, yi2_, zi2_)
G(xi2q, yi2_, zi2_) : (s, s, i2?, i2, i2)*
BndKind:Call, Type:(s, s, i2?, i2, i2)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2q), Call(∂.ChainMap([map:2] Global(yi2_), Call(∂.ForEach([map:3] Global(zi2_), (Scope(1), Scope(2), Scope(3)):(i2?, i2, i2)):(i2?, i2, i2)*)):(i2?, i2, i2)*)):(i2?, i2, i2)*)):(i2?, i2, i2)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2?, i2, i2)):(b, b, b, b, b, i2?, i2, i2))):(b, b, b, b, b, i2?, i2, i2)*)):(b, b, b, b, b, i2?, i2, i2)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2?, i2, i2))):(s, s, i2?, i2, i2))):(s, s, i2?, i2, i2)*))
ForEach_1(Arr<obj>, (Opt<i2>,i2,i2)):(bool,bool,bool,bool,bool,Opt<i2>,i2,i2)
      1) ldarg.1 [(Opt<i2>,i2,i2)]
      5) ldfld (Opt<i2>,i2,i2)::_F0:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.0 [Opt<i2>]
      1) ldarg.1 [(Opt<i2>,i2,i2)]
      5) ldfld (Opt<i2>,i2,i2)::_F1:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.1 [i2]
      1) ldarg.1 [(Opt<i2>,i2,i2)]
      5) ldfld (Opt<i2>,i2,i2)::_F2:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.2 [i2]
      5) newobj (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)()
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) beq [1]
  Label [0]:
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F0:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) blt [3]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F1:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) ble [5]
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) cgt
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F2:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) bgt [8]
  Label [7]:
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F3:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) bge [11]
  Label [10]:
      1) ldloc.1 [i2]
      1) ldloc.2 [i2]
      2) clt
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F5:Opt<i2>
      1) dup
      1) ldloc.1 [i2]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F6:i2
      1) dup
      1) ldloc.2 [i2]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,i2)::_F7:i2
      1) ret
  Total Size: 277

Func sig: (<ctx>:x, xi2q:i2?*, yi2_:i2*, zi2_:i2*) to (s, s, i2?, i2, i2)*
Sequence: Seq<(str,str,Opt<i2>,i2,i2)>
 0) (___M_, N_EL, <null>, -3, -3)
 1) (M__MM, N_L_, <null>, -3, 0)
 2) (M__MM, N_L_, <null>, -3, 5)
 3) (M____, N_LG, <null>, 0, -3)
 4) (___M_, N_EL, <null>, 0, 0)
 5) (M__MM, N_L_, <null>, 0, 5)
 6) (M____, N_LG, <null>, 5, -3)
 7) (M____, N_LG, <null>, 5, 0)
 8) (___M_, N_EL, <null>, 5, 5)
 9) (_M_M_, N_E_, -3, -3, -3)
10) (___M_, N_EL, -3, -3, 0)
11) (___M_, N_EL, -3, -3, 5)
12) (M____, N_LG, -3, 0, -3)
13) (___M_, N_EL, -3, 0, 0)
14) (M__MM, N_L_, -3, 0, 5)
15) (M____, N_LG, -3, 5, -3)
16) (M____, N_LG, -3, 5, 0)
17) (___M_, N_EL, -3, 5, 5)
18) (_M___, N_EG, 0, -3, -3)
19) (M____, N_LG, 0, -3, 0)
20) (M____, N_LG, 0, -3, 5)
21) (_M___, N_EG, 0, 0, -3)
22) (_M_M_, N_E_, 0, 0, 0)
23) (___M_, N_EL, 0, 0, 5)
24) (M____, N_LG, 0, 5, -3)
25) (M____, N_LG, 0, 5, 0)
26) (___M_, N_EL, 0, 5, 5)
27) (_M___, N_EG, 5, -3, -3)
28) (M____, N_LG, 5, -3, 0)
29) (M____, N_LG, 5, -3, 5)
30) (MMM__, N_G_, 5, 0, -3)
31) (_M___, N_EG, 5, 0, 0)
32) (M____, N_LG, 5, 0, 5)
33) (_M___, N_EG, 5, 5, -3)
34) (_M___, N_EG, 5, 5, 0)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yi2_, ForEach(*2: zi2_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi2q, ChainMap(*2: yi2_, ForEach(*3: zi2_, (*1, *2, *3))))
###
> G(xu4q, yu4_, zu4_)
G(xu4q, yu4_, zu4_) : (s, s, u4?, u4, u4)*
BndKind:Call, Type:(s, s, u4?, u4, u4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4q), Call(∂.ChainMap([map:2] Global(yu4_), Call(∂.ForEach([map:3] Global(zu4_), (Scope(1), Scope(2), Scope(3)):(u4?, u4, u4)):(u4?, u4, u4)*)):(u4?, u4, u4)*)):(u4?, u4, u4)*)):(u4?, u4, u4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4?, u4, u4)):(b, b, b, b, b, u4?, u4, u4))):(b, b, b, b, b, u4?, u4, u4)*)):(b, b, b, b, b, u4?, u4, u4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4?, u4, u4))):(s, s, u4?, u4, u4))):(s, s, u4?, u4, u4)*))
ForEach_1(Arr<obj>, (Opt<u4>,u4,u4)):(bool,bool,bool,bool,bool,Opt<u4>,u4,u4)
      1) ldarg.1 [(Opt<u4>,u4,u4)]
      5) ldfld (Opt<u4>,u4,u4)::_F0:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [(Opt<u4>,u4,u4)]
      5) ldfld (Opt<u4>,u4,u4)::_F1:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.1 [u4]
      1) ldarg.1 [(Opt<u4>,u4,u4)]
      5) ldfld (Opt<u4>,u4,u4)::_F2:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.2 [u4]
      5) newobj (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)()
      1) dup
      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
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F0:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) blt.un [3]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F1:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) ble.un [5]
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F2:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) bgt.un [8]
  Label [7]:
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F3:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) bge.un [11]
  Label [10]:
      1) ldloc.1 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F5:Opt<u4>
      1) dup
      1) ldloc.1 [u4]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F6:u4
      1) dup
      1) ldloc.2 [u4]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,u4)::_F7:u4
      1) ret
  Total Size: 277

Func sig: (<ctx>:x, xu4q:u4?*, yu4_:u4*, zu4_:u4*) to (s, s, u4?, u4, u4)*
Sequence: Seq<(str,str,Opt<u4>,u4,u4)>
 0) (___M_, N_EL, <null>, 0, 0)
 1) (M__MM, N_L_, <null>, 0, 3)
 2) (M__MM, N_L_, <null>, 0, 5)
 3) (M____, N_LG, <null>, 3, 0)
 4) (___M_, N_EL, <null>, 3, 3)
 5) (M__MM, N_L_, <null>, 3, 5)
 6) (M____, N_LG, <null>, 5, 0)
 7) (M____, N_LG, <null>, 5, 3)
 8) (___M_, N_EL, <null>, 5, 5)
 9) (_M_M_, N_E_, 0, 0, 0)
10) (___M_, N_EL, 0, 0, 3)
11) (___M_, N_EL, 0, 0, 5)
12) (M____, N_LG, 0, 3, 0)
13) (___M_, N_EL, 0, 3, 3)
14) (M__MM, N_L_, 0, 3, 5)
15) (M____, N_LG, 0, 5, 0)
16) (M____, N_LG, 0, 5, 3)
17) (___M_, N_EL, 0, 5, 5)
18) (_M___, N_EG, 3, 0, 0)
19) (M____, N_LG, 3, 0, 3)
20) (M____, N_LG, 3, 0, 5)
21) (_M___, N_EG, 3, 3, 0)
22) (_M_M_, N_E_, 3, 3, 3)
23) (___M_, N_EL, 3, 3, 5)
24) (M____, N_LG, 3, 5, 0)
25) (M____, N_LG, 3, 5, 3)
26) (___M_, N_EL, 3, 5, 5)
27) (_M___, N_EG, 5, 0, 0)
28) (M____, N_LG, 5, 0, 3)
29) (M____, N_LG, 5, 0, 5)
30) (MMM__, N_G_, 5, 3, 0)
31) (_M___, N_EG, 5, 3, 3)
32) (M____, N_LG, 5, 3, 5)
33) (_M___, N_EG, 5, 5, 0)
34) (_M___, N_EG, 5, 5, 3)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yu4_, ForEach(*2: zu4_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xu4q, ChainMap(*2: yu4_, ForEach(*3: zu4_, (*1, *2, *3))))
###
> G(xd_q, yd__, zd__)
G(xd_q, yd__, zd__) : (s, s, d?, d, d)*
BndKind:Call, Type:(s, s, d?, d, d)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd_q), Call(∂.ChainMap([map:2] Global(yd__), Call(∂.ForEach([map:3] Global(zd__), (Scope(1), Scope(2), Scope(3)):(d?, d, d)):(d?, d, d)*)):(d?, d, d)*)):(d?, d, d)*)):(d?, d, d)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d?, d, d)):(b, b, b, b, b, d?, d, d))):(b, b, b, b, b, d?, d, d)*)):(b, b, b, b, b, d?, d, d)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d?, d, d))):(s, s, d?, d, d))):(s, s, d?, d, d)*))
ForEach_1(Arr<obj>, (Opt<Date>,Date,Date)):(bool,bool,bool,bool,bool,Opt<Date>,Date,Date)
      1) ldarg.1 [(Opt<Date>,Date,Date)]
      5) ldfld (Opt<Date>,Date,Date)::_F0:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [(Opt<Date>,Date,Date)]
      5) ldfld (Opt<Date>,Date,Date)::_F1:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.1 [Date]
      1) ldarg.1 [(Opt<Date>,Date,Date)]
      5) ldfld (Opt<Date>,Date,Date)::_F2:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.2 [Date]
      5) newobj (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)()
      1) dup
      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_Inequality(Date, Date):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [3]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) brfalse [5]
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) brfalse [8]
  Label [7]:
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) brfalse [11]
  Label [10]:
      1) ldloc.1 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F5:Opt<Date>
      1) dup
      1) ldloc.1 [Date]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F6:Date
      1) dup
      1) ldloc.2 [Date]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Date)::_F7:Date
      1) ret
  Total Size: 308

Func sig: (<ctx>:x, xd_q:d?*, yd__:d*, zd__:d*) to (s, s, d?, d, d)*
Sequence: Seq<(str,str,Opt<Date>,Date,Date)>
 0) (___M_, N_EL, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 1) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 2) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 3) (M____, N_LG, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 4) (___M_, N_EL, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 5) (M__MM, N_L_, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 6) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 7) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 8) (___M_, N_EL, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 9) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
13) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
14) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
15) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
16) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
17) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
18) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
19) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
20) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
21) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
25) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
26) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
27) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
28) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
29) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
30) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
31) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
32) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
33) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
34) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
35) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yd__, ForEach(*2: zd__, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xd_q, ChainMap(*2: yd__, ForEach(*3: zd__, (*1, *2, *3))))
###
> G(xt_q, yt__, zt__)
G(xt_q, yt__, zt__) : (s, s, t?, t, t)*
BndKind:Call, Type:(s, s, t?, t, t)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt_q), Call(∂.ChainMap([map:2] Global(yt__), Call(∂.ForEach([map:3] Global(zt__), (Scope(1), Scope(2), Scope(3)):(t?, t, t)):(t?, t, t)*)):(t?, t, t)*)):(t?, t, t)*)):(t?, t, t)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t?, t, t)):(b, b, b, b, b, t?, t, t))):(b, b, b, b, b, t?, t, t)*)):(b, b, b, b, b, t?, t, t)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t?, t, t))):(s, s, t?, t, t))):(s, s, t?, t, t)*))
ForEach_1(Arr<obj>, (Opt<Time>,Time,Time)):(bool,bool,bool,bool,bool,Opt<Time>,Time,Time)
      1) ldarg.1 [(Opt<Time>,Time,Time)]
      5) ldfld (Opt<Time>,Time,Time)::_F0:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [(Opt<Time>,Time,Time)]
      5) ldfld (Opt<Time>,Time,Time)::_F1:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.1 [Time]
      1) ldarg.1 [(Opt<Time>,Time,Time)]
      5) ldfld (Opt<Time>,Time,Time)::_F2:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.2 [Time]
      5) newobj (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)()
      1) dup
      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_Inequality(Time, Time):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [3]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [3]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [4]
  Label [3]:
      1) ldc.i4.0
  Label [4]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) brfalse [5]
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) brfalse [8]
  Label [7]:
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) brfalse [11]
  Label [10]:
      1) ldloc.1 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F5:Opt<Time>
      1) dup
      1) ldloc.1 [Time]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F6:Time
      1) dup
      1) ldloc.2 [Time]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Time)::_F7:Time
      1) ret
  Total Size: 308

Func sig: (<ctx>:x, xt_q:t?*, yt__:t*, zt__:t*) to (s, s, t?, t, t)*
Sequence: Seq<(str,str,Opt<Time>,Time,Time)>
 0) (___M_, N_EL, <null>, -2.00:00:00, -2.00:00:00)
 1) (M__MM, N_L_, <null>, -2.00:00:00, 00:00:00)
 2) (M__MM, N_L_, <null>, -2.00:00:00, 3.00:00:00)
 3) (M____, N_LG, <null>, 00:00:00, -2.00:00:00)
 4) (___M_, N_EL, <null>, 00:00:00, 00:00:00)
 5) (M__MM, N_L_, <null>, 00:00:00, 3.00:00:00)
 6) (M____, N_LG, <null>, 3.00:00:00, -2.00:00:00)
 7) (M____, N_LG, <null>, 3.00:00:00, 00:00:00)
 8) (___M_, N_EL, <null>, 3.00:00:00, 3.00:00:00)
 9) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
10) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
11) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
12) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
13) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
14) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
15) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
16) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
17) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
18) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
19) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
20) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
21) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
22) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
23) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
24) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
25) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
26) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
27) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
28) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
29) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
30) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
31) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
32) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
33) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
34) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
35) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yt__, ForEach(*2: zt__, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xt_q, ChainMap(*2: yt__, ForEach(*3: zt__, (*1, *2, *3))))
###
> G(xb__, yb_q, zb__) // RQR
G(xb__, yb_q, zb__) : (s, s, b, b?, b)*
BndKind:Call, Type:(s, s, b, b?, b)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb__), Call(∂.ChainMap([map:2] Global(yb_q), Call(∂.ForEach([map:3] Global(zb__), (Scope(1), Scope(2), Scope(3)):(b, b?, b)):(b, b?, b)*)):(b, b?, b)*)):(b, b?, b)*)):(b, b?, b)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b, b?, b)):(b, b, b, b, b, b, b?, b))):(b, b, b, b, b, b, b?, b)*)):(b, b, b, b, b, b, b?, b)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b, b?, b))):(s, s, b, b?, b))):(s, s, b, b?, b)*))
ForEach_1(Arr<obj>, (bool,Opt<bool>,bool)):(bool,bool,bool,bool,bool,bool,Opt<bool>,bool)
      1) ldarg.1 [(bool,Opt<bool>,bool)]
      5) ldfld (bool,Opt<bool>,bool)::_F0:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.0 [bool]
      1) ldarg.1 [(bool,Opt<bool>,bool)]
      5) ldfld (bool,Opt<bool>,bool)::_F1:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [(bool,Opt<bool>,bool)]
      5) ldfld (bool,Opt<bool>,bool)::_F2:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.2 [bool]
      5) newobj (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)()
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [bool]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.2 [bool]
      1) xor
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F0:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      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) blt.un [4]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F1:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [6]
      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) ble.un [6]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F2:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [8]
      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) bgt.un [8]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F3:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [10]
      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) bge.un [10]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F4:bool
      1) dup
      1) ldloc.0 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F5:bool
      1) dup
      1) ldloc.1 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F6:Opt<bool>
      1) dup
      1) ldloc.2 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,bool)::_F7:bool
      1) ret
  Total Size: 305

Func sig: (<ctx>:x, xb__:b*, yb_q:b?*, zb__:b*) to (s, s, b, b?, b)*
Sequence: Seq<(str,str,bool,Opt<bool>,bool)>
 0) (M____, N_LG, false, <null>, false)
 1) (M____, N_LG, false, <null>, true )
 2) (_M_M_, N_E_, false, false, false)
 3) (___M_, N_EL, false, false, true )
 4) (M____, N_LG, false, true , false)
 5) (___M_, N_EL, false, true , true )
 6) (M____, N_LG, true , <null>, false)
 7) (M____, N_LG, true , <null>, true )
 8) (_M___, N_EG, true , false, false)
 9) (M____, N_LG, true , false, true )
10) (_M___, N_EG, true , true , false)
11) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 11
    [0](8): ChainMap(*1: yb_q, ForEach(*2: zb__, (*3x, *1, *2)))
    [1](3): ChainMap(*1: xb__, ChainMap(*2: yb_q, ForEach(*3: zb__, (*1, *2, *3))))
###
> G(xr8_, yr8q, zr8_)
G(xr8_, yr8q, zr8_) : (s, s, r8, r8?, r8)*
BndKind:Call, Type:(s, s, r8, r8?, r8)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8_), Call(∂.ChainMap([map:2] Global(yr8q), Call(∂.ForEach([map:3] Global(zr8_), (Scope(1), Scope(2), Scope(3)):(r8, r8?, r8)):(r8, r8?, r8)*)):(r8, r8?, r8)*)):(r8, r8?, r8)*)):(r8, r8?, r8)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8, r8?, r8)):(b, b, b, b, b, r8, r8?, r8))):(b, b, b, b, b, r8, r8?, r8)*)):(b, b, b, b, b, r8, r8?, r8)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8, r8?, r8))):(s, s, r8, r8?, r8))):(s, s, r8, r8?, r8)*))
ForEach_1(Arr<obj>, (r8,Opt<r8>,r8)):(bool,bool,bool,bool,bool,r8,Opt<r8>,r8)
      1) ldarg.1 [(r8,Opt<r8>,r8)]
      5) ldfld (r8,Opt<r8>,r8)::_F0:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.0 [r8]
      1) ldarg.1 [(r8,Opt<r8>,r8)]
      5) ldfld (r8,Opt<r8>,r8)::_F1:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [(r8,Opt<r8>,r8)]
      5) ldfld (r8,Opt<r8>,r8)::_F2:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.2 [r8]
      5) newobj (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)()
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [r8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.2 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      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::Ge(r8, r8):bool
      5) brfalse [4]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [6]
      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::Gt(r8, r8):bool
      5) brfalse [6]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [8]
      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::Le(r8, r8):bool
      5) brfalse [8]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [10]
      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::Lt(r8, r8):bool
      5) brfalse [10]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F4:bool
      1) dup
      1) ldloc.0 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F5:r8
      1) dup
      1) ldloc.1 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F6:Opt<r8>
      1) dup
      1) ldloc.2 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,r8)::_F7:r8
      1) ret
  Total Size: 343

Func sig: (<ctx>:x, xr8_:r8*, yr8q:r8?*, zr8_:r8*) to (s, s, r8, r8?, r8)*
Sequence: Seq<(str,str,r8,Opt<r8>,r8)>
 0) (M____, N_LG, NaN, <null>, NaN)
 1) (M____, N_LG, NaN, <null>, -3)
 2) (M____, N_LG, NaN, <null>, 0)
 3) (M____, N_LG, NaN, <null>, 5)
 4) (_M_M_, N_E_, NaN, NaN, NaN)
 5) (___M_, N_EL, NaN, NaN, -3)
 6) (___M_, N_EL, NaN, NaN, 0)
 7) (___M_, N_EL, NaN, NaN, 5)
 8) (M____, N_LG, NaN, -3, NaN)
 9) (___M_, N_EL, NaN, -3, -3)
10) (M__MM, N_L_, NaN, -3, 0)
11) (M__MM, N_L_, NaN, -3, 5)
12) (M____, N_LG, NaN, 0, NaN)
13) (M____, N_LG, NaN, 0, -3)
14) (___M_, N_EL, NaN, 0, 0)
15) (M__MM, N_L_, NaN, 0, 5)
16) (M____, N_LG, NaN, 5, NaN)
17) (M____, N_LG, NaN, 5, -3)
18) (M____, N_LG, NaN, 5, 0)
19) (___M_, N_EL, NaN, 5, 5)
20) (M____, N_LG, -3, <null>, NaN)
21) (M____, N_LG, -3, <null>, -3)
22) (M____, N_LG, -3, <null>, 0)
23) (M____, N_LG, -3, <null>, 5)
24) (_M___, N_EG, -3, NaN, NaN)
25) (M____, N_LG, -3, NaN, -3)
26) (M____, N_LG, -3, NaN, 0)
27) (M____, N_LG, -3, NaN, 5)
28) (_M___, N_EG, -3, -3, NaN)
29) (_M_M_, N_E_, -3, -3, -3)
30) (___M_, N_EL, -3, -3, 0)
31) (___M_, N_EL, -3, -3, 5)
32) (M____, N_LG, -3, 0, NaN)
33) (M____, N_LG, -3, 0, -3)
34) (___M_, N_EL, -3, 0, 0)
35) (M__MM, N_L_, -3, 0, 5)
36) (M____, N_LG, -3, 5, NaN)
37) (M____, N_LG, -3, 5, -3)
38) (M____, N_LG, -3, 5, 0)
39) (___M_, N_EL, -3, 5, 5)
40) (M____, N_LG, 0, <null>, NaN)
41) (M____, N_LG, 0, <null>, -3)
42) (M____, N_LG, 0, <null>, 0)
43) (M____, N_LG, 0, <null>, 5)
44) (_M___, N_EG, 0, NaN, NaN)
45) (M____, N_LG, 0, NaN, -3)
46) (M____, N_LG, 0, NaN, 0)
47) (M____, N_LG, 0, NaN, 5)
48) (MMM__, N_G_, 0, -3, NaN)
49) (_M___, N_EG, 0, -3, -3)
50) (M____, N_LG, 0, -3, 0)
51) (M____, N_LG, 0, -3, 5)
52) (_M___, N_EG, 0, 0, NaN)
53) (_M___, N_EG, 0, 0, -3)
54) (_M_M_, N_E_, 0, 0, 0)
55) (___M_, N_EL, 0, 0, 5)
56) (M____, N_LG, 0, 5, NaN)
57) (M____, N_LG, 0, 5, -3)
58) (M____, N_LG, 0, 5, 0)
59) (___M_, N_EL, 0, 5, 5)
60) (M____, N_LG, 5, <null>, NaN)
61) (M____, N_LG, 5, <null>, -3)
62) (M____, N_LG, 5, <null>, 0)
63) (M____, N_LG, 5, <null>, 5)
64) (_M___, N_EG, 5, NaN, NaN)
65) (M____, N_LG, 5, NaN, -3)
66) (M____, N_LG, 5, NaN, 0)
67) (M____, N_LG, 5, NaN, 5)
68) (MMM__, N_G_, 5, -3, NaN)
69) (_M___, N_EG, 5, -3, -3)
70) (M____, N_LG, 5, -3, 0)
71) (M____, N_LG, 5, -3, 5)
72) (MMM__, N_G_, 5, 0, NaN)
73) (MMM__, N_G_, 5, 0, -3)
74) (_M___, N_EG, 5, 0, 0)
75) (M____, N_LG, 5, 0, 5)
76) (_M___, N_EG, 5, 5, NaN)
77) (_M___, N_EG, 5, 5, -3)
78) (_M___, N_EG, 5, 5, 0)
79) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 29
    [0](24): ChainMap(*1: yr8q, ForEach(*2: zr8_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr8_, ChainMap(*2: yr8q, ForEach(*3: zr8_, (*1, *2, *3))))
###
> G(xr4_, yr4q, zr4_)
G(xr4_, yr4q, zr4_) : (s, s, r4, r4?, r4)*
BndKind:Call, Type:(s, s, r4, r4?, r4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4_), Call(∂.ChainMap([map:2] Global(yr4q), Call(∂.ForEach([map:3] Global(zr4_), (Scope(1), Scope(2), Scope(3)):(r4, r4?, r4)):(r4, r4?, r4)*)):(r4, r4?, r4)*)):(r4, r4?, r4)*)):(r4, r4?, r4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4, r4?, r4)):(b, b, b, b, b, r4, r4?, r4))):(b, b, b, b, b, r4, r4?, r4)*)):(b, b, b, b, b, r4, r4?, r4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4, r4?, r4))):(s, s, r4, r4?, r4))):(s, s, r4, r4?, r4)*))
ForEach_1(Arr<obj>, (r4,Opt<r4>,r4)):(bool,bool,bool,bool,bool,r4,Opt<r4>,r4)
      1) ldarg.1 [(r4,Opt<r4>,r4)]
      5) ldfld (r4,Opt<r4>,r4)::_F0:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.0 [r4]
      1) ldarg.1 [(r4,Opt<r4>,r4)]
      5) ldfld (r4,Opt<r4>,r4)::_F1:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [(r4,Opt<r4>,r4)]
      5) ldfld (r4,Opt<r4>,r4)::_F2:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.2 [r4]
      5) newobj (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)()
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [r4]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.2 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      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::Ge(r4, r4):bool
      5) brfalse [4]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [6]
      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::Gt(r4, r4):bool
      5) brfalse [6]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [8]
      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::Le(r4, r4):bool
      5) brfalse [8]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [10]
      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::Lt(r4, r4):bool
      5) brfalse [10]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F4:bool
      1) dup
      1) ldloc.0 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F5:r4
      1) dup
      1) ldloc.1 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F6:Opt<r4>
      1) dup
      1) ldloc.2 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,r4)::_F7:r4
      1) ret
  Total Size: 343

Func sig: (<ctx>:x, xr4_:r4*, yr4q:r4?*, zr4_:r4*) to (s, s, r4, r4?, r4)*
Sequence: Seq<(str,str,r4,Opt<r4>,r4)>
 0) (M____, N_LG, NaN, <null>, NaN)
 1) (M____, N_LG, NaN, <null>, -3)
 2) (M____, N_LG, NaN, <null>, 0)
 3) (M____, N_LG, NaN, <null>, 5)
 4) (_M_M_, N_E_, NaN, NaN, NaN)
 5) (___M_, N_EL, NaN, NaN, -3)
 6) (___M_, N_EL, NaN, NaN, 0)
 7) (___M_, N_EL, NaN, NaN, 5)
 8) (M____, N_LG, NaN, -3, NaN)
 9) (___M_, N_EL, NaN, -3, -3)
10) (M__MM, N_L_, NaN, -3, 0)
11) (M__MM, N_L_, NaN, -3, 5)
12) (M____, N_LG, NaN, 0, NaN)
13) (M____, N_LG, NaN, 0, -3)
14) (___M_, N_EL, NaN, 0, 0)
15) (M__MM, N_L_, NaN, 0, 5)
16) (M____, N_LG, NaN, 5, NaN)
17) (M____, N_LG, NaN, 5, -3)
18) (M____, N_LG, NaN, 5, 0)
19) (___M_, N_EL, NaN, 5, 5)
20) (M____, N_LG, -3, <null>, NaN)
21) (M____, N_LG, -3, <null>, -3)
22) (M____, N_LG, -3, <null>, 0)
23) (M____, N_LG, -3, <null>, 5)
24) (_M___, N_EG, -3, NaN, NaN)
25) (M____, N_LG, -3, NaN, -3)
26) (M____, N_LG, -3, NaN, 0)
27) (M____, N_LG, -3, NaN, 5)
28) (_M___, N_EG, -3, -3, NaN)
29) (_M_M_, N_E_, -3, -3, -3)
30) (___M_, N_EL, -3, -3, 0)
31) (___M_, N_EL, -3, -3, 5)
32) (M____, N_LG, -3, 0, NaN)
33) (M____, N_LG, -3, 0, -3)
34) (___M_, N_EL, -3, 0, 0)
35) (M__MM, N_L_, -3, 0, 5)
36) (M____, N_LG, -3, 5, NaN)
37) (M____, N_LG, -3, 5, -3)
38) (M____, N_LG, -3, 5, 0)
39) (___M_, N_EL, -3, 5, 5)
40) (M____, N_LG, 0, <null>, NaN)
41) (M____, N_LG, 0, <null>, -3)
42) (M____, N_LG, 0, <null>, 0)
43) (M____, N_LG, 0, <null>, 5)
44) (_M___, N_EG, 0, NaN, NaN)
45) (M____, N_LG, 0, NaN, -3)
46) (M____, N_LG, 0, NaN, 0)
47) (M____, N_LG, 0, NaN, 5)
48) (MMM__, N_G_, 0, -3, NaN)
49) (_M___, N_EG, 0, -3, -3)
50) (M____, N_LG, 0, -3, 0)
51) (M____, N_LG, 0, -3, 5)
52) (_M___, N_EG, 0, 0, NaN)
53) (_M___, N_EG, 0, 0, -3)
54) (_M_M_, N_E_, 0, 0, 0)
55) (___M_, N_EL, 0, 0, 5)
56) (M____, N_LG, 0, 5, NaN)
57) (M____, N_LG, 0, 5, -3)
58) (M____, N_LG, 0, 5, 0)
59) (___M_, N_EL, 0, 5, 5)
60) (M____, N_LG, 5, <null>, NaN)
61) (M____, N_LG, 5, <null>, -3)
62) (M____, N_LG, 5, <null>, 0)
63) (M____, N_LG, 5, <null>, 5)
64) (_M___, N_EG, 5, NaN, NaN)
65) (M____, N_LG, 5, NaN, -3)
66) (M____, N_LG, 5, NaN, 0)
67) (M____, N_LG, 5, NaN, 5)
68) (MMM__, N_G_, 5, -3, NaN)
69) (_M___, N_EG, 5, -3, -3)
70) (M____, N_LG, 5, -3, 0)
71) (M____, N_LG, 5, -3, 5)
72) (MMM__, N_G_, 5, 0, NaN)
73) (MMM__, N_G_, 5, 0, -3)
74) (_M___, N_EG, 5, 0, 0)
75) (M____, N_LG, 5, 0, 5)
76) (_M___, N_EG, 5, 5, NaN)
77) (_M___, N_EG, 5, 5, -3)
78) (_M___, N_EG, 5, 5, 0)
79) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 29
    [0](24): ChainMap(*1: yr4q, ForEach(*2: zr4_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr4_, ChainMap(*2: yr4q, ForEach(*3: zr4_, (*1, *2, *3))))
###
> G(xi__, yi_q, zi__)
G(xi__, yi_q, zi__) : (s, s, i, i?, i)*
BndKind:Call, Type:(s, s, i, i?, i)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi__), Call(∂.ChainMap([map:2] Global(yi_q), Call(∂.ForEach([map:3] Global(zi__), (Scope(1), Scope(2), Scope(3)):(i, i?, i)):(i, i?, i)*)):(i, i?, i)*)):(i, i?, i)*)):(i, i?, i)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i, i?, i)):(b, b, b, b, b, i, i?, i))):(b, b, b, b, b, i, i?, i)*)):(b, b, b, b, b, i, i?, i)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i, i?, i))):(s, s, i, i?, i))):(s, s, i, i?, i)*))
ForEach_1(Arr<obj>, (ia,Opt<ia>,ia)):(bool,bool,bool,bool,bool,ia,Opt<ia>,ia)
      1) ldarg.1 [(ia,Opt<ia>,ia)]
      5) ldfld (ia,Opt<ia>,ia)::_F0:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.0 [ia]
      1) ldarg.1 [(ia,Opt<ia>,ia)]
      5) ldfld (ia,Opt<ia>,ia)::_F1:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [(ia,Opt<ia>,ia)]
      5) ldfld (ia,Opt<ia>,ia)::_F2:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.2 [ia]
      5) newobj (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)()
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [ia]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.2 [ia]
      5) call static ia::op_Inequality(ia, ia):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F0:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      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_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [4]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F1:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [6]
      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_GreaterThan(ia, ia):bool
      5) brfalse [6]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F2:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [8]
      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_LessThanOrEqual(ia, ia):bool
      5) brfalse [8]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F3:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [10]
      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_LessThan(ia, ia):bool
      5) brfalse [10]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F4:bool
      1) dup
      1) ldloc.0 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F5:ia
      1) dup
      1) ldloc.1 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F6:Opt<ia>
      1) dup
      1) ldloc.2 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,ia)::_F7:ia
      1) ret
  Total Size: 340

Func sig: (<ctx>:x, xi__:i*, yi_q:i?*, zi__:i*) to (s, s, i, i?, i)*
Sequence: Seq<(str,str,ia,Opt<ia>,ia)>
 0) (M____, N_LG, -3, <null>, -3)
 1) (M____, N_LG, -3, <null>, 0)
 2) (M____, N_LG, -3, <null>, 5)
 3) (_M_M_, N_E_, -3, -3, -3)
 4) (___M_, N_EL, -3, -3, 0)
 5) (___M_, N_EL, -3, -3, 5)
 6) (M____, N_LG, -3, 0, -3)
 7) (___M_, N_EL, -3, 0, 0)
 8) (M__MM, N_L_, -3, 0, 5)
 9) (M____, N_LG, -3, 5, -3)
10) (M____, N_LG, -3, 5, 0)
11) (___M_, N_EL, -3, 5, 5)
12) (M____, N_LG, 0, <null>, -3)
13) (M____, N_LG, 0, <null>, 0)
14) (M____, N_LG, 0, <null>, 5)
15) (_M___, N_EG, 0, -3, -3)
16) (M____, N_LG, 0, -3, 0)
17) (M____, N_LG, 0, -3, 5)
18) (_M___, N_EG, 0, 0, -3)
19) (_M_M_, N_E_, 0, 0, 0)
20) (___M_, N_EL, 0, 0, 5)
21) (M____, N_LG, 0, 5, -3)
22) (M____, N_LG, 0, 5, 0)
23) (___M_, N_EL, 0, 5, 5)
24) (M____, N_LG, 5, <null>, -3)
25) (M____, N_LG, 5, <null>, 0)
26) (M____, N_LG, 5, <null>, 5)
27) (_M___, N_EG, 5, -3, -3)
28) (M____, N_LG, 5, -3, 0)
29) (M____, N_LG, 5, -3, 5)
30) (MMM__, N_G_, 5, 0, -3)
31) (_M___, N_EG, 5, 0, 0)
32) (M____, N_LG, 5, 0, 5)
33) (_M___, N_EG, 5, 5, -3)
34) (_M___, N_EG, 5, 5, 0)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yi_q, ForEach(*2: zi__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi__, ChainMap(*2: yi_q, ForEach(*3: zi__, (*1, *2, *3))))
###
> G(xi2_, yi2q, zi2_)
G(xi2_, yi2q, zi2_) : (s, s, i2, i2?, i2)*
BndKind:Call, Type:(s, s, i2, i2?, i2)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2_), Call(∂.ChainMap([map:2] Global(yi2q), Call(∂.ForEach([map:3] Global(zi2_), (Scope(1), Scope(2), Scope(3)):(i2, i2?, i2)):(i2, i2?, i2)*)):(i2, i2?, i2)*)):(i2, i2?, i2)*)):(i2, i2?, i2)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2, i2?, i2)):(b, b, b, b, b, i2, i2?, i2))):(b, b, b, b, b, i2, i2?, i2)*)):(b, b, b, b, b, i2, i2?, i2)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2, i2?, i2))):(s, s, i2, i2?, i2))):(s, s, i2, i2?, i2)*))
ForEach_1(Arr<obj>, (i2,Opt<i2>,i2)):(bool,bool,bool,bool,bool,i2,Opt<i2>,i2)
      1) ldarg.1 [(i2,Opt<i2>,i2)]
      5) ldfld (i2,Opt<i2>,i2)::_F0:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.0 [i2]
      1) ldarg.1 [(i2,Opt<i2>,i2)]
      5) ldfld (i2,Opt<i2>,i2)::_F1:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.1 [Opt<i2>]
      1) ldarg.1 [(i2,Opt<i2>,i2)]
      5) ldfld (i2,Opt<i2>,i2)::_F2:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.2 [i2]
      5) newobj (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)()
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [i2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.2 [i2]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F0:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) blt [4]
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F1:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) ble [6]
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) cgt
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F2:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) bgt [8]
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F3:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) bge [10]
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) clt
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F4:bool
      1) dup
      1) ldloc.0 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F5:i2
      1) dup
      1) ldloc.1 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F6:Opt<i2>
      1) dup
      1) ldloc.2 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,i2)::_F7:i2
      1) ret
  Total Size: 309

Func sig: (<ctx>:x, xi2_:i2*, yi2q:i2?*, zi2_:i2*) to (s, s, i2, i2?, i2)*
Sequence: Seq<(str,str,i2,Opt<i2>,i2)>
 0) (M____, N_LG, -3, <null>, -3)
 1) (M____, N_LG, -3, <null>, 0)
 2) (M____, N_LG, -3, <null>, 5)
 3) (_M_M_, N_E_, -3, -3, -3)
 4) (___M_, N_EL, -3, -3, 0)
 5) (___M_, N_EL, -3, -3, 5)
 6) (M____, N_LG, -3, 0, -3)
 7) (___M_, N_EL, -3, 0, 0)
 8) (M__MM, N_L_, -3, 0, 5)
 9) (M____, N_LG, -3, 5, -3)
10) (M____, N_LG, -3, 5, 0)
11) (___M_, N_EL, -3, 5, 5)
12) (M____, N_LG, 0, <null>, -3)
13) (M____, N_LG, 0, <null>, 0)
14) (M____, N_LG, 0, <null>, 5)
15) (_M___, N_EG, 0, -3, -3)
16) (M____, N_LG, 0, -3, 0)
17) (M____, N_LG, 0, -3, 5)
18) (_M___, N_EG, 0, 0, -3)
19) (_M_M_, N_E_, 0, 0, 0)
20) (___M_, N_EL, 0, 0, 5)
21) (M____, N_LG, 0, 5, -3)
22) (M____, N_LG, 0, 5, 0)
23) (___M_, N_EL, 0, 5, 5)
24) (M____, N_LG, 5, <null>, -3)
25) (M____, N_LG, 5, <null>, 0)
26) (M____, N_LG, 5, <null>, 5)
27) (_M___, N_EG, 5, -3, -3)
28) (M____, N_LG, 5, -3, 0)
29) (M____, N_LG, 5, -3, 5)
30) (MMM__, N_G_, 5, 0, -3)
31) (_M___, N_EG, 5, 0, 0)
32) (M____, N_LG, 5, 0, 5)
33) (_M___, N_EG, 5, 5, -3)
34) (_M___, N_EG, 5, 5, 0)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yi2q, ForEach(*2: zi2_, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi2_, ChainMap(*2: yi2q, ForEach(*3: zi2_, (*1, *2, *3))))
###
> G(xu4_, yu4q, zu4_)
G(xu4_, yu4q, zu4_) : (s, s, u4, u4?, u4)*
BndKind:Call, Type:(s, s, u4, u4?, u4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4_), Call(∂.ChainMap([map:2] Global(yu4q), Call(∂.ForEach([map:3] Global(zu4_), (Scope(1), Scope(2), Scope(3)):(u4, u4?, u4)):(u4, u4?, u4)*)):(u4, u4?, u4)*)):(u4, u4?, u4)*)):(u4, u4?, u4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4, u4?, u4)):(b, b, b, b, b, u4, u4?, u4))):(b, b, b, b, b, u4, u4?, u4)*)):(b, b, b, b, b, u4, u4?, u4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4, u4?, u4))):(s, s, u4, u4?, u4))):(s, s, u4, u4?, u4)*))
ForEach_1(Arr<obj>, (u4,Opt<u4>,u4)):(bool,bool,bool,bool,bool,u4,Opt<u4>,u4)
      1) ldarg.1 [(u4,Opt<u4>,u4)]
      5) ldfld (u4,Opt<u4>,u4)::_F0:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.0 [u4]
      1) ldarg.1 [(u4,Opt<u4>,u4)]
      5) ldfld (u4,Opt<u4>,u4)::_F1:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [(u4,Opt<u4>,u4)]
      5) ldfld (u4,Opt<u4>,u4)::_F2:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.2 [u4]
      5) newobj (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)()
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [u4]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.2 [u4]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F0:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      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) blt.un [4]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F1:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [6]
      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) ble.un [6]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F2:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [8]
      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) bgt.un [8]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F3:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [10]
      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) bge.un [10]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F4:bool
      1) dup
      1) ldloc.0 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F5:u4
      1) dup
      1) ldloc.1 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F6:Opt<u4>
      1) dup
      1) ldloc.2 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,u4)::_F7:u4
      1) ret
  Total Size: 309

Func sig: (<ctx>:x, xu4_:u4*, yu4q:u4?*, zu4_:u4*) to (s, s, u4, u4?, u4)*
Sequence: Seq<(str,str,u4,Opt<u4>,u4)>
 0) (M____, N_LG, 0, <null>, 0)
 1) (M____, N_LG, 0, <null>, 3)
 2) (M____, N_LG, 0, <null>, 5)
 3) (_M_M_, N_E_, 0, 0, 0)
 4) (___M_, N_EL, 0, 0, 3)
 5) (___M_, N_EL, 0, 0, 5)
 6) (M____, N_LG, 0, 3, 0)
 7) (___M_, N_EL, 0, 3, 3)
 8) (M__MM, N_L_, 0, 3, 5)
 9) (M____, N_LG, 0, 5, 0)
10) (M____, N_LG, 0, 5, 3)
11) (___M_, N_EL, 0, 5, 5)
12) (M____, N_LG, 3, <null>, 0)
13) (M____, N_LG, 3, <null>, 3)
14) (M____, N_LG, 3, <null>, 5)
15) (_M___, N_EG, 3, 0, 0)
16) (M____, N_LG, 3, 0, 3)
17) (M____, N_LG, 3, 0, 5)
18) (_M___, N_EG, 3, 3, 0)
19) (_M_M_, N_E_, 3, 3, 3)
20) (___M_, N_EL, 3, 3, 5)
21) (M____, N_LG, 3, 5, 0)
22) (M____, N_LG, 3, 5, 3)
23) (___M_, N_EL, 3, 5, 5)
24) (M____, N_LG, 5, <null>, 0)
25) (M____, N_LG, 5, <null>, 3)
26) (M____, N_LG, 5, <null>, 5)
27) (_M___, N_EG, 5, 0, 0)
28) (M____, N_LG, 5, 0, 3)
29) (M____, N_LG, 5, 0, 5)
30) (MMM__, N_G_, 5, 3, 0)
31) (_M___, N_EG, 5, 3, 3)
32) (M____, N_LG, 5, 3, 5)
33) (_M___, N_EG, 5, 5, 0)
34) (_M___, N_EG, 5, 5, 3)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yu4q, ForEach(*2: zu4_, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xu4_, ChainMap(*2: yu4q, ForEach(*3: zu4_, (*1, *2, *3))))
###
> G(xd__, yd_q, zd__)
G(xd__, yd_q, zd__) : (s, s, d, d?, d)*
BndKind:Call, Type:(s, s, d, d?, d)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd__), Call(∂.ChainMap([map:2] Global(yd_q), Call(∂.ForEach([map:3] Global(zd__), (Scope(1), Scope(2), Scope(3)):(d, d?, d)):(d, d?, d)*)):(d, d?, d)*)):(d, d?, d)*)):(d, d?, d)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d, d?, d)):(b, b, b, b, b, d, d?, d))):(b, b, b, b, b, d, d?, d)*)):(b, b, b, b, b, d, d?, d)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d, d?, d))):(s, s, d, d?, d))):(s, s, d, d?, d)*))
ForEach_1(Arr<obj>, (Date,Opt<Date>,Date)):(bool,bool,bool,bool,bool,Date,Opt<Date>,Date)
      1) ldarg.1 [(Date,Opt<Date>,Date)]
      5) ldfld (Date,Opt<Date>,Date)::_F0:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.0 [Date]
      1) ldarg.1 [(Date,Opt<Date>,Date)]
      5) ldfld (Date,Opt<Date>,Date)::_F1:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [(Date,Opt<Date>,Date)]
      5) ldfld (Date,Opt<Date>,Date)::_F2:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.2 [Date]
      5) newobj (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)()
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [Date]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.2 [Date]
      5) call static Date::op_Inequality(Date, Date):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      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_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [4]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [6]
      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_GreaterThan(Date, Date):bool
      5) brfalse [6]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [8]
      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_LessThanOrEqual(Date, Date):bool
      5) brfalse [8]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [10]
      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_LessThan(Date, Date):bool
      5) brfalse [10]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F4:bool
      1) dup
      1) ldloc.0 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F5:Date
      1) dup
      1) ldloc.1 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F6:Opt<Date>
      1) dup
      1) ldloc.2 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Date)::_F7:Date
      1) ret
  Total Size: 340

Func sig: (<ctx>:x, xd__:d*, yd_q:d?*, zd__:d*) to (s, s, d, d?, d)*
Sequence: Seq<(str,str,Date,Opt<Date>,Date)>
 0) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
 1) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
 2) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
 3) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 4) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 5) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 6) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 7) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 8) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 9) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
13) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
14) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
15) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
16) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
17) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
18) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
19) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
20) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
21) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
25) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
26) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
27) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
28) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
29) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
30) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
31) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
32) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
33) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
34) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
35) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yd_q, ForEach(*2: zd__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xd__, ChainMap(*2: yd_q, ForEach(*3: zd__, (*1, *2, *3))))
###
> G(xt__, yt_q, zt__)
G(xt__, yt_q, zt__) : (s, s, t, t?, t)*
BndKind:Call, Type:(s, s, t, t?, t)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt__), Call(∂.ChainMap([map:2] Global(yt_q), Call(∂.ForEach([map:3] Global(zt__), (Scope(1), Scope(2), Scope(3)):(t, t?, t)):(t, t?, t)*)):(t, t?, t)*)):(t, t?, t)*)):(t, t?, t)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t, t?, t)):(b, b, b, b, b, t, t?, t))):(b, b, b, b, b, t, t?, t)*)):(b, b, b, b, b, t, t?, t)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t, t?, t))):(s, s, t, t?, t))):(s, s, t, t?, t)*))
ForEach_1(Arr<obj>, (Time,Opt<Time>,Time)):(bool,bool,bool,bool,bool,Time,Opt<Time>,Time)
      1) ldarg.1 [(Time,Opt<Time>,Time)]
      5) ldfld (Time,Opt<Time>,Time)::_F0:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.0 [Time]
      1) ldarg.1 [(Time,Opt<Time>,Time)]
      5) ldfld (Time,Opt<Time>,Time)::_F1:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [(Time,Opt<Time>,Time)]
      5) ldfld (Time,Opt<Time>,Time)::_F2:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.2 [Time]
      5) newobj (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)()
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [Time]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.2 [Time]
      5) call static Time::op_Inequality(Time, Time):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      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_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [4]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [6]
      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_GreaterThan(Time, Time):bool
      5) brfalse [6]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [8]
      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_LessThanOrEqual(Time, Time):bool
      5) brfalse [8]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [10]
      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_LessThan(Time, Time):bool
      5) brfalse [10]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F4:bool
      1) dup
      1) ldloc.0 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F5:Time
      1) dup
      1) ldloc.1 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F6:Opt<Time>
      1) dup
      1) ldloc.2 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Time)::_F7:Time
      1) ret
  Total Size: 340

Func sig: (<ctx>:x, xt__:t*, yt_q:t?*, zt__:t*) to (s, s, t, t?, t)*
Sequence: Seq<(str,str,Time,Opt<Time>,Time)>
 0) (M____, N_LG, -2.00:00:00, <null>, -2.00:00:00)
 1) (M____, N_LG, -2.00:00:00, <null>, 00:00:00)
 2) (M____, N_LG, -2.00:00:00, <null>, 3.00:00:00)
 3) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
 4) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
 5) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
 6) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
 7) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
 8) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
 9) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
10) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
11) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
12) (M____, N_LG, 00:00:00, <null>, -2.00:00:00)
13) (M____, N_LG, 00:00:00, <null>, 00:00:00)
14) (M____, N_LG, 00:00:00, <null>, 3.00:00:00)
15) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
16) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
17) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
18) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
19) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
20) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
21) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
22) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
23) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
24) (M____, N_LG, 3.00:00:00, <null>, -2.00:00:00)
25) (M____, N_LG, 3.00:00:00, <null>, 00:00:00)
26) (M____, N_LG, 3.00:00:00, <null>, 3.00:00:00)
27) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
28) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
29) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
30) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
31) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
32) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
33) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
34) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
35) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yt_q, ForEach(*2: zt__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xt__, ChainMap(*2: yt_q, ForEach(*3: zt__, (*1, *2, *3))))
###
> G(xb__, yb__, zb_q) // RRQ
G(xb__, yb__, zb_q) : (s, s, b, b, b?)*
BndKind:Call, Type:(s, s, b, b, b?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb__), Call(∂.ChainMap([map:2] Global(yb__), Call(∂.ForEach([map:3] Global(zb_q), (Scope(1), Scope(2), Scope(3)):(b, b, b?)):(b, b, b?)*)):(b, b, b?)*)):(b, b, b?)*)):(b, b, b?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b, b, b?)):(b, b, b, b, b, b, b, b?))):(b, b, b, b, b, b, b, b?)*)):(b, b, b, b, b, b, b, b?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b, b, b?))):(s, s, b, b, b?))):(s, s, b, b, b?)*))
ForEach_1(Arr<obj>, (bool,bool,Opt<bool>)):(bool,bool,bool,bool,bool,bool,bool,Opt<bool>)
      1) ldarg.1 [(bool,bool,Opt<bool>)]
      5) ldfld (bool,bool,Opt<bool>)::_F0:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.0 [bool]
      1) ldarg.1 [(bool,bool,Opt<bool>)]
      5) ldfld (bool,bool,Opt<bool>)::_F1:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.1 [bool]
      1) ldarg.1 [(bool,bool,Opt<bool>)]
      5) ldfld (bool,bool,Opt<bool>)::_F2:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.2 [Opt<bool>]
      5) newobj (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)()
      1) dup
      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 [1]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) xor
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F0:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) blt.un [3]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F1:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) ble.un [6]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F2:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) bgt.un [9]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F3:bool
      1) dup
      1) ldloc.0 [bool]
      1) ldloc.1 [bool]
      5) bge.un [11]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F4:bool
      1) dup
      1) ldloc.0 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F5:bool
      1) dup
      1) ldloc.1 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F6:bool
      1) dup
      1) ldloc.2 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,bool,bool,Opt<bool>)::_F7:Opt<bool>
      1) ret
  Total Size: 291

Func sig: (<ctx>:x, xb__:b*, yb__:b*, zb_q:b?*) to (s, s, b, b, b?)*
Sequence: Seq<(str,str,bool,bool,Opt<bool>)>
 0) (_M___, N_EG, false, false, <null>)
 1) (_M_M_, N_E_, false, false, false)
 2) (___M_, N_EL, false, false, true )
 3) (M____, N_LG, false, true , <null>)
 4) (M____, N_LG, false, true , false)
 5) (___M_, N_EL, false, true , true )
 6) (MMM__, N_G_, true , false, <null>)
 7) (_M___, N_EG, true , false, false)
 8) (M____, N_LG, true , false, true )
 9) (_M___, N_EG, true , true , <null>)
10) (_M___, N_EG, true , true , false)
11) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 9
    [0](6): ChainMap(*1: yb__, ForEach(*2: zb_q, (*3x, *1, *2)))
    [1](3): ChainMap(*1: xb__, ChainMap(*2: yb__, ForEach(*3: zb_q, (*1, *2, *3))))
###
> G(xr8_, yr8_, zr8q)
G(xr8_, yr8_, zr8q) : (s, s, r8, r8, r8?)*
BndKind:Call, Type:(s, s, r8, r8, r8?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8_), Call(∂.ChainMap([map:2] Global(yr8_), Call(∂.ForEach([map:3] Global(zr8q), (Scope(1), Scope(2), Scope(3)):(r8, r8, r8?)):(r8, r8, r8?)*)):(r8, r8, r8?)*)):(r8, r8, r8?)*)):(r8, r8, r8?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8, r8, r8?)):(b, b, b, b, b, r8, r8, r8?))):(b, b, b, b, b, r8, r8, r8?)*)):(b, b, b, b, b, r8, r8, r8?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8, r8, r8?))):(s, s, r8, r8, r8?))):(s, s, r8, r8, r8?)*))
ForEach_1(Arr<obj>, (r8,r8,Opt<r8>)):(bool,bool,bool,bool,bool,r8,r8,Opt<r8>)
      1) ldarg.1 [(r8,r8,Opt<r8>)]
      5) ldfld (r8,r8,Opt<r8>)::_F0:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.0 [r8]
      1) ldarg.1 [(r8,r8,Opt<r8>)]
      5) ldfld (r8,r8,Opt<r8>)::_F1:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.1 [r8]
      1) ldarg.1 [(r8,r8,Opt<r8>)]
      5) ldfld (r8,r8,Opt<r8>)::_F2:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.2 [Opt<r8>]
      5) newobj (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)()
      1) dup
      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 [1]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F0:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [3]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F1:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) brfalse [6]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F2:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) brfalse [9]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Le(r8, r8):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F3:bool
      1) dup
      1) ldloc.0 [r8]
      1) ldloc.1 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) brfalse [11]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F4:bool
      1) dup
      1) ldloc.0 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F5:r8
      1) dup
      1) ldloc.1 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F6:r8
      1) dup
      1) ldloc.2 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,r8,r8,Opt<r8>)::_F7:Opt<r8>
      1) ret
  Total Size: 329

Func sig: (<ctx>:x, xr8_:r8*, yr8_:r8*, zr8q:r8?*) to (s, s, r8, r8, r8?)*
Sequence: Seq<(str,str,r8,r8,Opt<r8>)>
 0) (_M___, N_EG, NaN, NaN, <null>)
 1) (_M_M_, N_E_, NaN, NaN, NaN)
 2) (___M_, N_EL, NaN, NaN, -3)
 3) (___M_, N_EL, NaN, NaN, 0)
 4) (___M_, N_EL, NaN, NaN, 5)
 5) (M____, N_LG, NaN, -3, <null>)
 6) (M____, N_LG, NaN, -3, NaN)
 7) (___M_, N_EL, NaN, -3, -3)
 8) (M__MM, N_L_, NaN, -3, 0)
 9) (M__MM, N_L_, NaN, -3, 5)
10) (M____, N_LG, NaN, 0, <null>)
11) (M____, N_LG, NaN, 0, NaN)
12) (M____, N_LG, NaN, 0, -3)
13) (___M_, N_EL, NaN, 0, 0)
14) (M__MM, N_L_, NaN, 0, 5)
15) (M____, N_LG, NaN, 5, <null>)
16) (M____, N_LG, NaN, 5, NaN)
17) (M____, N_LG, NaN, 5, -3)
18) (M____, N_LG, NaN, 5, 0)
19) (___M_, N_EL, NaN, 5, 5)
20) (MMM__, N_G_, -3, NaN, <null>)
21) (_M___, N_EG, -3, NaN, NaN)
22) (M____, N_LG, -3, NaN, -3)
23) (M____, N_LG, -3, NaN, 0)
24) (M____, N_LG, -3, NaN, 5)
25) (_M___, N_EG, -3, -3, <null>)
26) (_M___, N_EG, -3, -3, NaN)
27) (_M_M_, N_E_, -3, -3, -3)
28) (___M_, N_EL, -3, -3, 0)
29) (___M_, N_EL, -3, -3, 5)
30) (M____, N_LG, -3, 0, <null>)
31) (M____, N_LG, -3, 0, NaN)
32) (M____, N_LG, -3, 0, -3)
33) (___M_, N_EL, -3, 0, 0)
34) (M__MM, N_L_, -3, 0, 5)
35) (M____, N_LG, -3, 5, <null>)
36) (M____, N_LG, -3, 5, NaN)
37) (M____, N_LG, -3, 5, -3)
38) (M____, N_LG, -3, 5, 0)
39) (___M_, N_EL, -3, 5, 5)
40) (MMM__, N_G_, 0, NaN, <null>)
41) (_M___, N_EG, 0, NaN, NaN)
42) (M____, N_LG, 0, NaN, -3)
43) (M____, N_LG, 0, NaN, 0)
44) (M____, N_LG, 0, NaN, 5)
45) (MMM__, N_G_, 0, -3, <null>)
46) (MMM__, N_G_, 0, -3, NaN)
47) (_M___, N_EG, 0, -3, -3)
48) (M____, N_LG, 0, -3, 0)
49) (M____, N_LG, 0, -3, 5)
50) (_M___, N_EG, 0, 0, <null>)
51) (_M___, N_EG, 0, 0, NaN)
52) (_M___, N_EG, 0, 0, -3)
53) (_M_M_, N_E_, 0, 0, 0)
54) (___M_, N_EL, 0, 0, 5)
55) (M____, N_LG, 0, 5, <null>)
56) (M____, N_LG, 0, 5, NaN)
57) (M____, N_LG, 0, 5, -3)
58) (M____, N_LG, 0, 5, 0)
59) (___M_, N_EL, 0, 5, 5)
60) (MMM__, N_G_, 5, NaN, <null>)
61) (_M___, N_EG, 5, NaN, NaN)
62) (M____, N_LG, 5, NaN, -3)
63) (M____, N_LG, 5, NaN, 0)
64) (M____, N_LG, 5, NaN, 5)
65) (MMM__, N_G_, 5, -3, <null>)
66) (MMM__, N_G_, 5, -3, NaN)
67) (_M___, N_EG, 5, -3, -3)
68) (M____, N_LG, 5, -3, 0)
69) (M____, N_LG, 5, -3, 5)
70) (MMM__, N_G_, 5, 0, <null>)
71) (MMM__, N_G_, 5, 0, NaN)
72) (MMM__, N_G_, 5, 0, -3)
73) (_M___, N_EG, 5, 0, 0)
74) (M____, N_LG, 5, 0, 5)
75) (_M___, N_EG, 5, 5, <null>)
76) (_M___, N_EG, 5, 5, NaN)
77) (_M___, N_EG, 5, 5, -3)
78) (_M___, N_EG, 5, 5, 0)
79) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yr8_, ForEach(*2: zr8q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr8_, ChainMap(*2: yr8_, ForEach(*3: zr8q, (*1, *2, *3))))
###
> G(xr4_, yr4_, zr4q)
G(xr4_, yr4_, zr4q) : (s, s, r4, r4, r4?)*
BndKind:Call, Type:(s, s, r4, r4, r4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4_), Call(∂.ChainMap([map:2] Global(yr4_), Call(∂.ForEach([map:3] Global(zr4q), (Scope(1), Scope(2), Scope(3)):(r4, r4, r4?)):(r4, r4, r4?)*)):(r4, r4, r4?)*)):(r4, r4, r4?)*)):(r4, r4, r4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4, r4, r4?)):(b, b, b, b, b, r4, r4, r4?))):(b, b, b, b, b, r4, r4, r4?)*)):(b, b, b, b, b, r4, r4, r4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4, r4, r4?))):(s, s, r4, r4, r4?))):(s, s, r4, r4, r4?)*))
ForEach_1(Arr<obj>, (r4,r4,Opt<r4>)):(bool,bool,bool,bool,bool,r4,r4,Opt<r4>)
      1) ldarg.1 [(r4,r4,Opt<r4>)]
      5) ldfld (r4,r4,Opt<r4>)::_F0:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.0 [r4]
      1) ldarg.1 [(r4,r4,Opt<r4>)]
      5) ldfld (r4,r4,Opt<r4>)::_F1:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.1 [r4]
      1) ldarg.1 [(r4,r4,Opt<r4>)]
      5) ldfld (r4,r4,Opt<r4>)::_F2:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.2 [Opt<r4>]
      5) newobj (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)()
      1) dup
      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 [1]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F0:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [3]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F1:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) brfalse [6]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F2:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) brfalse [9]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Le(r4, r4):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F3:bool
      1) dup
      1) ldloc.0 [r4]
      1) ldloc.1 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) brfalse [11]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F4:bool
      1) dup
      1) ldloc.0 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F5:r4
      1) dup
      1) ldloc.1 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F6:r4
      1) dup
      1) ldloc.2 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,r4,r4,Opt<r4>)::_F7:Opt<r4>
      1) ret
  Total Size: 329

Func sig: (<ctx>:x, xr4_:r4*, yr4_:r4*, zr4q:r4?*) to (s, s, r4, r4, r4?)*
Sequence: Seq<(str,str,r4,r4,Opt<r4>)>
 0) (_M___, N_EG, NaN, NaN, <null>)
 1) (_M_M_, N_E_, NaN, NaN, NaN)
 2) (___M_, N_EL, NaN, NaN, -3)
 3) (___M_, N_EL, NaN, NaN, 0)
 4) (___M_, N_EL, NaN, NaN, 5)
 5) (M____, N_LG, NaN, -3, <null>)
 6) (M____, N_LG, NaN, -3, NaN)
 7) (___M_, N_EL, NaN, -3, -3)
 8) (M__MM, N_L_, NaN, -3, 0)
 9) (M__MM, N_L_, NaN, -3, 5)
10) (M____, N_LG, NaN, 0, <null>)
11) (M____, N_LG, NaN, 0, NaN)
12) (M____, N_LG, NaN, 0, -3)
13) (___M_, N_EL, NaN, 0, 0)
14) (M__MM, N_L_, NaN, 0, 5)
15) (M____, N_LG, NaN, 5, <null>)
16) (M____, N_LG, NaN, 5, NaN)
17) (M____, N_LG, NaN, 5, -3)
18) (M____, N_LG, NaN, 5, 0)
19) (___M_, N_EL, NaN, 5, 5)
20) (MMM__, N_G_, -3, NaN, <null>)
21) (_M___, N_EG, -3, NaN, NaN)
22) (M____, N_LG, -3, NaN, -3)
23) (M____, N_LG, -3, NaN, 0)
24) (M____, N_LG, -3, NaN, 5)
25) (_M___, N_EG, -3, -3, <null>)
26) (_M___, N_EG, -3, -3, NaN)
27) (_M_M_, N_E_, -3, -3, -3)
28) (___M_, N_EL, -3, -3, 0)
29) (___M_, N_EL, -3, -3, 5)
30) (M____, N_LG, -3, 0, <null>)
31) (M____, N_LG, -3, 0, NaN)
32) (M____, N_LG, -3, 0, -3)
33) (___M_, N_EL, -3, 0, 0)
34) (M__MM, N_L_, -3, 0, 5)
35) (M____, N_LG, -3, 5, <null>)
36) (M____, N_LG, -3, 5, NaN)
37) (M____, N_LG, -3, 5, -3)
38) (M____, N_LG, -3, 5, 0)
39) (___M_, N_EL, -3, 5, 5)
40) (MMM__, N_G_, 0, NaN, <null>)
41) (_M___, N_EG, 0, NaN, NaN)
42) (M____, N_LG, 0, NaN, -3)
43) (M____, N_LG, 0, NaN, 0)
44) (M____, N_LG, 0, NaN, 5)
45) (MMM__, N_G_, 0, -3, <null>)
46) (MMM__, N_G_, 0, -3, NaN)
47) (_M___, N_EG, 0, -3, -3)
48) (M____, N_LG, 0, -3, 0)
49) (M____, N_LG, 0, -3, 5)
50) (_M___, N_EG, 0, 0, <null>)
51) (_M___, N_EG, 0, 0, NaN)
52) (_M___, N_EG, 0, 0, -3)
53) (_M_M_, N_E_, 0, 0, 0)
54) (___M_, N_EL, 0, 0, 5)
55) (M____, N_LG, 0, 5, <null>)
56) (M____, N_LG, 0, 5, NaN)
57) (M____, N_LG, 0, 5, -3)
58) (M____, N_LG, 0, 5, 0)
59) (___M_, N_EL, 0, 5, 5)
60) (MMM__, N_G_, 5, NaN, <null>)
61) (_M___, N_EG, 5, NaN, NaN)
62) (M____, N_LG, 5, NaN, -3)
63) (M____, N_LG, 5, NaN, 0)
64) (M____, N_LG, 5, NaN, 5)
65) (MMM__, N_G_, 5, -3, <null>)
66) (MMM__, N_G_, 5, -3, NaN)
67) (_M___, N_EG, 5, -3, -3)
68) (M____, N_LG, 5, -3, 0)
69) (M____, N_LG, 5, -3, 5)
70) (MMM__, N_G_, 5, 0, <null>)
71) (MMM__, N_G_, 5, 0, NaN)
72) (MMM__, N_G_, 5, 0, -3)
73) (_M___, N_EG, 5, 0, 0)
74) (M____, N_LG, 5, 0, 5)
75) (_M___, N_EG, 5, 5, <null>)
76) (_M___, N_EG, 5, 5, NaN)
77) (_M___, N_EG, 5, 5, -3)
78) (_M___, N_EG, 5, 5, 0)
79) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yr4_, ForEach(*2: zr4q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr4_, ChainMap(*2: yr4_, ForEach(*3: zr4q, (*1, *2, *3))))
###
> G(xi__, yi__, zi_q)
G(xi__, yi__, zi_q) : (s, s, i, i, i?)*
BndKind:Call, Type:(s, s, i, i, i?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi__), Call(∂.ChainMap([map:2] Global(yi__), Call(∂.ForEach([map:3] Global(zi_q), (Scope(1), Scope(2), Scope(3)):(i, i, i?)):(i, i, i?)*)):(i, i, i?)*)):(i, i, i?)*)):(i, i, i?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i, i, i?)):(b, b, b, b, b, i, i, i?))):(b, b, b, b, b, i, i, i?)*)):(b, b, b, b, b, i, i, i?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i, i, i?))):(s, s, i, i, i?))):(s, s, i, i, i?)*))
ForEach_1(Arr<obj>, (ia,ia,Opt<ia>)):(bool,bool,bool,bool,bool,ia,ia,Opt<ia>)
      1) ldarg.1 [(ia,ia,Opt<ia>)]
      5) ldfld (ia,ia,Opt<ia>)::_F0:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.0 [ia]
      1) ldarg.1 [(ia,ia,Opt<ia>)]
      5) ldfld (ia,ia,Opt<ia>)::_F1:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.1 [ia]
      1) ldarg.1 [(ia,ia,Opt<ia>)]
      5) ldfld (ia,ia,Opt<ia>)::_F2:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.2 [Opt<ia>]
      5) newobj (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)()
      1) dup
      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 [1]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Inequality(ia, ia):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F0:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [3]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F1:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) brfalse [6]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F2:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) brfalse [9]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F3:bool
      1) dup
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) brfalse [11]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F4:bool
      1) dup
      1) ldloc.0 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F5:ia
      1) dup
      1) ldloc.1 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F6:ia
      1) dup
      1) ldloc.2 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,ia,ia,Opt<ia>)::_F7:Opt<ia>
      1) ret
  Total Size: 326

Func sig: (<ctx>:x, xi__:i*, yi__:i*, zi_q:i?*) to (s, s, i, i, i?)*
Sequence: Seq<(str,str,ia,ia,Opt<ia>)>
 0) (_M___, N_EG, -3, -3, <null>)
 1) (_M_M_, N_E_, -3, -3, -3)
 2) (___M_, N_EL, -3, -3, 0)
 3) (___M_, N_EL, -3, -3, 5)
 4) (M____, N_LG, -3, 0, <null>)
 5) (M____, N_LG, -3, 0, -3)
 6) (___M_, N_EL, -3, 0, 0)
 7) (M__MM, N_L_, -3, 0, 5)
 8) (M____, N_LG, -3, 5, <null>)
 9) (M____, N_LG, -3, 5, -3)
10) (M____, N_LG, -3, 5, 0)
11) (___M_, N_EL, -3, 5, 5)
12) (MMM__, N_G_, 0, -3, <null>)
13) (_M___, N_EG, 0, -3, -3)
14) (M____, N_LG, 0, -3, 0)
15) (M____, N_LG, 0, -3, 5)
16) (_M___, N_EG, 0, 0, <null>)
17) (_M___, N_EG, 0, 0, -3)
18) (_M_M_, N_E_, 0, 0, 0)
19) (___M_, N_EL, 0, 0, 5)
20) (M____, N_LG, 0, 5, <null>)
21) (M____, N_LG, 0, 5, -3)
22) (M____, N_LG, 0, 5, 0)
23) (___M_, N_EL, 0, 5, 5)
24) (MMM__, N_G_, 5, -3, <null>)
25) (_M___, N_EG, 5, -3, -3)
26) (M____, N_LG, 5, -3, 0)
27) (M____, N_LG, 5, -3, 5)
28) (MMM__, N_G_, 5, 0, <null>)
29) (MMM__, N_G_, 5, 0, -3)
30) (_M___, N_EG, 5, 0, 0)
31) (M____, N_LG, 5, 0, 5)
32) (_M___, N_EG, 5, 5, <null>)
33) (_M___, N_EG, 5, 5, -3)
34) (_M___, N_EG, 5, 5, 0)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yi__, ForEach(*2: zi_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi__, ChainMap(*2: yi__, ForEach(*3: zi_q, (*1, *2, *3))))
###
> G(xi2_, yi2_, zi2q)
G(xi2_, yi2_, zi2q) : (s, s, i2, i2, i2?)*
BndKind:Call, Type:(s, s, i2, i2, i2?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2_), Call(∂.ChainMap([map:2] Global(yi2_), Call(∂.ForEach([map:3] Global(zi2q), (Scope(1), Scope(2), Scope(3)):(i2, i2, i2?)):(i2, i2, i2?)*)):(i2, i2, i2?)*)):(i2, i2, i2?)*)):(i2, i2, i2?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2, i2, i2?)):(b, b, b, b, b, i2, i2, i2?))):(b, b, b, b, b, i2, i2, i2?)*)):(b, b, b, b, b, i2, i2, i2?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2, i2, i2?))):(s, s, i2, i2, i2?))):(s, s, i2, i2, i2?)*))
ForEach_1(Arr<obj>, (i2,i2,Opt<i2>)):(bool,bool,bool,bool,bool,i2,i2,Opt<i2>)
      1) ldarg.1 [(i2,i2,Opt<i2>)]
      5) ldfld (i2,i2,Opt<i2>)::_F0:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.0 [i2]
      1) ldarg.1 [(i2,i2,Opt<i2>)]
      5) ldfld (i2,i2,Opt<i2>)::_F1:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.1 [i2]
      1) ldarg.1 [(i2,i2,Opt<i2>)]
      5) ldfld (i2,i2,Opt<i2>)::_F2:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.2 [Opt<i2>]
      5) newobj (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)()
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) beq [0]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [1]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F0:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) blt [3]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F1:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) ble [6]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F2:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) bgt [9]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F3:bool
      1) dup
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      5) bge [11]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F4:bool
      1) dup
      1) ldloc.0 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F5:i2
      1) dup
      1) ldloc.1 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F6:i2
      1) dup
      1) ldloc.2 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,i2,i2,Opt<i2>)::_F7:Opt<i2>
      1) ret
  Total Size: 295

Func sig: (<ctx>:x, xi2_:i2*, yi2_:i2*, zi2q:i2?*) to (s, s, i2, i2, i2?)*
Sequence: Seq<(str,str,i2,i2,Opt<i2>)>
 0) (_M___, N_EG, -3, -3, <null>)
 1) (_M_M_, N_E_, -3, -3, -3)
 2) (___M_, N_EL, -3, -3, 0)
 3) (___M_, N_EL, -3, -3, 5)
 4) (M____, N_LG, -3, 0, <null>)
 5) (M____, N_LG, -3, 0, -3)
 6) (___M_, N_EL, -3, 0, 0)
 7) (M__MM, N_L_, -3, 0, 5)
 8) (M____, N_LG, -3, 5, <null>)
 9) (M____, N_LG, -3, 5, -3)
10) (M____, N_LG, -3, 5, 0)
11) (___M_, N_EL, -3, 5, 5)
12) (MMM__, N_G_, 0, -3, <null>)
13) (_M___, N_EG, 0, -3, -3)
14) (M____, N_LG, 0, -3, 0)
15) (M____, N_LG, 0, -3, 5)
16) (_M___, N_EG, 0, 0, <null>)
17) (_M___, N_EG, 0, 0, -3)
18) (_M_M_, N_E_, 0, 0, 0)
19) (___M_, N_EL, 0, 0, 5)
20) (M____, N_LG, 0, 5, <null>)
21) (M____, N_LG, 0, 5, -3)
22) (M____, N_LG, 0, 5, 0)
23) (___M_, N_EL, 0, 5, 5)
24) (MMM__, N_G_, 5, -3, <null>)
25) (_M___, N_EG, 5, -3, -3)
26) (M____, N_LG, 5, -3, 0)
27) (M____, N_LG, 5, -3, 5)
28) (MMM__, N_G_, 5, 0, <null>)
29) (MMM__, N_G_, 5, 0, -3)
30) (_M___, N_EG, 5, 0, 0)
31) (M____, N_LG, 5, 0, 5)
32) (_M___, N_EG, 5, 5, <null>)
33) (_M___, N_EG, 5, 5, -3)
34) (_M___, N_EG, 5, 5, 0)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yi2_, ForEach(*2: zi2q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi2_, ChainMap(*2: yi2_, ForEach(*3: zi2q, (*1, *2, *3))))
###
> G(xu4_, yu4_, zu4q)
G(xu4_, yu4_, zu4q) : (s, s, u4, u4, u4?)*
BndKind:Call, Type:(s, s, u4, u4, u4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4_), Call(∂.ChainMap([map:2] Global(yu4_), Call(∂.ForEach([map:3] Global(zu4q), (Scope(1), Scope(2), Scope(3)):(u4, u4, u4?)):(u4, u4, u4?)*)):(u4, u4, u4?)*)):(u4, u4, u4?)*)):(u4, u4, u4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4, u4, u4?)):(b, b, b, b, b, u4, u4, u4?))):(b, b, b, b, b, u4, u4, u4?)*)):(b, b, b, b, b, u4, u4, u4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4, u4, u4?))):(s, s, u4, u4, u4?))):(s, s, u4, u4, u4?)*))
ForEach_1(Arr<obj>, (u4,u4,Opt<u4>)):(bool,bool,bool,bool,bool,u4,u4,Opt<u4>)
      1) ldarg.1 [(u4,u4,Opt<u4>)]
      5) ldfld (u4,u4,Opt<u4>)::_F0:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.0 [u4]
      1) ldarg.1 [(u4,u4,Opt<u4>)]
      5) ldfld (u4,u4,Opt<u4>)::_F1:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.1 [u4]
      1) ldarg.1 [(u4,u4,Opt<u4>)]
      5) ldfld (u4,u4,Opt<u4>)::_F2:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.2 [Opt<u4>]
      5) newobj (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)()
      1) dup
      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 [1]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F0:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) blt.un [3]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F1:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) ble.un [6]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F2:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) bgt.un [9]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F3:bool
      1) dup
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      5) bge.un [11]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F4:bool
      1) dup
      1) ldloc.0 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F5:u4
      1) dup
      1) ldloc.1 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F6:u4
      1) dup
      1) ldloc.2 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,u4,u4,Opt<u4>)::_F7:Opt<u4>
      1) ret
  Total Size: 295

Func sig: (<ctx>:x, xu4_:u4*, yu4_:u4*, zu4q:u4?*) to (s, s, u4, u4, u4?)*
Sequence: Seq<(str,str,u4,u4,Opt<u4>)>
 0) (_M___, N_EG, 0, 0, <null>)
 1) (_M_M_, N_E_, 0, 0, 0)
 2) (___M_, N_EL, 0, 0, 3)
 3) (___M_, N_EL, 0, 0, 5)
 4) (M____, N_LG, 0, 3, <null>)
 5) (M____, N_LG, 0, 3, 0)
 6) (___M_, N_EL, 0, 3, 3)
 7) (M__MM, N_L_, 0, 3, 5)
 8) (M____, N_LG, 0, 5, <null>)
 9) (M____, N_LG, 0, 5, 0)
10) (M____, N_LG, 0, 5, 3)
11) (___M_, N_EL, 0, 5, 5)
12) (MMM__, N_G_, 3, 0, <null>)
13) (_M___, N_EG, 3, 0, 0)
14) (M____, N_LG, 3, 0, 3)
15) (M____, N_LG, 3, 0, 5)
16) (_M___, N_EG, 3, 3, <null>)
17) (_M___, N_EG, 3, 3, 0)
18) (_M_M_, N_E_, 3, 3, 3)
19) (___M_, N_EL, 3, 3, 5)
20) (M____, N_LG, 3, 5, <null>)
21) (M____, N_LG, 3, 5, 0)
22) (M____, N_LG, 3, 5, 3)
23) (___M_, N_EL, 3, 5, 5)
24) (MMM__, N_G_, 5, 0, <null>)
25) (_M___, N_EG, 5, 0, 0)
26) (M____, N_LG, 5, 0, 3)
27) (M____, N_LG, 5, 0, 5)
28) (MMM__, N_G_, 5, 3, <null>)
29) (MMM__, N_G_, 5, 3, 0)
30) (_M___, N_EG, 5, 3, 3)
31) (M____, N_LG, 5, 3, 5)
32) (_M___, N_EG, 5, 5, <null>)
33) (_M___, N_EG, 5, 5, 0)
34) (_M___, N_EG, 5, 5, 3)
35) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yu4_, ForEach(*2: zu4q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xu4_, ChainMap(*2: yu4_, ForEach(*3: zu4q, (*1, *2, *3))))
###
> G(xd__, yd__, zd_q)
G(xd__, yd__, zd_q) : (s, s, d, d, d?)*
BndKind:Call, Type:(s, s, d, d, d?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd__), Call(∂.ChainMap([map:2] Global(yd__), Call(∂.ForEach([map:3] Global(zd_q), (Scope(1), Scope(2), Scope(3)):(d, d, d?)):(d, d, d?)*)):(d, d, d?)*)):(d, d, d?)*)):(d, d, d?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d, d, d?)):(b, b, b, b, b, d, d, d?))):(b, b, b, b, b, d, d, d?)*)):(b, b, b, b, b, d, d, d?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d, d, d?))):(s, s, d, d, d?))):(s, s, d, d, d?)*))
ForEach_1(Arr<obj>, (Date,Date,Opt<Date>)):(bool,bool,bool,bool,bool,Date,Date,Opt<Date>)
      1) ldarg.1 [(Date,Date,Opt<Date>)]
      5) ldfld (Date,Date,Opt<Date>)::_F0:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.0 [Date]
      1) ldarg.1 [(Date,Date,Opt<Date>)]
      5) ldfld (Date,Date,Opt<Date>)::_F1:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.1 [Date]
      1) ldarg.1 [(Date,Date,Opt<Date>)]
      5) ldfld (Date,Date,Opt<Date>)::_F2:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.2 [Opt<Date>]
      5) newobj (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)()
      1) dup
      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 [1]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Inequality(Date, Date):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F0:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [3]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F1:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) brfalse [6]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F2:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) brfalse [9]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F3:bool
      1) dup
      1) ldloc.0 [Date]
      1) ldloc.1 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) brfalse [11]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F4:bool
      1) dup
      1) ldloc.0 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F5:Date
      1) dup
      1) ldloc.1 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F6:Date
      1) dup
      1) ldloc.2 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Date,Date,Opt<Date>)::_F7:Opt<Date>
      1) ret
  Total Size: 326

Func sig: (<ctx>:x, xd__:d*, yd__:d*, zd_q:d?*) to (s, s, d, d, d?)*
Sequence: Seq<(str,str,Date,Date,Opt<Date>)>
 0) (_M___, N_EG, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
 1) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 2) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 3) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 4) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
 5) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 6) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 7) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 8) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
 9) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (MMM__, N_G_, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
13) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
14) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
15) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
16) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
17) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
18) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
19) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
20) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
21) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
25) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
26) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
27) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
28) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
29) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
30) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
31) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
32) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
33) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
34) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
35) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yd__, ForEach(*2: zd_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xd__, ChainMap(*2: yd__, ForEach(*3: zd_q, (*1, *2, *3))))
###
> G(xt__, yt__, zt_q)
G(xt__, yt__, zt_q) : (s, s, t, t, t?)*
BndKind:Call, Type:(s, s, t, t, t?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt__), Call(∂.ChainMap([map:2] Global(yt__), Call(∂.ForEach([map:3] Global(zt_q), (Scope(1), Scope(2), Scope(3)):(t, t, t?)):(t, t, t?)*)):(t, t, t?)*)):(t, t, t?)*)):(t, t, t?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t, t, t?)):(b, b, b, b, b, t, t, t?))):(b, b, b, b, b, t, t, t?)*)):(b, b, b, b, b, t, t, t?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t, t, t?))):(s, s, t, t, t?))):(s, s, t, t, t?)*))
ForEach_1(Arr<obj>, (Time,Time,Opt<Time>)):(bool,bool,bool,bool,bool,Time,Time,Opt<Time>)
      1) ldarg.1 [(Time,Time,Opt<Time>)]
      5) ldfld (Time,Time,Opt<Time>)::_F0:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.0 [Time]
      1) ldarg.1 [(Time,Time,Opt<Time>)]
      5) ldfld (Time,Time,Opt<Time>)::_F1:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.1 [Time]
      1) ldarg.1 [(Time,Time,Opt<Time>)]
      5) ldfld (Time,Time,Opt<Time>)::_F2:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.2 [Opt<Time>]
      5) newobj (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)()
      1) dup
      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 [1]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Inequality(Time, Time):bool
      5) br [2]
  Label [1]:
      1) ldc.i4.1
      5) br [2]
  Label [0]:
      1) ldc.i4.0
  Label [2]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F0:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [3]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.1
      5) br [5]
  Label [3]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F1:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) brfalse [6]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [7]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [8]
  Label [7]:
      1) ldc.i4.1
      5) br [8]
  Label [6]:
      1) ldc.i4.0
  Label [8]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F2:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) brfalse [9]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F3:bool
      1) dup
      1) ldloc.0 [Time]
      1) ldloc.1 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) brfalse [11]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F4:bool
      1) dup
      1) ldloc.0 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F5:Time
      1) dup
      1) ldloc.1 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F6:Time
      1) dup
      1) ldloc.2 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Time,Time,Opt<Time>)::_F7:Opt<Time>
      1) ret
  Total Size: 326

Func sig: (<ctx>:x, xt__:t*, yt__:t*, zt_q:t?*) to (s, s, t, t, t?)*
Sequence: Seq<(str,str,Time,Time,Opt<Time>)>
 0) (_M___, N_EG, -2.00:00:00, -2.00:00:00, <null>)
 1) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
 2) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
 3) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
 4) (M____, N_LG, -2.00:00:00, 00:00:00, <null>)
 5) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
 6) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
 7) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
 8) (M____, N_LG, -2.00:00:00, 3.00:00:00, <null>)
 9) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
10) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
11) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
12) (MMM__, N_G_, 00:00:00, -2.00:00:00, <null>)
13) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
14) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
15) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
16) (_M___, N_EG, 00:00:00, 00:00:00, <null>)
17) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
18) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
19) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
20) (M____, N_LG, 00:00:00, 3.00:00:00, <null>)
21) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
22) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
23) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
24) (MMM__, N_G_, 3.00:00:00, -2.00:00:00, <null>)
25) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
26) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
27) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
28) (MMM__, N_G_, 3.00:00:00, 00:00:00, <null>)
29) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
30) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
31) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
32) (_M___, N_EG, 3.00:00:00, 3.00:00:00, <null>)
33) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
34) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
35) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yt__, ForEach(*2: zt_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xt__, ChainMap(*2: yt__, ForEach(*3: zt_q, (*1, *2, *3))))
###
> G(xb_q, yb_q, zb__) // QQR
G(xb_q, yb_q, zb__) : (s, s, b?, b?, b)*
BndKind:Call, Type:(s, s, b?, b?, b)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb_q), Call(∂.ChainMap([map:2] Global(yb_q), Call(∂.ForEach([map:3] Global(zb__), (Scope(1), Scope(2), Scope(3)):(b?, b?, b)):(b?, b?, b)*)):(b?, b?, b)*)):(b?, b?, b)*)):(b?, b?, b)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b?, b?, b)):(b, b, b, b, b, b?, b?, b))):(b, b, b, b, b, b?, b?, b)*)):(b, b, b, b, b, b?, b?, b)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b?, b?, b))):(s, s, b?, b?, b))):(s, s, b?, b?, b)*))
ForEach_1(Arr<obj>, (Opt<bool>,Opt<bool>,bool)):(bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)
      1) ldarg.1 [(Opt<bool>,Opt<bool>,bool)]
      5) ldfld (Opt<bool>,Opt<bool>,bool)::_F0:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [(Opt<bool>,Opt<bool>,bool)]
      5) ldfld (Opt<bool>,Opt<bool>,bool)::_F1:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [(Opt<bool>,Opt<bool>,bool)]
      5) ldfld (Opt<bool>,Opt<bool>,bool)::_F2:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.2 [bool]
      5) newobj (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)()
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.2 [bool]
      1) xor
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F0:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) blt.un [4]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F1:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) ble.un [6]
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) cgt.un
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F2:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) bgt.un [9]
  Label [8]:
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.2 [bool]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F3:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) bge.un [12]
  Label [13]:
      1) ldloc.3 [bool]
      1) ldloc.2 [bool]
      2) clt.un
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F5:Opt<bool>
      1) dup
      1) ldloc.1 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F6:Opt<bool>
      1) dup
      1) ldloc.2 [bool]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,bool)::_F7:bool
      1) ret
  Total Size: 412

Func sig: (<ctx>:x, xb_q:b?*, yb_q:b?*, zb__:b*) to (s, s, b?, b?, b)*
Sequence: Seq<(str,str,Opt<bool>,Opt<bool>,bool)>
 0) (___M_, N_EL, <null>, <null>, false)
 1) (___M_, N_EL, <null>, <null>, true )
 2) (___M_, N_EL, <null>, false, false)
 3) (M__MM, N_L_, <null>, false, true )
 4) (M____, N_LG, <null>, true , false)
 5) (___M_, N_EL, <null>, true , true )
 6) (M____, N_LG, false, <null>, false)
 7) (M____, N_LG, false, <null>, true )
 8) (_M_M_, N_E_, false, false, false)
 9) (___M_, N_EL, false, false, true )
10) (M____, N_LG, false, true , false)
11) (___M_, N_EL, false, true , true )
12) (M____, N_LG, true , <null>, false)
13) (M____, N_LG, true , <null>, true )
14) (_M___, N_EG, true , false, false)
15) (M____, N_LG, true , false, true )
16) (_M___, N_EG, true , true , false)
17) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yb_q, ForEach(*2: zb__, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xb_q, ChainMap(*2: yb_q, ForEach(*3: zb__, (*1, *2, *3))))
###
> G(xr8q, yr8q, zr8_)
G(xr8q, yr8q, zr8_) : (s, s, r8?, r8?, r8)*
BndKind:Call, Type:(s, s, r8?, r8?, r8)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8q), Call(∂.ChainMap([map:2] Global(yr8q), Call(∂.ForEach([map:3] Global(zr8_), (Scope(1), Scope(2), Scope(3)):(r8?, r8?, r8)):(r8?, r8?, r8)*)):(r8?, r8?, r8)*)):(r8?, r8?, r8)*)):(r8?, r8?, r8)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8?, r8?, r8)):(b, b, b, b, b, r8?, r8?, r8))):(b, b, b, b, b, r8?, r8?, r8)*)):(b, b, b, b, b, r8?, r8?, r8)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8?, r8?, r8))):(s, s, r8?, r8?, r8))):(s, s, r8?, r8?, r8)*))
ForEach_1(Arr<obj>, (Opt<r8>,Opt<r8>,r8)):(bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)
      1) ldarg.1 [(Opt<r8>,Opt<r8>,r8)]
      5) ldfld (Opt<r8>,Opt<r8>,r8)::_F0:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [(Opt<r8>,Opt<r8>,r8)]
      5) ldfld (Opt<r8>,Opt<r8>,r8)::_F1:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [(Opt<r8>,Opt<r8>,r8)]
      5) ldfld (Opt<r8>,Opt<r8>,r8)::_F2:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.2 [r8]
      5) newobj (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)()
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.2 [r8]
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [4]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) brfalse [6]
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Le(r8, r8):bool
      5) brfalse [9]
  Label [8]:
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.2 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) brfalse [12]
  Label [13]:
      1) ldloc.3 [r8]
      1) ldloc.2 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F5:Opt<r8>
      1) dup
      1) ldloc.1 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F6:Opt<r8>
      1) dup
      1) ldloc.2 [r8]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,r8)::_F7:r8
      1) ret
  Total Size: 450

Func sig: (<ctx>:x, xr8q:r8?*, yr8q:r8?*, zr8_:r8*) to (s, s, r8?, r8?, r8)*
Sequence: Seq<(str,str,Opt<r8>,Opt<r8>,r8)>
 0) (___M_, N_EL, <null>, <null>, NaN)
 1) (___M_, N_EL, <null>, <null>, -3)
 2) (___M_, N_EL, <null>, <null>, 0)
 3) (___M_, N_EL, <null>, <null>, 5)
 4) (___M_, N_EL, <null>, NaN, NaN)
 5) (M__MM, N_L_, <null>, NaN, -3)
 6) (M__MM, N_L_, <null>, NaN, 0)
 7) (M__MM, N_L_, <null>, NaN, 5)
 8) (M____, N_LG, <null>, -3, NaN)
 9) (___M_, N_EL, <null>, -3, -3)
10) (M__MM, N_L_, <null>, -3, 0)
11) (M__MM, N_L_, <null>, -3, 5)
12) (M____, N_LG, <null>, 0, NaN)
13) (M____, N_LG, <null>, 0, -3)
14) (___M_, N_EL, <null>, 0, 0)
15) (M__MM, N_L_, <null>, 0, 5)
16) (M____, N_LG, <null>, 5, NaN)
17) (M____, N_LG, <null>, 5, -3)
18) (M____, N_LG, <null>, 5, 0)
19) (___M_, N_EL, <null>, 5, 5)
20) (M____, N_LG, NaN, <null>, NaN)
21) (M____, N_LG, NaN, <null>, -3)
22) (M____, N_LG, NaN, <null>, 0)
23) (M____, N_LG, NaN, <null>, 5)
24) (_M_M_, N_E_, NaN, NaN, NaN)
25) (___M_, N_EL, NaN, NaN, -3)
26) (___M_, N_EL, NaN, NaN, 0)
27) (___M_, N_EL, NaN, NaN, 5)
28) (M____, N_LG, NaN, -3, NaN)
29) (___M_, N_EL, NaN, -3, -3)
30) (M__MM, N_L_, NaN, -3, 0)
31) (M__MM, N_L_, NaN, -3, 5)
32) (M____, N_LG, NaN, 0, NaN)
33) (M____, N_LG, NaN, 0, -3)
34) (___M_, N_EL, NaN, 0, 0)
35) (M__MM, N_L_, NaN, 0, 5)
36) (M____, N_LG, NaN, 5, NaN)
37) (M____, N_LG, NaN, 5, -3)
38) (M____, N_LG, NaN, 5, 0)
39) (___M_, N_EL, NaN, 5, 5)
40) (M____, N_LG, -3, <null>, NaN)
41) (M____, N_LG, -3, <null>, -3)
42) (M____, N_LG, -3, <null>, 0)
43) (M____, N_LG, -3, <null>, 5)
44) (_M___, N_EG, -3, NaN, NaN)
45) (M____, N_LG, -3, NaN, -3)
46) (M____, N_LG, -3, NaN, 0)
47) (M____, N_LG, -3, NaN, 5)
48) (_M___, N_EG, -3, -3, NaN)
49) (_M_M_, N_E_, -3, -3, -3)
50) (___M_, N_EL, -3, -3, 0)
51) (___M_, N_EL, -3, -3, 5)
52) (M____, N_LG, -3, 0, NaN)
53) (M____, N_LG, -3, 0, -3)
54) (___M_, N_EL, -3, 0, 0)
55) (M__MM, N_L_, -3, 0, 5)
56) (M____, N_LG, -3, 5, NaN)
57) (M____, N_LG, -3, 5, -3)
58) (M____, N_LG, -3, 5, 0)
59) (___M_, N_EL, -3, 5, 5)
60) (M____, N_LG, 0, <null>, NaN)
61) (M____, N_LG, 0, <null>, -3)
62) (M____, N_LG, 0, <null>, 0)
63) (M____, N_LG, 0, <null>, 5)
64) (_M___, N_EG, 0, NaN, NaN)
65) (M____, N_LG, 0, NaN, -3)
66) (M____, N_LG, 0, NaN, 0)
67) (M____, N_LG, 0, NaN, 5)
68) (MMM__, N_G_, 0, -3, NaN)
69) (_M___, N_EG, 0, -3, -3)
70) (M____, N_LG, 0, -3, 0)
71) (M____, N_LG, 0, -3, 5)
72) (_M___, N_EG, 0, 0, NaN)
73) (_M___, N_EG, 0, 0, -3)
74) (_M_M_, N_E_, 0, 0, 0)
75) (___M_, N_EL, 0, 0, 5)
76) (M____, N_LG, 0, 5, NaN)
77) (M____, N_LG, 0, 5, -3)
78) (M____, N_LG, 0, 5, 0)
79) (___M_, N_EL, 0, 5, 5)
80) (M____, N_LG, 5, <null>, NaN)
81) (M____, N_LG, 5, <null>, -3)
82) (M____, N_LG, 5, <null>, 0)
83) (M____, N_LG, 5, <null>, 5)
84) (_M___, N_EG, 5, NaN, NaN)
85) (M____, N_LG, 5, NaN, -3)
86) (M____, N_LG, 5, NaN, 0)
87) (M____, N_LG, 5, NaN, 5)
88) (MMM__, N_G_, 5, -3, NaN)
89) (_M___, N_EG, 5, -3, -3)
90) (M____, N_LG, 5, -3, 0)
91) (M____, N_LG, 5, -3, 5)
92) (MMM__, N_G_, 5, 0, NaN)
93) (MMM__, N_G_, 5, 0, -3)
94) (_M___, N_EG, 5, 0, 0)
95) (M____, N_LG, 5, 0, 5)
96) (_M___, N_EG, 5, 5, NaN)
97) (_M___, N_EG, 5, 5, -3)
98) (_M___, N_EG, 5, 5, 0)
99) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 36
    [0](30): ChainMap(*1: yr8q, ForEach(*2: zr8_, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr8q, ChainMap(*2: yr8q, ForEach(*3: zr8_, (*1, *2, *3))))
###
> G(xr4q, yr4q, zr4_)
G(xr4q, yr4q, zr4_) : (s, s, r4?, r4?, r4)*
BndKind:Call, Type:(s, s, r4?, r4?, r4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4q), Call(∂.ChainMap([map:2] Global(yr4q), Call(∂.ForEach([map:3] Global(zr4_), (Scope(1), Scope(2), Scope(3)):(r4?, r4?, r4)):(r4?, r4?, r4)*)):(r4?, r4?, r4)*)):(r4?, r4?, r4)*)):(r4?, r4?, r4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4?, r4?, r4)):(b, b, b, b, b, r4?, r4?, r4))):(b, b, b, b, b, r4?, r4?, r4)*)):(b, b, b, b, b, r4?, r4?, r4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4?, r4?, r4))):(s, s, r4?, r4?, r4))):(s, s, r4?, r4?, r4)*))
ForEach_1(Arr<obj>, (Opt<r4>,Opt<r4>,r4)):(bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)
      1) ldarg.1 [(Opt<r4>,Opt<r4>,r4)]
      5) ldfld (Opt<r4>,Opt<r4>,r4)::_F0:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [(Opt<r4>,Opt<r4>,r4)]
      5) ldfld (Opt<r4>,Opt<r4>,r4)::_F1:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [(Opt<r4>,Opt<r4>,r4)]
      5) ldfld (Opt<r4>,Opt<r4>,r4)::_F2:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.2 [r4]
      5) newobj (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)()
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.2 [r4]
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [4]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) brfalse [6]
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Le(r4, r4):bool
      5) brfalse [9]
  Label [8]:
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.2 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) brfalse [12]
  Label [13]:
      1) ldloc.3 [r4]
      1) ldloc.2 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F5:Opt<r4>
      1) dup
      1) ldloc.1 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F6:Opt<r4>
      1) dup
      1) ldloc.2 [r4]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,r4)::_F7:r4
      1) ret
  Total Size: 450

Func sig: (<ctx>:x, xr4q:r4?*, yr4q:r4?*, zr4_:r4*) to (s, s, r4?, r4?, r4)*
Sequence: Seq<(str,str,Opt<r4>,Opt<r4>,r4)>
 0) (___M_, N_EL, <null>, <null>, NaN)
 1) (___M_, N_EL, <null>, <null>, -3)
 2) (___M_, N_EL, <null>, <null>, 0)
 3) (___M_, N_EL, <null>, <null>, 5)
 4) (___M_, N_EL, <null>, NaN, NaN)
 5) (M__MM, N_L_, <null>, NaN, -3)
 6) (M__MM, N_L_, <null>, NaN, 0)
 7) (M__MM, N_L_, <null>, NaN, 5)
 8) (M____, N_LG, <null>, -3, NaN)
 9) (___M_, N_EL, <null>, -3, -3)
10) (M__MM, N_L_, <null>, -3, 0)
11) (M__MM, N_L_, <null>, -3, 5)
12) (M____, N_LG, <null>, 0, NaN)
13) (M____, N_LG, <null>, 0, -3)
14) (___M_, N_EL, <null>, 0, 0)
15) (M__MM, N_L_, <null>, 0, 5)
16) (M____, N_LG, <null>, 5, NaN)
17) (M____, N_LG, <null>, 5, -3)
18) (M____, N_LG, <null>, 5, 0)
19) (___M_, N_EL, <null>, 5, 5)
20) (M____, N_LG, NaN, <null>, NaN)
21) (M____, N_LG, NaN, <null>, -3)
22) (M____, N_LG, NaN, <null>, 0)
23) (M____, N_LG, NaN, <null>, 5)
24) (_M_M_, N_E_, NaN, NaN, NaN)
25) (___M_, N_EL, NaN, NaN, -3)
26) (___M_, N_EL, NaN, NaN, 0)
27) (___M_, N_EL, NaN, NaN, 5)
28) (M____, N_LG, NaN, -3, NaN)
29) (___M_, N_EL, NaN, -3, -3)
30) (M__MM, N_L_, NaN, -3, 0)
31) (M__MM, N_L_, NaN, -3, 5)
32) (M____, N_LG, NaN, 0, NaN)
33) (M____, N_LG, NaN, 0, -3)
34) (___M_, N_EL, NaN, 0, 0)
35) (M__MM, N_L_, NaN, 0, 5)
36) (M____, N_LG, NaN, 5, NaN)
37) (M____, N_LG, NaN, 5, -3)
38) (M____, N_LG, NaN, 5, 0)
39) (___M_, N_EL, NaN, 5, 5)
40) (M____, N_LG, -3, <null>, NaN)
41) (M____, N_LG, -3, <null>, -3)
42) (M____, N_LG, -3, <null>, 0)
43) (M____, N_LG, -3, <null>, 5)
44) (_M___, N_EG, -3, NaN, NaN)
45) (M____, N_LG, -3, NaN, -3)
46) (M____, N_LG, -3, NaN, 0)
47) (M____, N_LG, -3, NaN, 5)
48) (_M___, N_EG, -3, -3, NaN)
49) (_M_M_, N_E_, -3, -3, -3)
50) (___M_, N_EL, -3, -3, 0)
51) (___M_, N_EL, -3, -3, 5)
52) (M____, N_LG, -3, 0, NaN)
53) (M____, N_LG, -3, 0, -3)
54) (___M_, N_EL, -3, 0, 0)
55) (M__MM, N_L_, -3, 0, 5)
56) (M____, N_LG, -3, 5, NaN)
57) (M____, N_LG, -3, 5, -3)
58) (M____, N_LG, -3, 5, 0)
59) (___M_, N_EL, -3, 5, 5)
60) (M____, N_LG, 0, <null>, NaN)
61) (M____, N_LG, 0, <null>, -3)
62) (M____, N_LG, 0, <null>, 0)
63) (M____, N_LG, 0, <null>, 5)
64) (_M___, N_EG, 0, NaN, NaN)
65) (M____, N_LG, 0, NaN, -3)
66) (M____, N_LG, 0, NaN, 0)
67) (M____, N_LG, 0, NaN, 5)
68) (MMM__, N_G_, 0, -3, NaN)
69) (_M___, N_EG, 0, -3, -3)
70) (M____, N_LG, 0, -3, 0)
71) (M____, N_LG, 0, -3, 5)
72) (_M___, N_EG, 0, 0, NaN)
73) (_M___, N_EG, 0, 0, -3)
74) (_M_M_, N_E_, 0, 0, 0)
75) (___M_, N_EL, 0, 0, 5)
76) (M____, N_LG, 0, 5, NaN)
77) (M____, N_LG, 0, 5, -3)
78) (M____, N_LG, 0, 5, 0)
79) (___M_, N_EL, 0, 5, 5)
80) (M____, N_LG, 5, <null>, NaN)
81) (M____, N_LG, 5, <null>, -3)
82) (M____, N_LG, 5, <null>, 0)
83) (M____, N_LG, 5, <null>, 5)
84) (_M___, N_EG, 5, NaN, NaN)
85) (M____, N_LG, 5, NaN, -3)
86) (M____, N_LG, 5, NaN, 0)
87) (M____, N_LG, 5, NaN, 5)
88) (MMM__, N_G_, 5, -3, NaN)
89) (_M___, N_EG, 5, -3, -3)
90) (M____, N_LG, 5, -3, 0)
91) (M____, N_LG, 5, -3, 5)
92) (MMM__, N_G_, 5, 0, NaN)
93) (MMM__, N_G_, 5, 0, -3)
94) (_M___, N_EG, 5, 0, 0)
95) (M____, N_LG, 5, 0, 5)
96) (_M___, N_EG, 5, 5, NaN)
97) (_M___, N_EG, 5, 5, -3)
98) (_M___, N_EG, 5, 5, 0)
99) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 36
    [0](30): ChainMap(*1: yr4q, ForEach(*2: zr4_, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr4q, ChainMap(*2: yr4q, ForEach(*3: zr4_, (*1, *2, *3))))
###
> G(xi_q, yi_q, zi__)
G(xi_q, yi_q, zi__) : (s, s, i?, i?, i)*
BndKind:Call, Type:(s, s, i?, i?, i)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi_q), Call(∂.ChainMap([map:2] Global(yi_q), Call(∂.ForEach([map:3] Global(zi__), (Scope(1), Scope(2), Scope(3)):(i?, i?, i)):(i?, i?, i)*)):(i?, i?, i)*)):(i?, i?, i)*)):(i?, i?, i)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i?, i?, i)):(b, b, b, b, b, i?, i?, i))):(b, b, b, b, b, i?, i?, i)*)):(b, b, b, b, b, i?, i?, i)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i?, i?, i))):(s, s, i?, i?, i))):(s, s, i?, i?, i)*))
ForEach_1(Arr<obj>, (Opt<ia>,Opt<ia>,ia)):(bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)
      1) ldarg.1 [(Opt<ia>,Opt<ia>,ia)]
      5) ldfld (Opt<ia>,Opt<ia>,ia)::_F0:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [(Opt<ia>,Opt<ia>,ia)]
      5) ldfld (Opt<ia>,Opt<ia>,ia)::_F1:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [(Opt<ia>,Opt<ia>,ia)]
      5) ldfld (Opt<ia>,Opt<ia>,ia)::_F2:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.2 [ia]
      5) newobj (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)()
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.2 [ia]
      5) call static ia::op_Inequality(ia, ia):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F0:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [4]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F1:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) brfalse [6]
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F2:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) brfalse [9]
  Label [8]:
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.2 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F3:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) brfalse [12]
  Label [13]:
      1) ldloc.3 [ia]
      1) ldloc.2 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F5:Opt<ia>
      1) dup
      1) ldloc.1 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F6:Opt<ia>
      1) dup
      1) ldloc.2 [ia]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,ia)::_F7:ia
      1) ret
  Total Size: 447

Func sig: (<ctx>:x, xi_q:i?*, yi_q:i?*, zi__:i*) to (s, s, i?, i?, i)*
Sequence: Seq<(str,str,Opt<ia>,Opt<ia>,ia)>
 0) (___M_, N_EL, <null>, <null>, -3)
 1) (___M_, N_EL, <null>, <null>, 0)
 2) (___M_, N_EL, <null>, <null>, 5)
 3) (___M_, N_EL, <null>, -3, -3)
 4) (M__MM, N_L_, <null>, -3, 0)
 5) (M__MM, N_L_, <null>, -3, 5)
 6) (M____, N_LG, <null>, 0, -3)
 7) (___M_, N_EL, <null>, 0, 0)
 8) (M__MM, N_L_, <null>, 0, 5)
 9) (M____, N_LG, <null>, 5, -3)
10) (M____, N_LG, <null>, 5, 0)
11) (___M_, N_EL, <null>, 5, 5)
12) (M____, N_LG, -3, <null>, -3)
13) (M____, N_LG, -3, <null>, 0)
14) (M____, N_LG, -3, <null>, 5)
15) (_M_M_, N_E_, -3, -3, -3)
16) (___M_, N_EL, -3, -3, 0)
17) (___M_, N_EL, -3, -3, 5)
18) (M____, N_LG, -3, 0, -3)
19) (___M_, N_EL, -3, 0, 0)
20) (M__MM, N_L_, -3, 0, 5)
21) (M____, N_LG, -3, 5, -3)
22) (M____, N_LG, -3, 5, 0)
23) (___M_, N_EL, -3, 5, 5)
24) (M____, N_LG, 0, <null>, -3)
25) (M____, N_LG, 0, <null>, 0)
26) (M____, N_LG, 0, <null>, 5)
27) (_M___, N_EG, 0, -3, -3)
28) (M____, N_LG, 0, -3, 0)
29) (M____, N_LG, 0, -3, 5)
30) (_M___, N_EG, 0, 0, -3)
31) (_M_M_, N_E_, 0, 0, 0)
32) (___M_, N_EL, 0, 0, 5)
33) (M____, N_LG, 0, 5, -3)
34) (M____, N_LG, 0, 5, 0)
35) (___M_, N_EL, 0, 5, 5)
36) (M____, N_LG, 5, <null>, -3)
37) (M____, N_LG, 5, <null>, 0)
38) (M____, N_LG, 5, <null>, 5)
39) (_M___, N_EG, 5, -3, -3)
40) (M____, N_LG, 5, -3, 0)
41) (M____, N_LG, 5, -3, 5)
42) (MMM__, N_G_, 5, 0, -3)
43) (_M___, N_EG, 5, 0, 0)
44) (M____, N_LG, 5, 0, 5)
45) (_M___, N_EG, 5, 5, -3)
46) (_M___, N_EG, 5, 5, 0)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yi_q, ForEach(*2: zi__, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi_q, ChainMap(*2: yi_q, ForEach(*3: zi__, (*1, *2, *3))))
###
> G(xi2q, yi2q, zi2_)
G(xi2q, yi2q, zi2_) : (s, s, i2?, i2?, i2)*
BndKind:Call, Type:(s, s, i2?, i2?, i2)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2q), Call(∂.ChainMap([map:2] Global(yi2q), Call(∂.ForEach([map:3] Global(zi2_), (Scope(1), Scope(2), Scope(3)):(i2?, i2?, i2)):(i2?, i2?, i2)*)):(i2?, i2?, i2)*)):(i2?, i2?, i2)*)):(i2?, i2?, i2)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2?, i2?, i2)):(b, b, b, b, b, i2?, i2?, i2))):(b, b, b, b, b, i2?, i2?, i2)*)):(b, b, b, b, b, i2?, i2?, i2)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2?, i2?, i2))):(s, s, i2?, i2?, i2))):(s, s, i2?, i2?, i2)*))
ForEach_1(Arr<obj>, (Opt<i2>,Opt<i2>,i2)):(bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)
      1) ldarg.1 [(Opt<i2>,Opt<i2>,i2)]
      5) ldfld (Opt<i2>,Opt<i2>,i2)::_F0:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.0 [Opt<i2>]
      1) ldarg.1 [(Opt<i2>,Opt<i2>,i2)]
      5) ldfld (Opt<i2>,Opt<i2>,i2)::_F1:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.1 [Opt<i2>]
      1) ldarg.1 [(Opt<i2>,Opt<i2>,i2)]
      5) ldfld (Opt<i2>,Opt<i2>,i2)::_F2:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.2 [i2]
      5) newobj (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)()
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.2 [i2]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F0:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.3 [i2]
      5) blt [4]
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F1:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.3 [i2]
      5) ble [6]
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) cgt
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F2:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) bgt [9]
  Label [8]:
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.2 [i2]
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F3:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.3 [i2]
      5) bge [12]
  Label [13]:
      1) ldloc.3 [i2]
      1) ldloc.2 [i2]
      2) clt
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F5:Opt<i2>
      1) dup
      1) ldloc.1 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F6:Opt<i2>
      1) dup
      1) ldloc.2 [i2]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,i2)::_F7:i2
      1) ret
  Total Size: 416

Func sig: (<ctx>:x, xi2q:i2?*, yi2q:i2?*, zi2_:i2*) to (s, s, i2?, i2?, i2)*
Sequence: Seq<(str,str,Opt<i2>,Opt<i2>,i2)>
 0) (___M_, N_EL, <null>, <null>, -3)
 1) (___M_, N_EL, <null>, <null>, 0)
 2) (___M_, N_EL, <null>, <null>, 5)
 3) (___M_, N_EL, <null>, -3, -3)
 4) (M__MM, N_L_, <null>, -3, 0)
 5) (M__MM, N_L_, <null>, -3, 5)
 6) (M____, N_LG, <null>, 0, -3)
 7) (___M_, N_EL, <null>, 0, 0)
 8) (M__MM, N_L_, <null>, 0, 5)
 9) (M____, N_LG, <null>, 5, -3)
10) (M____, N_LG, <null>, 5, 0)
11) (___M_, N_EL, <null>, 5, 5)
12) (M____, N_LG, -3, <null>, -3)
13) (M____, N_LG, -3, <null>, 0)
14) (M____, N_LG, -3, <null>, 5)
15) (_M_M_, N_E_, -3, -3, -3)
16) (___M_, N_EL, -3, -3, 0)
17) (___M_, N_EL, -3, -3, 5)
18) (M____, N_LG, -3, 0, -3)
19) (___M_, N_EL, -3, 0, 0)
20) (M__MM, N_L_, -3, 0, 5)
21) (M____, N_LG, -3, 5, -3)
22) (M____, N_LG, -3, 5, 0)
23) (___M_, N_EL, -3, 5, 5)
24) (M____, N_LG, 0, <null>, -3)
25) (M____, N_LG, 0, <null>, 0)
26) (M____, N_LG, 0, <null>, 5)
27) (_M___, N_EG, 0, -3, -3)
28) (M____, N_LG, 0, -3, 0)
29) (M____, N_LG, 0, -3, 5)
30) (_M___, N_EG, 0, 0, -3)
31) (_M_M_, N_E_, 0, 0, 0)
32) (___M_, N_EL, 0, 0, 5)
33) (M____, N_LG, 0, 5, -3)
34) (M____, N_LG, 0, 5, 0)
35) (___M_, N_EL, 0, 5, 5)
36) (M____, N_LG, 5, <null>, -3)
37) (M____, N_LG, 5, <null>, 0)
38) (M____, N_LG, 5, <null>, 5)
39) (_M___, N_EG, 5, -3, -3)
40) (M____, N_LG, 5, -3, 0)
41) (M____, N_LG, 5, -3, 5)
42) (MMM__, N_G_, 5, 0, -3)
43) (_M___, N_EG, 5, 0, 0)
44) (M____, N_LG, 5, 0, 5)
45) (_M___, N_EG, 5, 5, -3)
46) (_M___, N_EG, 5, 5, 0)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yi2q, ForEach(*2: zi2_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi2q, ChainMap(*2: yi2q, ForEach(*3: zi2_, (*1, *2, *3))))
###
> G(xu4q, yu4q, zu4_)
G(xu4q, yu4q, zu4_) : (s, s, u4?, u4?, u4)*
BndKind:Call, Type:(s, s, u4?, u4?, u4)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4q), Call(∂.ChainMap([map:2] Global(yu4q), Call(∂.ForEach([map:3] Global(zu4_), (Scope(1), Scope(2), Scope(3)):(u4?, u4?, u4)):(u4?, u4?, u4)*)):(u4?, u4?, u4)*)):(u4?, u4?, u4)*)):(u4?, u4?, u4)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4?, u4?, u4)):(b, b, b, b, b, u4?, u4?, u4))):(b, b, b, b, b, u4?, u4?, u4)*)):(b, b, b, b, b, u4?, u4?, u4)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4?, u4?, u4))):(s, s, u4?, u4?, u4))):(s, s, u4?, u4?, u4)*))
ForEach_1(Arr<obj>, (Opt<u4>,Opt<u4>,u4)):(bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)
      1) ldarg.1 [(Opt<u4>,Opt<u4>,u4)]
      5) ldfld (Opt<u4>,Opt<u4>,u4)::_F0:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [(Opt<u4>,Opt<u4>,u4)]
      5) ldfld (Opt<u4>,Opt<u4>,u4)::_F1:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [(Opt<u4>,Opt<u4>,u4)]
      5) ldfld (Opt<u4>,Opt<u4>,u4)::_F2:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.2 [u4]
      5) newobj (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)()
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.2 [u4]
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F0:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) blt.un [4]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F1:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) ble.un [6]
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) cgt.un
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F2:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) bgt.un [9]
  Label [8]:
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.2 [u4]
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F3:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) bge.un [12]
  Label [13]:
      1) ldloc.3 [u4]
      1) ldloc.2 [u4]
      2) clt.un
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F5:Opt<u4>
      1) dup
      1) ldloc.1 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F6:Opt<u4>
      1) dup
      1) ldloc.2 [u4]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,u4)::_F7:u4
      1) ret
  Total Size: 416

Func sig: (<ctx>:x, xu4q:u4?*, yu4q:u4?*, zu4_:u4*) to (s, s, u4?, u4?, u4)*
Sequence: Seq<(str,str,Opt<u4>,Opt<u4>,u4)>
 0) (___M_, N_EL, <null>, <null>, 0)
 1) (___M_, N_EL, <null>, <null>, 3)
 2) (___M_, N_EL, <null>, <null>, 5)
 3) (___M_, N_EL, <null>, 0, 0)
 4) (M__MM, N_L_, <null>, 0, 3)
 5) (M__MM, N_L_, <null>, 0, 5)
 6) (M____, N_LG, <null>, 3, 0)
 7) (___M_, N_EL, <null>, 3, 3)
 8) (M__MM, N_L_, <null>, 3, 5)
 9) (M____, N_LG, <null>, 5, 0)
10) (M____, N_LG, <null>, 5, 3)
11) (___M_, N_EL, <null>, 5, 5)
12) (M____, N_LG, 0, <null>, 0)
13) (M____, N_LG, 0, <null>, 3)
14) (M____, N_LG, 0, <null>, 5)
15) (_M_M_, N_E_, 0, 0, 0)
16) (___M_, N_EL, 0, 0, 3)
17) (___M_, N_EL, 0, 0, 5)
18) (M____, N_LG, 0, 3, 0)
19) (___M_, N_EL, 0, 3, 3)
20) (M__MM, N_L_, 0, 3, 5)
21) (M____, N_LG, 0, 5, 0)
22) (M____, N_LG, 0, 5, 3)
23) (___M_, N_EL, 0, 5, 5)
24) (M____, N_LG, 3, <null>, 0)
25) (M____, N_LG, 3, <null>, 3)
26) (M____, N_LG, 3, <null>, 5)
27) (_M___, N_EG, 3, 0, 0)
28) (M____, N_LG, 3, 0, 3)
29) (M____, N_LG, 3, 0, 5)
30) (_M___, N_EG, 3, 3, 0)
31) (_M_M_, N_E_, 3, 3, 3)
32) (___M_, N_EL, 3, 3, 5)
33) (M____, N_LG, 3, 5, 0)
34) (M____, N_LG, 3, 5, 3)
35) (___M_, N_EL, 3, 5, 5)
36) (M____, N_LG, 5, <null>, 0)
37) (M____, N_LG, 5, <null>, 3)
38) (M____, N_LG, 5, <null>, 5)
39) (_M___, N_EG, 5, 0, 0)
40) (M____, N_LG, 5, 0, 3)
41) (M____, N_LG, 5, 0, 5)
42) (MMM__, N_G_, 5, 3, 0)
43) (_M___, N_EG, 5, 3, 3)
44) (M____, N_LG, 5, 3, 5)
45) (_M___, N_EG, 5, 5, 0)
46) (_M___, N_EG, 5, 5, 3)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yu4q, ForEach(*2: zu4_, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xu4q, ChainMap(*2: yu4q, ForEach(*3: zu4_, (*1, *2, *3))))
###
> G(xd_q, yd_q, zd__)
G(xd_q, yd_q, zd__) : (s, s, d?, d?, d)*
BndKind:Call, Type:(s, s, d?, d?, d)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd_q), Call(∂.ChainMap([map:2] Global(yd_q), Call(∂.ForEach([map:3] Global(zd__), (Scope(1), Scope(2), Scope(3)):(d?, d?, d)):(d?, d?, d)*)):(d?, d?, d)*)):(d?, d?, d)*)):(d?, d?, d)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d?, d?, d)):(b, b, b, b, b, d?, d?, d))):(b, b, b, b, b, d?, d?, d)*)):(b, b, b, b, b, d?, d?, d)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d?, d?, d))):(s, s, d?, d?, d))):(s, s, d?, d?, d)*))
ForEach_1(Arr<obj>, (Opt<Date>,Opt<Date>,Date)):(bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)
      1) ldarg.1 [(Opt<Date>,Opt<Date>,Date)]
      5) ldfld (Opt<Date>,Opt<Date>,Date)::_F0:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [(Opt<Date>,Opt<Date>,Date)]
      5) ldfld (Opt<Date>,Opt<Date>,Date)::_F1:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [(Opt<Date>,Opt<Date>,Date)]
      5) ldfld (Opt<Date>,Opt<Date>,Date)::_F2:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.2 [Date]
      5) newobj (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)()
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.2 [Date]
      5) call static Date::op_Inequality(Date, Date):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [4]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) brfalse [6]
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) brfalse [9]
  Label [8]:
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.2 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) brfalse [12]
  Label [13]:
      1) ldloc.3 [Date]
      1) ldloc.2 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F5:Opt<Date>
      1) dup
      1) ldloc.1 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F6:Opt<Date>
      1) dup
      1) ldloc.2 [Date]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Date)::_F7:Date
      1) ret
  Total Size: 447

Func sig: (<ctx>:x, xd_q:d?*, yd_q:d?*, zd__:d*) to (s, s, d?, d?, d)*
Sequence: Seq<(str,str,Opt<Date>,Opt<Date>,Date)>
 0) (___M_, N_EL, <null>, <null>, DT(1900, 1, 1, 0, 0, 0, 0))
 1) (___M_, N_EL, <null>, <null>, DT(2023, 7, 1, 0, 0, 0, 0))
 2) (___M_, N_EL, <null>, <null>, DT(2023, 9, 1, 0, 0, 0, 0))
 3) (___M_, N_EL, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 4) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 5) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 6) (M____, N_LG, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 7) (___M_, N_EL, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 8) (M__MM, N_L_, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 9) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (___M_, N_EL, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
13) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
14) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
15) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
16) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
17) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
18) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
19) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
20) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
21) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
25) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
26) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
27) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
28) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
29) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
30) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
31) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
32) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
33) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
34) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
35) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
36) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
37) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
38) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
39) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
40) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
41) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
42) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
43) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
44) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
45) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
46) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
47) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yd_q, ForEach(*2: zd__, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xd_q, ChainMap(*2: yd_q, ForEach(*3: zd__, (*1, *2, *3))))
###
> G(xt_q, yt_q, zt__)
G(xt_q, yt_q, zt__) : (s, s, t?, t?, t)*
BndKind:Call, Type:(s, s, t?, t?, t)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt_q), Call(∂.ChainMap([map:2] Global(yt_q), Call(∂.ForEach([map:3] Global(zt__), (Scope(1), Scope(2), Scope(3)):(t?, t?, t)):(t?, t?, t)*)):(t?, t?, t)*)):(t?, t?, t)*)):(t?, t?, t)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t?, t?, t)):(b, b, b, b, b, t?, t?, t))):(b, b, b, b, b, t?, t?, t)*)):(b, b, b, b, b, t?, t?, t)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t?, t?, t))):(s, s, t?, t?, t))):(s, s, t?, t?, t)*))
ForEach_1(Arr<obj>, (Opt<Time>,Opt<Time>,Time)):(bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)
      1) ldarg.1 [(Opt<Time>,Opt<Time>,Time)]
      5) ldfld (Opt<Time>,Opt<Time>,Time)::_F0:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [(Opt<Time>,Opt<Time>,Time)]
      5) ldfld (Opt<Time>,Opt<Time>,Time)::_F1:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [(Opt<Time>,Opt<Time>,Time)]
      5) ldfld (Opt<Time>,Opt<Time>,Time)::_F2:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.2 [Time]
      5) newobj (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)()
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [2]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.2 [Time]
      5) call static Time::op_Inequality(Time, Time):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      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>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [4]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [5]
  Label [4]:
      1) ldc.i4.0
  Label [5]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [6]
      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>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) brfalse [6]
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [9]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) brfalse [9]
  Label [8]:
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.2 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [11]
  Label [10]:
      1) ldc.i4.1
      5) br [11]
  Label [9]:
      1) ldc.i4.0
  Label [11]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [12]
      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 [13]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) brfalse [12]
  Label [13]:
      1) ldloc.3 [Time]
      1) ldloc.2 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F5:Opt<Time>
      1) dup
      1) ldloc.1 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F6:Opt<Time>
      1) dup
      1) ldloc.2 [Time]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Time)::_F7:Time
      1) ret
  Total Size: 447

Func sig: (<ctx>:x, xt_q:t?*, yt_q:t?*, zt__:t*) to (s, s, t?, t?, t)*
Sequence: Seq<(str,str,Opt<Time>,Opt<Time>,Time)>
 0) (___M_, N_EL, <null>, <null>, -2.00:00:00)
 1) (___M_, N_EL, <null>, <null>, 00:00:00)
 2) (___M_, N_EL, <null>, <null>, 3.00:00:00)
 3) (___M_, N_EL, <null>, -2.00:00:00, -2.00:00:00)
 4) (M__MM, N_L_, <null>, -2.00:00:00, 00:00:00)
 5) (M__MM, N_L_, <null>, -2.00:00:00, 3.00:00:00)
 6) (M____, N_LG, <null>, 00:00:00, -2.00:00:00)
 7) (___M_, N_EL, <null>, 00:00:00, 00:00:00)
 8) (M__MM, N_L_, <null>, 00:00:00, 3.00:00:00)
 9) (M____, N_LG, <null>, 3.00:00:00, -2.00:00:00)
10) (M____, N_LG, <null>, 3.00:00:00, 00:00:00)
11) (___M_, N_EL, <null>, 3.00:00:00, 3.00:00:00)
12) (M____, N_LG, -2.00:00:00, <null>, -2.00:00:00)
13) (M____, N_LG, -2.00:00:00, <null>, 00:00:00)
14) (M____, N_LG, -2.00:00:00, <null>, 3.00:00:00)
15) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
16) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
17) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
18) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
19) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
20) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
21) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
22) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
23) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
24) (M____, N_LG, 00:00:00, <null>, -2.00:00:00)
25) (M____, N_LG, 00:00:00, <null>, 00:00:00)
26) (M____, N_LG, 00:00:00, <null>, 3.00:00:00)
27) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
28) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
29) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
30) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
31) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
32) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
33) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
34) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
35) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
36) (M____, N_LG, 3.00:00:00, <null>, -2.00:00:00)
37) (M____, N_LG, 3.00:00:00, <null>, 00:00:00)
38) (M____, N_LG, 3.00:00:00, <null>, 3.00:00:00)
39) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
40) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
41) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
42) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
43) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
44) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
45) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
46) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
47) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yt_q, ForEach(*2: zt__, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xt_q, ChainMap(*2: yt_q, ForEach(*3: zt__, (*1, *2, *3))))
###
> G(xb_q, yb__, zb_q) // QRQ
G(xb_q, yb__, zb_q) : (s, s, b?, b, b?)*
BndKind:Call, Type:(s, s, b?, b, b?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb_q), Call(∂.ChainMap([map:2] Global(yb__), Call(∂.ForEach([map:3] Global(zb_q), (Scope(1), Scope(2), Scope(3)):(b?, b, b?)):(b?, b, b?)*)):(b?, b, b?)*)):(b?, b, b?)*)):(b?, b, b?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b?, b, b?)):(b, b, b, b, b, b?, b, b?))):(b, b, b, b, b, b?, b, b?)*)):(b, b, b, b, b, b?, b, b?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b?, b, b?))):(s, s, b?, b, b?))):(s, s, b?, b, b?)*))
ForEach_1(Arr<obj>, (Opt<bool>,bool,Opt<bool>)):(bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)
      1) ldarg.1 [(Opt<bool>,bool,Opt<bool>)]
      5) ldfld (Opt<bool>,bool,Opt<bool>)::_F0:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [(Opt<bool>,bool,Opt<bool>)]
      5) ldfld (Opt<bool>,bool,Opt<bool>)::_F1:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.1 [bool]
      1) ldarg.1 [(Opt<bool>,bool,Opt<bool>)]
      5) ldfld (Opt<bool>,bool,Opt<bool>)::_F2:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.2 [Opt<bool>]
      5) newobj (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)()
      1) dup
      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 [2]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) xor
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) blt.un [4]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) ble.un [7]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) bgt.un [11]
  Label [10]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.1 [bool]
      5) bge.un [14]
  Label [13]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F5:Opt<bool>
      1) dup
      1) ldloc.1 [bool]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F6:bool
      1) dup
      1) ldloc.2 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,bool,Opt<bool>)::_F7:Opt<bool>
      1) ret
  Total Size: 381

Func sig: (<ctx>:x, xb_q:b?*, yb__:b*, zb_q:b?*) to (s, s, b?, b, b?)*
Sequence: Seq<(str,str,Opt<bool>,bool,Opt<bool>)>
 0) (M____, N_LG, <null>, false, <null>)
 1) (___M_, N_EL, <null>, false, false)
 2) (M__MM, N_L_, <null>, false, true )
 3) (M____, N_LG, <null>, true , <null>)
 4) (M____, N_LG, <null>, true , false)
 5) (___M_, N_EL, <null>, true , true )
 6) (_M___, N_EG, false, false, <null>)
 7) (_M_M_, N_E_, false, false, false)
 8) (___M_, N_EL, false, false, true )
 9) (M____, N_LG, false, true , <null>)
10) (M____, N_LG, false, true , false)
11) (___M_, N_EL, false, true , true )
12) (MMM__, N_G_, true , false, <null>)
13) (_M___, N_EG, true , false, false)
14) (M____, N_LG, true , false, true )
15) (_M___, N_EG, true , true , <null>)
16) (_M___, N_EG, true , true , false)
17) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 13
    [0](9): ChainMap(*1: yb__, ForEach(*2: zb_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xb_q, ChainMap(*2: yb__, ForEach(*3: zb_q, (*1, *2, *3))))
###
> G(xr8q, yr8_, zr8q)
G(xr8q, yr8_, zr8q) : (s, s, r8?, r8, r8?)*
BndKind:Call, Type:(s, s, r8?, r8, r8?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8q), Call(∂.ChainMap([map:2] Global(yr8_), Call(∂.ForEach([map:3] Global(zr8q), (Scope(1), Scope(2), Scope(3)):(r8?, r8, r8?)):(r8?, r8, r8?)*)):(r8?, r8, r8?)*)):(r8?, r8, r8?)*)):(r8?, r8, r8?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8?, r8, r8?)):(b, b, b, b, b, r8?, r8, r8?))):(b, b, b, b, b, r8?, r8, r8?)*)):(b, b, b, b, b, r8?, r8, r8?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8?, r8, r8?))):(s, s, r8?, r8, r8?))):(s, s, r8?, r8, r8?)*))
ForEach_1(Arr<obj>, (Opt<r8>,r8,Opt<r8>)):(bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)
      1) ldarg.1 [(Opt<r8>,r8,Opt<r8>)]
      5) ldfld (Opt<r8>,r8,Opt<r8>)::_F0:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [(Opt<r8>,r8,Opt<r8>)]
      5) ldfld (Opt<r8>,r8,Opt<r8>)::_F1:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.1 [r8]
      1) ldarg.1 [(Opt<r8>,r8,Opt<r8>)]
      5) ldfld (Opt<r8>,r8,Opt<r8>)::_F2:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.2 [Opt<r8>]
      5) newobj (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)()
      1) dup
      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 [2]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [4]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) brfalse [7]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Le(r8, r8):bool
      5) brfalse [11]
  Label [10]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Le(r8, r8):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.1 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) brfalse [14]
  Label [13]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F5:Opt<r8>
      1) dup
      1) ldloc.1 [r8]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F6:r8
      1) dup
      1) ldloc.2 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,r8,Opt<r8>)::_F7:Opt<r8>
      1) ret
  Total Size: 419

Func sig: (<ctx>:x, xr8q:r8?*, yr8_:r8*, zr8q:r8?*) to (s, s, r8?, r8, r8?)*
Sequence: Seq<(str,str,Opt<r8>,r8,Opt<r8>)>
 0) (M____, N_LG, <null>, NaN, <null>)
 1) (___M_, N_EL, <null>, NaN, NaN)
 2) (M__MM, N_L_, <null>, NaN, -3)
 3) (M__MM, N_L_, <null>, NaN, 0)
 4) (M__MM, N_L_, <null>, NaN, 5)
 5) (M____, N_LG, <null>, -3, <null>)
 6) (M____, N_LG, <null>, -3, NaN)
 7) (___M_, N_EL, <null>, -3, -3)
 8) (M__MM, N_L_, <null>, -3, 0)
 9) (M__MM, N_L_, <null>, -3, 5)
10) (M____, N_LG, <null>, 0, <null>)
11) (M____, N_LG, <null>, 0, NaN)
12) (M____, N_LG, <null>, 0, -3)
13) (___M_, N_EL, <null>, 0, 0)
14) (M__MM, N_L_, <null>, 0, 5)
15) (M____, N_LG, <null>, 5, <null>)
16) (M____, N_LG, <null>, 5, NaN)
17) (M____, N_LG, <null>, 5, -3)
18) (M____, N_LG, <null>, 5, 0)
19) (___M_, N_EL, <null>, 5, 5)
20) (_M___, N_EG, NaN, NaN, <null>)
21) (_M_M_, N_E_, NaN, NaN, NaN)
22) (___M_, N_EL, NaN, NaN, -3)
23) (___M_, N_EL, NaN, NaN, 0)
24) (___M_, N_EL, NaN, NaN, 5)
25) (M____, N_LG, NaN, -3, <null>)
26) (M____, N_LG, NaN, -3, NaN)
27) (___M_, N_EL, NaN, -3, -3)
28) (M__MM, N_L_, NaN, -3, 0)
29) (M__MM, N_L_, NaN, -3, 5)
30) (M____, N_LG, NaN, 0, <null>)
31) (M____, N_LG, NaN, 0, NaN)
32) (M____, N_LG, NaN, 0, -3)
33) (___M_, N_EL, NaN, 0, 0)
34) (M__MM, N_L_, NaN, 0, 5)
35) (M____, N_LG, NaN, 5, <null>)
36) (M____, N_LG, NaN, 5, NaN)
37) (M____, N_LG, NaN, 5, -3)
38) (M____, N_LG, NaN, 5, 0)
39) (___M_, N_EL, NaN, 5, 5)
40) (MMM__, N_G_, -3, NaN, <null>)
41) (_M___, N_EG, -3, NaN, NaN)
42) (M____, N_LG, -3, NaN, -3)
43) (M____, N_LG, -3, NaN, 0)
44) (M____, N_LG, -3, NaN, 5)
45) (_M___, N_EG, -3, -3, <null>)
46) (_M___, N_EG, -3, -3, NaN)
47) (_M_M_, N_E_, -3, -3, -3)
48) (___M_, N_EL, -3, -3, 0)
49) (___M_, N_EL, -3, -3, 5)
50) (M____, N_LG, -3, 0, <null>)
51) (M____, N_LG, -3, 0, NaN)
52) (M____, N_LG, -3, 0, -3)
53) (___M_, N_EL, -3, 0, 0)
54) (M__MM, N_L_, -3, 0, 5)
55) (M____, N_LG, -3, 5, <null>)
56) (M____, N_LG, -3, 5, NaN)
57) (M____, N_LG, -3, 5, -3)
58) (M____, N_LG, -3, 5, 0)
59) (___M_, N_EL, -3, 5, 5)
60) (MMM__, N_G_, 0, NaN, <null>)
61) (_M___, N_EG, 0, NaN, NaN)
62) (M____, N_LG, 0, NaN, -3)
63) (M____, N_LG, 0, NaN, 0)
64) (M____, N_LG, 0, NaN, 5)
65) (MMM__, N_G_, 0, -3, <null>)
66) (MMM__, N_G_, 0, -3, NaN)
67) (_M___, N_EG, 0, -3, -3)
68) (M____, N_LG, 0, -3, 0)
69) (M____, N_LG, 0, -3, 5)
70) (_M___, N_EG, 0, 0, <null>)
71) (_M___, N_EG, 0, 0, NaN)
72) (_M___, N_EG, 0, 0, -3)
73) (_M_M_, N_E_, 0, 0, 0)
74) (___M_, N_EL, 0, 0, 5)
75) (M____, N_LG, 0, 5, <null>)
76) (M____, N_LG, 0, 5, NaN)
77) (M____, N_LG, 0, 5, -3)
78) (M____, N_LG, 0, 5, 0)
79) (___M_, N_EL, 0, 5, 5)
80) (MMM__, N_G_, 5, NaN, <null>)
81) (_M___, N_EG, 5, NaN, NaN)
82) (M____, N_LG, 5, NaN, -3)
83) (M____, N_LG, 5, NaN, 0)
84) (M____, N_LG, 5, NaN, 5)
85) (MMM__, N_G_, 5, -3, <null>)
86) (MMM__, N_G_, 5, -3, NaN)
87) (_M___, N_EG, 5, -3, -3)
88) (M____, N_LG, 5, -3, 0)
89) (M____, N_LG, 5, -3, 5)
90) (MMM__, N_G_, 5, 0, <null>)
91) (MMM__, N_G_, 5, 0, NaN)
92) (MMM__, N_G_, 5, 0, -3)
93) (_M___, N_EG, 5, 0, 0)
94) (M____, N_LG, 5, 0, 5)
95) (_M___, N_EG, 5, 5, <null>)
96) (_M___, N_EG, 5, 5, NaN)
97) (_M___, N_EG, 5, 5, -3)
98) (_M___, N_EG, 5, 5, 0)
99) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 31
    [0](25): ChainMap(*1: yr8_, ForEach(*2: zr8q, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr8q, ChainMap(*2: yr8_, ForEach(*3: zr8q, (*1, *2, *3))))
###
> G(xr4q, yr4_, zr4q)
G(xr4q, yr4_, zr4q) : (s, s, r4?, r4, r4?)*
BndKind:Call, Type:(s, s, r4?, r4, r4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4q), Call(∂.ChainMap([map:2] Global(yr4_), Call(∂.ForEach([map:3] Global(zr4q), (Scope(1), Scope(2), Scope(3)):(r4?, r4, r4?)):(r4?, r4, r4?)*)):(r4?, r4, r4?)*)):(r4?, r4, r4?)*)):(r4?, r4, r4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4?, r4, r4?)):(b, b, b, b, b, r4?, r4, r4?))):(b, b, b, b, b, r4?, r4, r4?)*)):(b, b, b, b, b, r4?, r4, r4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4?, r4, r4?))):(s, s, r4?, r4, r4?))):(s, s, r4?, r4, r4?)*))
ForEach_1(Arr<obj>, (Opt<r4>,r4,Opt<r4>)):(bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)
      1) ldarg.1 [(Opt<r4>,r4,Opt<r4>)]
      5) ldfld (Opt<r4>,r4,Opt<r4>)::_F0:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [(Opt<r4>,r4,Opt<r4>)]
      5) ldfld (Opt<r4>,r4,Opt<r4>)::_F1:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.1 [r4]
      1) ldarg.1 [(Opt<r4>,r4,Opt<r4>)]
      5) ldfld (Opt<r4>,r4,Opt<r4>)::_F2:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.2 [Opt<r4>]
      5) newobj (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)()
      1) dup
      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 [2]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) brfalse [7]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Le(r4, r4):bool
      5) brfalse [11]
  Label [10]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Le(r4, r4):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.1 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) brfalse [14]
  Label [13]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F5:Opt<r4>
      1) dup
      1) ldloc.1 [r4]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F6:r4
      1) dup
      1) ldloc.2 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,r4,Opt<r4>)::_F7:Opt<r4>
      1) ret
  Total Size: 419

Func sig: (<ctx>:x, xr4q:r4?*, yr4_:r4*, zr4q:r4?*) to (s, s, r4?, r4, r4?)*
Sequence: Seq<(str,str,Opt<r4>,r4,Opt<r4>)>
 0) (M____, N_LG, <null>, NaN, <null>)
 1) (___M_, N_EL, <null>, NaN, NaN)
 2) (M__MM, N_L_, <null>, NaN, -3)
 3) (M__MM, N_L_, <null>, NaN, 0)
 4) (M__MM, N_L_, <null>, NaN, 5)
 5) (M____, N_LG, <null>, -3, <null>)
 6) (M____, N_LG, <null>, -3, NaN)
 7) (___M_, N_EL, <null>, -3, -3)
 8) (M__MM, N_L_, <null>, -3, 0)
 9) (M__MM, N_L_, <null>, -3, 5)
10) (M____, N_LG, <null>, 0, <null>)
11) (M____, N_LG, <null>, 0, NaN)
12) (M____, N_LG, <null>, 0, -3)
13) (___M_, N_EL, <null>, 0, 0)
14) (M__MM, N_L_, <null>, 0, 5)
15) (M____, N_LG, <null>, 5, <null>)
16) (M____, N_LG, <null>, 5, NaN)
17) (M____, N_LG, <null>, 5, -3)
18) (M____, N_LG, <null>, 5, 0)
19) (___M_, N_EL, <null>, 5, 5)
20) (_M___, N_EG, NaN, NaN, <null>)
21) (_M_M_, N_E_, NaN, NaN, NaN)
22) (___M_, N_EL, NaN, NaN, -3)
23) (___M_, N_EL, NaN, NaN, 0)
24) (___M_, N_EL, NaN, NaN, 5)
25) (M____, N_LG, NaN, -3, <null>)
26) (M____, N_LG, NaN, -3, NaN)
27) (___M_, N_EL, NaN, -3, -3)
28) (M__MM, N_L_, NaN, -3, 0)
29) (M__MM, N_L_, NaN, -3, 5)
30) (M____, N_LG, NaN, 0, <null>)
31) (M____, N_LG, NaN, 0, NaN)
32) (M____, N_LG, NaN, 0, -3)
33) (___M_, N_EL, NaN, 0, 0)
34) (M__MM, N_L_, NaN, 0, 5)
35) (M____, N_LG, NaN, 5, <null>)
36) (M____, N_LG, NaN, 5, NaN)
37) (M____, N_LG, NaN, 5, -3)
38) (M____, N_LG, NaN, 5, 0)
39) (___M_, N_EL, NaN, 5, 5)
40) (MMM__, N_G_, -3, NaN, <null>)
41) (_M___, N_EG, -3, NaN, NaN)
42) (M____, N_LG, -3, NaN, -3)
43) (M____, N_LG, -3, NaN, 0)
44) (M____, N_LG, -3, NaN, 5)
45) (_M___, N_EG, -3, -3, <null>)
46) (_M___, N_EG, -3, -3, NaN)
47) (_M_M_, N_E_, -3, -3, -3)
48) (___M_, N_EL, -3, -3, 0)
49) (___M_, N_EL, -3, -3, 5)
50) (M____, N_LG, -3, 0, <null>)
51) (M____, N_LG, -3, 0, NaN)
52) (M____, N_LG, -3, 0, -3)
53) (___M_, N_EL, -3, 0, 0)
54) (M__MM, N_L_, -3, 0, 5)
55) (M____, N_LG, -3, 5, <null>)
56) (M____, N_LG, -3, 5, NaN)
57) (M____, N_LG, -3, 5, -3)
58) (M____, N_LG, -3, 5, 0)
59) (___M_, N_EL, -3, 5, 5)
60) (MMM__, N_G_, 0, NaN, <null>)
61) (_M___, N_EG, 0, NaN, NaN)
62) (M____, N_LG, 0, NaN, -3)
63) (M____, N_LG, 0, NaN, 0)
64) (M____, N_LG, 0, NaN, 5)
65) (MMM__, N_G_, 0, -3, <null>)
66) (MMM__, N_G_, 0, -3, NaN)
67) (_M___, N_EG, 0, -3, -3)
68) (M____, N_LG, 0, -3, 0)
69) (M____, N_LG, 0, -3, 5)
70) (_M___, N_EG, 0, 0, <null>)
71) (_M___, N_EG, 0, 0, NaN)
72) (_M___, N_EG, 0, 0, -3)
73) (_M_M_, N_E_, 0, 0, 0)
74) (___M_, N_EL, 0, 0, 5)
75) (M____, N_LG, 0, 5, <null>)
76) (M____, N_LG, 0, 5, NaN)
77) (M____, N_LG, 0, 5, -3)
78) (M____, N_LG, 0, 5, 0)
79) (___M_, N_EL, 0, 5, 5)
80) (MMM__, N_G_, 5, NaN, <null>)
81) (_M___, N_EG, 5, NaN, NaN)
82) (M____, N_LG, 5, NaN, -3)
83) (M____, N_LG, 5, NaN, 0)
84) (M____, N_LG, 5, NaN, 5)
85) (MMM__, N_G_, 5, -3, <null>)
86) (MMM__, N_G_, 5, -3, NaN)
87) (_M___, N_EG, 5, -3, -3)
88) (M____, N_LG, 5, -3, 0)
89) (M____, N_LG, 5, -3, 5)
90) (MMM__, N_G_, 5, 0, <null>)
91) (MMM__, N_G_, 5, 0, NaN)
92) (MMM__, N_G_, 5, 0, -3)
93) (_M___, N_EG, 5, 0, 0)
94) (M____, N_LG, 5, 0, 5)
95) (_M___, N_EG, 5, 5, <null>)
96) (_M___, N_EG, 5, 5, NaN)
97) (_M___, N_EG, 5, 5, -3)
98) (_M___, N_EG, 5, 5, 0)
99) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 31
    [0](25): ChainMap(*1: yr4_, ForEach(*2: zr4q, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr4q, ChainMap(*2: yr4_, ForEach(*3: zr4q, (*1, *2, *3))))
###
> G(xi_q, yi__, zi_q)
G(xi_q, yi__, zi_q) : (s, s, i?, i, i?)*
BndKind:Call, Type:(s, s, i?, i, i?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi_q), Call(∂.ChainMap([map:2] Global(yi__), Call(∂.ForEach([map:3] Global(zi_q), (Scope(1), Scope(2), Scope(3)):(i?, i, i?)):(i?, i, i?)*)):(i?, i, i?)*)):(i?, i, i?)*)):(i?, i, i?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i?, i, i?)):(b, b, b, b, b, i?, i, i?))):(b, b, b, b, b, i?, i, i?)*)):(b, b, b, b, b, i?, i, i?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i?, i, i?))):(s, s, i?, i, i?))):(s, s, i?, i, i?)*))
ForEach_1(Arr<obj>, (Opt<ia>,ia,Opt<ia>)):(bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)
      1) ldarg.1 [(Opt<ia>,ia,Opt<ia>)]
      5) ldfld (Opt<ia>,ia,Opt<ia>)::_F0:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [(Opt<ia>,ia,Opt<ia>)]
      5) ldfld (Opt<ia>,ia,Opt<ia>)::_F1:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.1 [ia]
      1) ldarg.1 [(Opt<ia>,ia,Opt<ia>)]
      5) ldfld (Opt<ia>,ia,Opt<ia>)::_F2:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.2 [Opt<ia>]
      5) newobj (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)()
      1) dup
      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 [2]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Inequality(ia, ia):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [4]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) brfalse [7]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) brfalse [11]
  Label [10]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.1 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) brfalse [14]
  Label [13]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F5:Opt<ia>
      1) dup
      1) ldloc.1 [ia]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F6:ia
      1) dup
      1) ldloc.2 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,ia,Opt<ia>)::_F7:Opt<ia>
      1) ret
  Total Size: 416

Func sig: (<ctx>:x, xi_q:i?*, yi__:i*, zi_q:i?*) to (s, s, i?, i, i?)*
Sequence: Seq<(str,str,Opt<ia>,ia,Opt<ia>)>
 0) (M____, N_LG, <null>, -3, <null>)
 1) (___M_, N_EL, <null>, -3, -3)
 2) (M__MM, N_L_, <null>, -3, 0)
 3) (M__MM, N_L_, <null>, -3, 5)
 4) (M____, N_LG, <null>, 0, <null>)
 5) (M____, N_LG, <null>, 0, -3)
 6) (___M_, N_EL, <null>, 0, 0)
 7) (M__MM, N_L_, <null>, 0, 5)
 8) (M____, N_LG, <null>, 5, <null>)
 9) (M____, N_LG, <null>, 5, -3)
10) (M____, N_LG, <null>, 5, 0)
11) (___M_, N_EL, <null>, 5, 5)
12) (_M___, N_EG, -3, -3, <null>)
13) (_M_M_, N_E_, -3, -3, -3)
14) (___M_, N_EL, -3, -3, 0)
15) (___M_, N_EL, -3, -3, 5)
16) (M____, N_LG, -3, 0, <null>)
17) (M____, N_LG, -3, 0, -3)
18) (___M_, N_EL, -3, 0, 0)
19) (M__MM, N_L_, -3, 0, 5)
20) (M____, N_LG, -3, 5, <null>)
21) (M____, N_LG, -3, 5, -3)
22) (M____, N_LG, -3, 5, 0)
23) (___M_, N_EL, -3, 5, 5)
24) (MMM__, N_G_, 0, -3, <null>)
25) (_M___, N_EG, 0, -3, -3)
26) (M____, N_LG, 0, -3, 0)
27) (M____, N_LG, 0, -3, 5)
28) (_M___, N_EG, 0, 0, <null>)
29) (_M___, N_EG, 0, 0, -3)
30) (_M_M_, N_E_, 0, 0, 0)
31) (___M_, N_EL, 0, 0, 5)
32) (M____, N_LG, 0, 5, <null>)
33) (M____, N_LG, 0, 5, -3)
34) (M____, N_LG, 0, 5, 0)
35) (___M_, N_EL, 0, 5, 5)
36) (MMM__, N_G_, 5, -3, <null>)
37) (_M___, N_EG, 5, -3, -3)
38) (M____, N_LG, 5, -3, 0)
39) (M____, N_LG, 5, -3, 5)
40) (MMM__, N_G_, 5, 0, <null>)
41) (MMM__, N_G_, 5, 0, -3)
42) (_M___, N_EG, 5, 0, 0)
43) (M____, N_LG, 5, 0, 5)
44) (_M___, N_EG, 5, 5, <null>)
45) (_M___, N_EG, 5, 5, -3)
46) (_M___, N_EG, 5, 5, 0)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yi__, ForEach(*2: zi_q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi_q, ChainMap(*2: yi__, ForEach(*3: zi_q, (*1, *2, *3))))
###
> G(xi2q, yi2_, zi2q)
G(xi2q, yi2_, zi2q) : (s, s, i2?, i2, i2?)*
BndKind:Call, Type:(s, s, i2?, i2, i2?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2q), Call(∂.ChainMap([map:2] Global(yi2_), Call(∂.ForEach([map:3] Global(zi2q), (Scope(1), Scope(2), Scope(3)):(i2?, i2, i2?)):(i2?, i2, i2?)*)):(i2?, i2, i2?)*)):(i2?, i2, i2?)*)):(i2?, i2, i2?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2?, i2, i2?)):(b, b, b, b, b, i2?, i2, i2?))):(b, b, b, b, b, i2?, i2, i2?)*)):(b, b, b, b, b, i2?, i2, i2?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2?, i2, i2?))):(s, s, i2?, i2, i2?))):(s, s, i2?, i2, i2?)*))
ForEach_1(Arr<obj>, (Opt<i2>,i2,Opt<i2>)):(bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)
      1) ldarg.1 [(Opt<i2>,i2,Opt<i2>)]
      5) ldfld (Opt<i2>,i2,Opt<i2>)::_F0:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.0 [Opt<i2>]
      1) ldarg.1 [(Opt<i2>,i2,Opt<i2>)]
      5) ldfld (Opt<i2>,i2,Opt<i2>)::_F1:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.1 [i2]
      1) ldarg.1 [(Opt<i2>,i2,Opt<i2>)]
      5) ldfld (Opt<i2>,i2,Opt<i2>)::_F2:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.2 [Opt<i2>]
      5) newobj (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)()
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [0]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [2]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) blt [4]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) ble [7]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) bgt [11]
  Label [10]:
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.1 [i2]
      5) bge [14]
  Label [13]:
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F5:Opt<i2>
      1) dup
      1) ldloc.1 [i2]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F6:i2
      1) dup
      1) ldloc.2 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,i2,Opt<i2>)::_F7:Opt<i2>
      1) ret
  Total Size: 385

Func sig: (<ctx>:x, xi2q:i2?*, yi2_:i2*, zi2q:i2?*) to (s, s, i2?, i2, i2?)*
Sequence: Seq<(str,str,Opt<i2>,i2,Opt<i2>)>
 0) (M____, N_LG, <null>, -3, <null>)
 1) (___M_, N_EL, <null>, -3, -3)
 2) (M__MM, N_L_, <null>, -3, 0)
 3) (M__MM, N_L_, <null>, -3, 5)
 4) (M____, N_LG, <null>, 0, <null>)
 5) (M____, N_LG, <null>, 0, -3)
 6) (___M_, N_EL, <null>, 0, 0)
 7) (M__MM, N_L_, <null>, 0, 5)
 8) (M____, N_LG, <null>, 5, <null>)
 9) (M____, N_LG, <null>, 5, -3)
10) (M____, N_LG, <null>, 5, 0)
11) (___M_, N_EL, <null>, 5, 5)
12) (_M___, N_EG, -3, -3, <null>)
13) (_M_M_, N_E_, -3, -3, -3)
14) (___M_, N_EL, -3, -3, 0)
15) (___M_, N_EL, -3, -3, 5)
16) (M____, N_LG, -3, 0, <null>)
17) (M____, N_LG, -3, 0, -3)
18) (___M_, N_EL, -3, 0, 0)
19) (M__MM, N_L_, -3, 0, 5)
20) (M____, N_LG, -3, 5, <null>)
21) (M____, N_LG, -3, 5, -3)
22) (M____, N_LG, -3, 5, 0)
23) (___M_, N_EL, -3, 5, 5)
24) (MMM__, N_G_, 0, -3, <null>)
25) (_M___, N_EG, 0, -3, -3)
26) (M____, N_LG, 0, -3, 0)
27) (M____, N_LG, 0, -3, 5)
28) (_M___, N_EG, 0, 0, <null>)
29) (_M___, N_EG, 0, 0, -3)
30) (_M_M_, N_E_, 0, 0, 0)
31) (___M_, N_EL, 0, 0, 5)
32) (M____, N_LG, 0, 5, <null>)
33) (M____, N_LG, 0, 5, -3)
34) (M____, N_LG, 0, 5, 0)
35) (___M_, N_EL, 0, 5, 5)
36) (MMM__, N_G_, 5, -3, <null>)
37) (_M___, N_EG, 5, -3, -3)
38) (M____, N_LG, 5, -3, 0)
39) (M____, N_LG, 5, -3, 5)
40) (MMM__, N_G_, 5, 0, <null>)
41) (MMM__, N_G_, 5, 0, -3)
42) (_M___, N_EG, 5, 0, 0)
43) (M____, N_LG, 5, 0, 5)
44) (_M___, N_EG, 5, 5, <null>)
45) (_M___, N_EG, 5, 5, -3)
46) (_M___, N_EG, 5, 5, 0)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yi2_, ForEach(*2: zi2q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi2q, ChainMap(*2: yi2_, ForEach(*3: zi2q, (*1, *2, *3))))
###
> G(xu4q, yu4_, zu4q)
G(xu4q, yu4_, zu4q) : (s, s, u4?, u4, u4?)*
BndKind:Call, Type:(s, s, u4?, u4, u4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4q), Call(∂.ChainMap([map:2] Global(yu4_), Call(∂.ForEach([map:3] Global(zu4q), (Scope(1), Scope(2), Scope(3)):(u4?, u4, u4?)):(u4?, u4, u4?)*)):(u4?, u4, u4?)*)):(u4?, u4, u4?)*)):(u4?, u4, u4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4?, u4, u4?)):(b, b, b, b, b, u4?, u4, u4?))):(b, b, b, b, b, u4?, u4, u4?)*)):(b, b, b, b, b, u4?, u4, u4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4?, u4, u4?))):(s, s, u4?, u4, u4?))):(s, s, u4?, u4, u4?)*))
ForEach_1(Arr<obj>, (Opt<u4>,u4,Opt<u4>)):(bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)
      1) ldarg.1 [(Opt<u4>,u4,Opt<u4>)]
      5) ldfld (Opt<u4>,u4,Opt<u4>)::_F0:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [(Opt<u4>,u4,Opt<u4>)]
      5) ldfld (Opt<u4>,u4,Opt<u4>)::_F1:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.1 [u4]
      1) ldarg.1 [(Opt<u4>,u4,Opt<u4>)]
      5) ldfld (Opt<u4>,u4,Opt<u4>)::_F2:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.2 [Opt<u4>]
      5) newobj (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)()
      1) dup
      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 [2]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) blt.un [4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) ble.un [7]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) bgt.un [11]
  Label [10]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.1 [u4]
      5) bge.un [14]
  Label [13]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F5:Opt<u4>
      1) dup
      1) ldloc.1 [u4]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F6:u4
      1) dup
      1) ldloc.2 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,u4,Opt<u4>)::_F7:Opt<u4>
      1) ret
  Total Size: 385

Func sig: (<ctx>:x, xu4q:u4?*, yu4_:u4*, zu4q:u4?*) to (s, s, u4?, u4, u4?)*
Sequence: Seq<(str,str,Opt<u4>,u4,Opt<u4>)>
 0) (M____, N_LG, <null>, 0, <null>)
 1) (___M_, N_EL, <null>, 0, 0)
 2) (M__MM, N_L_, <null>, 0, 3)
 3) (M__MM, N_L_, <null>, 0, 5)
 4) (M____, N_LG, <null>, 3, <null>)
 5) (M____, N_LG, <null>, 3, 0)
 6) (___M_, N_EL, <null>, 3, 3)
 7) (M__MM, N_L_, <null>, 3, 5)
 8) (M____, N_LG, <null>, 5, <null>)
 9) (M____, N_LG, <null>, 5, 0)
10) (M____, N_LG, <null>, 5, 3)
11) (___M_, N_EL, <null>, 5, 5)
12) (_M___, N_EG, 0, 0, <null>)
13) (_M_M_, N_E_, 0, 0, 0)
14) (___M_, N_EL, 0, 0, 3)
15) (___M_, N_EL, 0, 0, 5)
16) (M____, N_LG, 0, 3, <null>)
17) (M____, N_LG, 0, 3, 0)
18) (___M_, N_EL, 0, 3, 3)
19) (M__MM, N_L_, 0, 3, 5)
20) (M____, N_LG, 0, 5, <null>)
21) (M____, N_LG, 0, 5, 0)
22) (M____, N_LG, 0, 5, 3)
23) (___M_, N_EL, 0, 5, 5)
24) (MMM__, N_G_, 3, 0, <null>)
25) (_M___, N_EG, 3, 0, 0)
26) (M____, N_LG, 3, 0, 3)
27) (M____, N_LG, 3, 0, 5)
28) (_M___, N_EG, 3, 3, <null>)
29) (_M___, N_EG, 3, 3, 0)
30) (_M_M_, N_E_, 3, 3, 3)
31) (___M_, N_EL, 3, 3, 5)
32) (M____, N_LG, 3, 5, <null>)
33) (M____, N_LG, 3, 5, 0)
34) (M____, N_LG, 3, 5, 3)
35) (___M_, N_EL, 3, 5, 5)
36) (MMM__, N_G_, 5, 0, <null>)
37) (_M___, N_EG, 5, 0, 0)
38) (M____, N_LG, 5, 0, 3)
39) (M____, N_LG, 5, 0, 5)
40) (MMM__, N_G_, 5, 3, <null>)
41) (MMM__, N_G_, 5, 3, 0)
42) (_M___, N_EG, 5, 3, 3)
43) (M____, N_LG, 5, 3, 5)
44) (_M___, N_EG, 5, 5, <null>)
45) (_M___, N_EG, 5, 5, 0)
46) (_M___, N_EG, 5, 5, 3)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yu4_, ForEach(*2: zu4q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xu4q, ChainMap(*2: yu4_, ForEach(*3: zu4q, (*1, *2, *3))))
###
> G(xd_q, yd__, zd_q)
G(xd_q, yd__, zd_q) : (s, s, d?, d, d?)*
BndKind:Call, Type:(s, s, d?, d, d?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd_q), Call(∂.ChainMap([map:2] Global(yd__), Call(∂.ForEach([map:3] Global(zd_q), (Scope(1), Scope(2), Scope(3)):(d?, d, d?)):(d?, d, d?)*)):(d?, d, d?)*)):(d?, d, d?)*)):(d?, d, d?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d?, d, d?)):(b, b, b, b, b, d?, d, d?))):(b, b, b, b, b, d?, d, d?)*)):(b, b, b, b, b, d?, d, d?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d?, d, d?))):(s, s, d?, d, d?))):(s, s, d?, d, d?)*))
ForEach_1(Arr<obj>, (Opt<Date>,Date,Opt<Date>)):(bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)
      1) ldarg.1 [(Opt<Date>,Date,Opt<Date>)]
      5) ldfld (Opt<Date>,Date,Opt<Date>)::_F0:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [(Opt<Date>,Date,Opt<Date>)]
      5) ldfld (Opt<Date>,Date,Opt<Date>)::_F1:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.1 [Date]
      1) ldarg.1 [(Opt<Date>,Date,Opt<Date>)]
      5) ldfld (Opt<Date>,Date,Opt<Date>)::_F2:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.2 [Opt<Date>]
      5) newobj (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)()
      1) dup
      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 [2]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Inequality(Date, Date):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [4]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) brfalse [7]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) brfalse [11]
  Label [10]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.1 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) brfalse [14]
  Label [13]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F5:Opt<Date>
      1) dup
      1) ldloc.1 [Date]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F6:Date
      1) dup
      1) ldloc.2 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Date,Opt<Date>)::_F7:Opt<Date>
      1) ret
  Total Size: 416

Func sig: (<ctx>:x, xd_q:d?*, yd__:d*, zd_q:d?*) to (s, s, d?, d, d?)*
Sequence: Seq<(str,str,Opt<Date>,Date,Opt<Date>)>
 0) (M____, N_LG, <null>, DT(1900, 1, 1, 0, 0, 0, 0), <null>)
 1) (___M_, N_EL, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 2) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 3) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 4) (M____, N_LG, <null>, DT(2023, 7, 1, 0, 0, 0, 0), <null>)
 5) (M____, N_LG, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 6) (___M_, N_EL, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 7) (M__MM, N_L_, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 8) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), <null>)
 9) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (___M_, N_EL, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (_M___, N_EG, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
13) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
14) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
15) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
16) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
17) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
18) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
19) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
20) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
21) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (MMM__, N_G_, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
25) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
26) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
27) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
28) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
29) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
30) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
31) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
32) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
33) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
34) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
35) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
36) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
37) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
38) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
39) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
40) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
41) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
42) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
43) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
44) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
45) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
46) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
47) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yd__, ForEach(*2: zd_q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xd_q, ChainMap(*2: yd__, ForEach(*3: zd_q, (*1, *2, *3))))
###
> G(xt_q, yt__, zt_q)
G(xt_q, yt__, zt_q) : (s, s, t?, t, t?)*
BndKind:Call, Type:(s, s, t?, t, t?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt_q), Call(∂.ChainMap([map:2] Global(yt__), Call(∂.ForEach([map:3] Global(zt_q), (Scope(1), Scope(2), Scope(3)):(t?, t, t?)):(t?, t, t?)*)):(t?, t, t?)*)):(t?, t, t?)*)):(t?, t, t?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t?, t, t?)):(b, b, b, b, b, t?, t, t?))):(b, b, b, b, b, t?, t, t?)*)):(b, b, b, b, b, t?, t, t?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t?, t, t?))):(s, s, t?, t, t?))):(s, s, t?, t, t?)*))
ForEach_1(Arr<obj>, (Opt<Time>,Time,Opt<Time>)):(bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)
      1) ldarg.1 [(Opt<Time>,Time,Opt<Time>)]
      5) ldfld (Opt<Time>,Time,Opt<Time>)::_F0:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [(Opt<Time>,Time,Opt<Time>)]
      5) ldfld (Opt<Time>,Time,Opt<Time>)::_F1:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.1 [Time]
      1) ldarg.1 [(Opt<Time>,Time,Opt<Time>)]
      5) ldfld (Opt<Time>,Time,Opt<Time>)::_F2:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.2 [Opt<Time>]
      5) newobj (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)()
      1) dup
      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 [2]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Inequality(Time, Time):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [4]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [5]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [6]
  Label [5]:
      1) ldc.i4.1
      5) br [6]
  Label [4]:
      1) ldc.i4.0
  Label [6]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [7]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) brfalse [7]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [8]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [9]
  Label [8]:
      1) ldc.i4.1
      5) br [9]
  Label [7]:
      1) ldc.i4.0
  Label [9]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [10]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) brfalse [11]
  Label [10]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.1 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) brfalse [14]
  Label [13]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [14]
      1) ldloc.1 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [15]
  Label [14]:
      1) ldc.i4.0
  Label [15]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F5:Opt<Time>
      1) dup
      1) ldloc.1 [Time]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F6:Time
      1) dup
      1) ldloc.2 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Time,Opt<Time>)::_F7:Opt<Time>
      1) ret
  Total Size: 416

Func sig: (<ctx>:x, xt_q:t?*, yt__:t*, zt_q:t?*) to (s, s, t?, t, t?)*
Sequence: Seq<(str,str,Opt<Time>,Time,Opt<Time>)>
 0) (M____, N_LG, <null>, -2.00:00:00, <null>)
 1) (___M_, N_EL, <null>, -2.00:00:00, -2.00:00:00)
 2) (M__MM, N_L_, <null>, -2.00:00:00, 00:00:00)
 3) (M__MM, N_L_, <null>, -2.00:00:00, 3.00:00:00)
 4) (M____, N_LG, <null>, 00:00:00, <null>)
 5) (M____, N_LG, <null>, 00:00:00, -2.00:00:00)
 6) (___M_, N_EL, <null>, 00:00:00, 00:00:00)
 7) (M__MM, N_L_, <null>, 00:00:00, 3.00:00:00)
 8) (M____, N_LG, <null>, 3.00:00:00, <null>)
 9) (M____, N_LG, <null>, 3.00:00:00, -2.00:00:00)
10) (M____, N_LG, <null>, 3.00:00:00, 00:00:00)
11) (___M_, N_EL, <null>, 3.00:00:00, 3.00:00:00)
12) (_M___, N_EG, -2.00:00:00, -2.00:00:00, <null>)
13) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
14) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
15) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
16) (M____, N_LG, -2.00:00:00, 00:00:00, <null>)
17) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
18) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
19) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
20) (M____, N_LG, -2.00:00:00, 3.00:00:00, <null>)
21) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
22) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
23) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
24) (MMM__, N_G_, 00:00:00, -2.00:00:00, <null>)
25) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
26) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
27) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
28) (_M___, N_EG, 00:00:00, 00:00:00, <null>)
29) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
30) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
31) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
32) (M____, N_LG, 00:00:00, 3.00:00:00, <null>)
33) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
34) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
35) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
36) (MMM__, N_G_, 3.00:00:00, -2.00:00:00, <null>)
37) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
38) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
39) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
40) (MMM__, N_G_, 3.00:00:00, 00:00:00, <null>)
41) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
42) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
43) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
44) (_M___, N_EG, 3.00:00:00, 3.00:00:00, <null>)
45) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
46) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
47) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 21
    [0](16): ChainMap(*1: yt__, ForEach(*2: zt_q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xt_q, ChainMap(*2: yt__, ForEach(*3: zt_q, (*1, *2, *3))))
###
> G(xb__, yb_q, zb_q) // RQQ
G(xb__, yb_q, zb_q) : (s, s, b, b?, b?)*
BndKind:Call, Type:(s, s, b, b?, b?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb__), Call(∂.ChainMap([map:2] Global(yb_q), Call(∂.ForEach([map:3] Global(zb_q), (Scope(1), Scope(2), Scope(3)):(b, b?, b?)):(b, b?, b?)*)):(b, b?, b?)*)):(b, b?, b?)*)):(b, b?, b?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b, b?, b?)):(b, b, b, b, b, b, b?, b?))):(b, b, b, b, b, b, b?, b?)*)):(b, b, b, b, b, b, b?, b?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b, b?, b?))):(s, s, b, b?, b?))):(s, s, b, b?, b?)*))
ForEach_1(Arr<obj>, (bool,Opt<bool>,Opt<bool>)):(bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)
      1) ldarg.1 [(bool,Opt<bool>,Opt<bool>)]
      5) ldfld (bool,Opt<bool>,Opt<bool>)::_F0:bool
      5) call static WrapFuncGen::Exec(bool):bool
      1) stloc.0 [bool]
      1) ldarg.1 [(bool,Opt<bool>,Opt<bool>)]
      5) ldfld (bool,Opt<bool>,Opt<bool>)::_F1:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [(bool,Opt<bool>,Opt<bool>)]
      5) ldfld (bool,Opt<bool>,Opt<bool>)::_F2:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.2 [Opt<bool>]
      5) newobj (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)()
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [bool]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) xor
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [bool]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) blt.un [5]
  Label [4]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [8]
      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) ble.un [8]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [11]
      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) bgt.un [11]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [13]
      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) bge.un [13]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F4:bool
      1) dup
      1) ldloc.0 [bool]
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F5:bool
      1) dup
      1) ldloc.1 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F6:Opt<bool>
      1) dup
      1) ldloc.2 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>)::_F7:Opt<bool>
      1) ret
  Total Size: 418

Func sig: (<ctx>:x, xb__:b*, yb_q:b?*, zb_q:b?*) to (s, s, b, b?, b?)*
Sequence: Seq<(str,str,bool,Opt<bool>,Opt<bool>)>
 0) (_M___, N_EG, false, <null>, <null>)
 1) (M____, N_LG, false, <null>, false)
 2) (M____, N_LG, false, <null>, true )
 3) (_M___, N_EG, false, false, <null>)
 4) (_M_M_, N_E_, false, false, false)
 5) (___M_, N_EL, false, false, true )
 6) (M____, N_LG, false, true , <null>)
 7) (M____, N_LG, false, true , false)
 8) (___M_, N_EL, false, true , true )
 9) (_M___, N_EG, true , <null>, <null>)
10) (M____, N_LG, true , <null>, false)
11) (M____, N_LG, true , <null>, true )
12) (MMM__, N_G_, true , false, <null>)
13) (_M___, N_EG, true , false, false)
14) (M____, N_LG, true , false, true )
15) (_M___, N_EG, true , true , <null>)
16) (_M___, N_EG, true , true , false)
17) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 11
    [0](8): ChainMap(*1: yb_q, ForEach(*2: zb_q, (*3x, *1, *2)))
    [1](3): ChainMap(*1: xb__, ChainMap(*2: yb_q, ForEach(*3: zb_q, (*1, *2, *3))))
###
> G(xr8_, yr8q, zr8q)
G(xr8_, yr8q, zr8q) : (s, s, r8, r8?, r8?)*
BndKind:Call, Type:(s, s, r8, r8?, r8?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8_), Call(∂.ChainMap([map:2] Global(yr8q), Call(∂.ForEach([map:3] Global(zr8q), (Scope(1), Scope(2), Scope(3)):(r8, r8?, r8?)):(r8, r8?, r8?)*)):(r8, r8?, r8?)*)):(r8, r8?, r8?)*)):(r8, r8?, r8?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8, r8?, r8?)):(b, b, b, b, b, r8, r8?, r8?))):(b, b, b, b, b, r8, r8?, r8?)*)):(b, b, b, b, b, r8, r8?, r8?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8, r8?, r8?))):(s, s, r8, r8?, r8?))):(s, s, r8, r8?, r8?)*))
ForEach_1(Arr<obj>, (r8,Opt<r8>,Opt<r8>)):(bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)
      1) ldarg.1 [(r8,Opt<r8>,Opt<r8>)]
      5) ldfld (r8,Opt<r8>,Opt<r8>)::_F0:r8
      5) call static WrapFuncGen::Exec(r8):r8
      1) stloc.0 [r8]
      1) ldarg.1 [(r8,Opt<r8>,Opt<r8>)]
      5) ldfld (r8,Opt<r8>,Opt<r8>)::_F1:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [(r8,Opt<r8>,Opt<r8>)]
      5) ldfld (r8,Opt<r8>,Opt<r8>)::_F2:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.2 [Opt<r8>]
      5) newobj (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)()
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [r8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [r8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [8]
      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::Gt(r8, r8):bool
      5) brfalse [8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [11]
      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::Le(r8, r8):bool
      5) brfalse [11]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Le(r8, r8):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [13]
      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::Lt(r8, r8):bool
      5) brfalse [13]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F4:bool
      1) dup
      1) ldloc.0 [r8]
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F5:r8
      1) dup
      1) ldloc.1 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F6:Opt<r8>
      1) dup
      1) ldloc.2 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,r8,Opt<r8>,Opt<r8>)::_F7:Opt<r8>
      1) ret
  Total Size: 456

Func sig: (<ctx>:x, xr8_:r8*, yr8q:r8?*, zr8q:r8?*) to (s, s, r8, r8?, r8?)*
Sequence: Seq<(str,str,r8,Opt<r8>,Opt<r8>)>
 0) (_M___, N_EG, NaN, <null>, <null>)
 1) (M____, N_LG, NaN, <null>, NaN)
 2) (M____, N_LG, NaN, <null>, -3)
 3) (M____, N_LG, NaN, <null>, 0)
 4) (M____, N_LG, NaN, <null>, 5)
 5) (_M___, N_EG, NaN, NaN, <null>)
 6) (_M_M_, N_E_, NaN, NaN, NaN)
 7) (___M_, N_EL, NaN, NaN, -3)
 8) (___M_, N_EL, NaN, NaN, 0)
 9) (___M_, N_EL, NaN, NaN, 5)
10) (M____, N_LG, NaN, -3, <null>)
11) (M____, N_LG, NaN, -3, NaN)
12) (___M_, N_EL, NaN, -3, -3)
13) (M__MM, N_L_, NaN, -3, 0)
14) (M__MM, N_L_, NaN, -3, 5)
15) (M____, N_LG, NaN, 0, <null>)
16) (M____, N_LG, NaN, 0, NaN)
17) (M____, N_LG, NaN, 0, -3)
18) (___M_, N_EL, NaN, 0, 0)
19) (M__MM, N_L_, NaN, 0, 5)
20) (M____, N_LG, NaN, 5, <null>)
21) (M____, N_LG, NaN, 5, NaN)
22) (M____, N_LG, NaN, 5, -3)
23) (M____, N_LG, NaN, 5, 0)
24) (___M_, N_EL, NaN, 5, 5)
25) (_M___, N_EG, -3, <null>, <null>)
26) (M____, N_LG, -3, <null>, NaN)
27) (M____, N_LG, -3, <null>, -3)
28) (M____, N_LG, -3, <null>, 0)
29) (M____, N_LG, -3, <null>, 5)
30) (MMM__, N_G_, -3, NaN, <null>)
31) (_M___, N_EG, -3, NaN, NaN)
32) (M____, N_LG, -3, NaN, -3)
33) (M____, N_LG, -3, NaN, 0)
34) (M____, N_LG, -3, NaN, 5)
35) (_M___, N_EG, -3, -3, <null>)
36) (_M___, N_EG, -3, -3, NaN)
37) (_M_M_, N_E_, -3, -3, -3)
38) (___M_, N_EL, -3, -3, 0)
39) (___M_, N_EL, -3, -3, 5)
40) (M____, N_LG, -3, 0, <null>)
41) (M____, N_LG, -3, 0, NaN)
42) (M____, N_LG, -3, 0, -3)
43) (___M_, N_EL, -3, 0, 0)
44) (M__MM, N_L_, -3, 0, 5)
45) (M____, N_LG, -3, 5, <null>)
46) (M____, N_LG, -3, 5, NaN)
47) (M____, N_LG, -3, 5, -3)
48) (M____, N_LG, -3, 5, 0)
49) (___M_, N_EL, -3, 5, 5)
50) (_M___, N_EG, 0, <null>, <null>)
51) (M____, N_LG, 0, <null>, NaN)
52) (M____, N_LG, 0, <null>, -3)
53) (M____, N_LG, 0, <null>, 0)
54) (M____, N_LG, 0, <null>, 5)
55) (MMM__, N_G_, 0, NaN, <null>)
56) (_M___, N_EG, 0, NaN, NaN)
57) (M____, N_LG, 0, NaN, -3)
58) (M____, N_LG, 0, NaN, 0)
59) (M____, N_LG, 0, NaN, 5)
60) (MMM__, N_G_, 0, -3, <null>)
61) (MMM__, N_G_, 0, -3, NaN)
62) (_M___, N_EG, 0, -3, -3)
63) (M____, N_LG, 0, -3, 0)
64) (M____, N_LG, 0, -3, 5)
65) (_M___, N_EG, 0, 0, <null>)
66) (_M___, N_EG, 0, 0, NaN)
67) (_M___, N_EG, 0, 0, -3)
68) (_M_M_, N_E_, 0, 0, 0)
69) (___M_, N_EL, 0, 0, 5)
70) (M____, N_LG, 0, 5, <null>)
71) (M____, N_LG, 0, 5, NaN)
72) (M____, N_LG, 0, 5, -3)
73) (M____, N_LG, 0, 5, 0)
74) (___M_, N_EL, 0, 5, 5)
75) (_M___, N_EG, 5, <null>, <null>)
76) (M____, N_LG, 5, <null>, NaN)
77) (M____, N_LG, 5, <null>, -3)
78) (M____, N_LG, 5, <null>, 0)
79) (M____, N_LG, 5, <null>, 5)
80) (MMM__, N_G_, 5, NaN, <null>)
81) (_M___, N_EG, 5, NaN, NaN)
82) (M____, N_LG, 5, NaN, -3)
83) (M____, N_LG, 5, NaN, 0)
84) (M____, N_LG, 5, NaN, 5)
85) (MMM__, N_G_, 5, -3, <null>)
86) (MMM__, N_G_, 5, -3, NaN)
87) (_M___, N_EG, 5, -3, -3)
88) (M____, N_LG, 5, -3, 0)
89) (M____, N_LG, 5, -3, 5)
90) (MMM__, N_G_, 5, 0, <null>)
91) (MMM__, N_G_, 5, 0, NaN)
92) (MMM__, N_G_, 5, 0, -3)
93) (_M___, N_EG, 5, 0, 0)
94) (M____, N_LG, 5, 0, 5)
95) (_M___, N_EG, 5, 5, <null>)
96) (_M___, N_EG, 5, 5, NaN)
97) (_M___, N_EG, 5, 5, -3)
98) (_M___, N_EG, 5, 5, 0)
99) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 29
    [0](24): ChainMap(*1: yr8q, ForEach(*2: zr8q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr8_, ChainMap(*2: yr8q, ForEach(*3: zr8q, (*1, *2, *3))))
###
> G(xr4_, yr4q, zr4q)
G(xr4_, yr4q, zr4q) : (s, s, r4, r4?, r4?)*
BndKind:Call, Type:(s, s, r4, r4?, r4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4_), Call(∂.ChainMap([map:2] Global(yr4q), Call(∂.ForEach([map:3] Global(zr4q), (Scope(1), Scope(2), Scope(3)):(r4, r4?, r4?)):(r4, r4?, r4?)*)):(r4, r4?, r4?)*)):(r4, r4?, r4?)*)):(r4, r4?, r4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4, r4?, r4?)):(b, b, b, b, b, r4, r4?, r4?))):(b, b, b, b, b, r4, r4?, r4?)*)):(b, b, b, b, b, r4, r4?, r4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4, r4?, r4?))):(s, s, r4, r4?, r4?))):(s, s, r4, r4?, r4?)*))
ForEach_1(Arr<obj>, (r4,Opt<r4>,Opt<r4>)):(bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)
      1) ldarg.1 [(r4,Opt<r4>,Opt<r4>)]
      5) ldfld (r4,Opt<r4>,Opt<r4>)::_F0:r4
      5) call static WrapFuncGen::Exec(r4):r4
      1) stloc.0 [r4]
      1) ldarg.1 [(r4,Opt<r4>,Opt<r4>)]
      5) ldfld (r4,Opt<r4>,Opt<r4>)::_F1:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [(r4,Opt<r4>,Opt<r4>)]
      5) ldfld (r4,Opt<r4>,Opt<r4>)::_F2:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.2 [Opt<r4>]
      5) newobj (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)()
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [r4]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [r4]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [8]
      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::Gt(r4, r4):bool
      5) brfalse [8]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [11]
      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::Le(r4, r4):bool
      5) brfalse [11]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Le(r4, r4):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [13]
      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::Lt(r4, r4):bool
      5) brfalse [13]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F4:bool
      1) dup
      1) ldloc.0 [r4]
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F5:r4
      1) dup
      1) ldloc.1 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F6:Opt<r4>
      1) dup
      1) ldloc.2 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,r4,Opt<r4>,Opt<r4>)::_F7:Opt<r4>
      1) ret
  Total Size: 456

Func sig: (<ctx>:x, xr4_:r4*, yr4q:r4?*, zr4q:r4?*) to (s, s, r4, r4?, r4?)*
Sequence: Seq<(str,str,r4,Opt<r4>,Opt<r4>)>
 0) (_M___, N_EG, NaN, <null>, <null>)
 1) (M____, N_LG, NaN, <null>, NaN)
 2) (M____, N_LG, NaN, <null>, -3)
 3) (M____, N_LG, NaN, <null>, 0)
 4) (M____, N_LG, NaN, <null>, 5)
 5) (_M___, N_EG, NaN, NaN, <null>)
 6) (_M_M_, N_E_, NaN, NaN, NaN)
 7) (___M_, N_EL, NaN, NaN, -3)
 8) (___M_, N_EL, NaN, NaN, 0)
 9) (___M_, N_EL, NaN, NaN, 5)
10) (M____, N_LG, NaN, -3, <null>)
11) (M____, N_LG, NaN, -3, NaN)
12) (___M_, N_EL, NaN, -3, -3)
13) (M__MM, N_L_, NaN, -3, 0)
14) (M__MM, N_L_, NaN, -3, 5)
15) (M____, N_LG, NaN, 0, <null>)
16) (M____, N_LG, NaN, 0, NaN)
17) (M____, N_LG, NaN, 0, -3)
18) (___M_, N_EL, NaN, 0, 0)
19) (M__MM, N_L_, NaN, 0, 5)
20) (M____, N_LG, NaN, 5, <null>)
21) (M____, N_LG, NaN, 5, NaN)
22) (M____, N_LG, NaN, 5, -3)
23) (M____, N_LG, NaN, 5, 0)
24) (___M_, N_EL, NaN, 5, 5)
25) (_M___, N_EG, -3, <null>, <null>)
26) (M____, N_LG, -3, <null>, NaN)
27) (M____, N_LG, -3, <null>, -3)
28) (M____, N_LG, -3, <null>, 0)
29) (M____, N_LG, -3, <null>, 5)
30) (MMM__, N_G_, -3, NaN, <null>)
31) (_M___, N_EG, -3, NaN, NaN)
32) (M____, N_LG, -3, NaN, -3)
33) (M____, N_LG, -3, NaN, 0)
34) (M____, N_LG, -3, NaN, 5)
35) (_M___, N_EG, -3, -3, <null>)
36) (_M___, N_EG, -3, -3, NaN)
37) (_M_M_, N_E_, -3, -3, -3)
38) (___M_, N_EL, -3, -3, 0)
39) (___M_, N_EL, -3, -3, 5)
40) (M____, N_LG, -3, 0, <null>)
41) (M____, N_LG, -3, 0, NaN)
42) (M____, N_LG, -3, 0, -3)
43) (___M_, N_EL, -3, 0, 0)
44) (M__MM, N_L_, -3, 0, 5)
45) (M____, N_LG, -3, 5, <null>)
46) (M____, N_LG, -3, 5, NaN)
47) (M____, N_LG, -3, 5, -3)
48) (M____, N_LG, -3, 5, 0)
49) (___M_, N_EL, -3, 5, 5)
50) (_M___, N_EG, 0, <null>, <null>)
51) (M____, N_LG, 0, <null>, NaN)
52) (M____, N_LG, 0, <null>, -3)
53) (M____, N_LG, 0, <null>, 0)
54) (M____, N_LG, 0, <null>, 5)
55) (MMM__, N_G_, 0, NaN, <null>)
56) (_M___, N_EG, 0, NaN, NaN)
57) (M____, N_LG, 0, NaN, -3)
58) (M____, N_LG, 0, NaN, 0)
59) (M____, N_LG, 0, NaN, 5)
60) (MMM__, N_G_, 0, -3, <null>)
61) (MMM__, N_G_, 0, -3, NaN)
62) (_M___, N_EG, 0, -3, -3)
63) (M____, N_LG, 0, -3, 0)
64) (M____, N_LG, 0, -3, 5)
65) (_M___, N_EG, 0, 0, <null>)
66) (_M___, N_EG, 0, 0, NaN)
67) (_M___, N_EG, 0, 0, -3)
68) (_M_M_, N_E_, 0, 0, 0)
69) (___M_, N_EL, 0, 0, 5)
70) (M____, N_LG, 0, 5, <null>)
71) (M____, N_LG, 0, 5, NaN)
72) (M____, N_LG, 0, 5, -3)
73) (M____, N_LG, 0, 5, 0)
74) (___M_, N_EL, 0, 5, 5)
75) (_M___, N_EG, 5, <null>, <null>)
76) (M____, N_LG, 5, <null>, NaN)
77) (M____, N_LG, 5, <null>, -3)
78) (M____, N_LG, 5, <null>, 0)
79) (M____, N_LG, 5, <null>, 5)
80) (MMM__, N_G_, 5, NaN, <null>)
81) (_M___, N_EG, 5, NaN, NaN)
82) (M____, N_LG, 5, NaN, -3)
83) (M____, N_LG, 5, NaN, 0)
84) (M____, N_LG, 5, NaN, 5)
85) (MMM__, N_G_, 5, -3, <null>)
86) (MMM__, N_G_, 5, -3, NaN)
87) (_M___, N_EG, 5, -3, -3)
88) (M____, N_LG, 5, -3, 0)
89) (M____, N_LG, 5, -3, 5)
90) (MMM__, N_G_, 5, 0, <null>)
91) (MMM__, N_G_, 5, 0, NaN)
92) (MMM__, N_G_, 5, 0, -3)
93) (_M___, N_EG, 5, 0, 0)
94) (M____, N_LG, 5, 0, 5)
95) (_M___, N_EG, 5, 5, <null>)
96) (_M___, N_EG, 5, 5, NaN)
97) (_M___, N_EG, 5, 5, -3)
98) (_M___, N_EG, 5, 5, 0)
99) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 29
    [0](24): ChainMap(*1: yr4q, ForEach(*2: zr4q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xr4_, ChainMap(*2: yr4q, ForEach(*3: zr4q, (*1, *2, *3))))
###
> G(xi__, yi_q, zi_q)
G(xi__, yi_q, zi_q) : (s, s, i, i?, i?)*
BndKind:Call, Type:(s, s, i, i?, i?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi__), Call(∂.ChainMap([map:2] Global(yi_q), Call(∂.ForEach([map:3] Global(zi_q), (Scope(1), Scope(2), Scope(3)):(i, i?, i?)):(i, i?, i?)*)):(i, i?, i?)*)):(i, i?, i?)*)):(i, i?, i?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i, i?, i?)):(b, b, b, b, b, i, i?, i?))):(b, b, b, b, b, i, i?, i?)*)):(b, b, b, b, b, i, i?, i?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i, i?, i?))):(s, s, i, i?, i?))):(s, s, i, i?, i?)*))
ForEach_1(Arr<obj>, (ia,Opt<ia>,Opt<ia>)):(bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)
      1) ldarg.1 [(ia,Opt<ia>,Opt<ia>)]
      5) ldfld (ia,Opt<ia>,Opt<ia>)::_F0:ia
      5) call static WrapFuncGen::Exec(ia):ia
      1) stloc.0 [ia]
      1) ldarg.1 [(ia,Opt<ia>,Opt<ia>)]
      5) ldfld (ia,Opt<ia>,Opt<ia>)::_F1:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [(ia,Opt<ia>,Opt<ia>)]
      5) ldfld (ia,Opt<ia>,Opt<ia>)::_F2:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.2 [Opt<ia>]
      5) newobj (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)()
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [ia]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Inequality(ia, ia):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [ia]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [8]
      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_GreaterThan(ia, ia):bool
      5) brfalse [8]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [11]
      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_LessThanOrEqual(ia, ia):bool
      5) brfalse [11]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [13]
      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_LessThan(ia, ia):bool
      5) brfalse [13]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F4:bool
      1) dup
      1) ldloc.0 [ia]
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F5:ia
      1) dup
      1) ldloc.1 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F6:Opt<ia>
      1) dup
      1) ldloc.2 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,ia,Opt<ia>,Opt<ia>)::_F7:Opt<ia>
      1) ret
  Total Size: 453

Func sig: (<ctx>:x, xi__:i*, yi_q:i?*, zi_q:i?*) to (s, s, i, i?, i?)*
Sequence: Seq<(str,str,ia,Opt<ia>,Opt<ia>)>
 0) (_M___, N_EG, -3, <null>, <null>)
 1) (M____, N_LG, -3, <null>, -3)
 2) (M____, N_LG, -3, <null>, 0)
 3) (M____, N_LG, -3, <null>, 5)
 4) (_M___, N_EG, -3, -3, <null>)
 5) (_M_M_, N_E_, -3, -3, -3)
 6) (___M_, N_EL, -3, -3, 0)
 7) (___M_, N_EL, -3, -3, 5)
 8) (M____, N_LG, -3, 0, <null>)
 9) (M____, N_LG, -3, 0, -3)
10) (___M_, N_EL, -3, 0, 0)
11) (M__MM, N_L_, -3, 0, 5)
12) (M____, N_LG, -3, 5, <null>)
13) (M____, N_LG, -3, 5, -3)
14) (M____, N_LG, -3, 5, 0)
15) (___M_, N_EL, -3, 5, 5)
16) (_M___, N_EG, 0, <null>, <null>)
17) (M____, N_LG, 0, <null>, -3)
18) (M____, N_LG, 0, <null>, 0)
19) (M____, N_LG, 0, <null>, 5)
20) (MMM__, N_G_, 0, -3, <null>)
21) (_M___, N_EG, 0, -3, -3)
22) (M____, N_LG, 0, -3, 0)
23) (M____, N_LG, 0, -3, 5)
24) (_M___, N_EG, 0, 0, <null>)
25) (_M___, N_EG, 0, 0, -3)
26) (_M_M_, N_E_, 0, 0, 0)
27) (___M_, N_EL, 0, 0, 5)
28) (M____, N_LG, 0, 5, <null>)
29) (M____, N_LG, 0, 5, -3)
30) (M____, N_LG, 0, 5, 0)
31) (___M_, N_EL, 0, 5, 5)
32) (_M___, N_EG, 5, <null>, <null>)
33) (M____, N_LG, 5, <null>, -3)
34) (M____, N_LG, 5, <null>, 0)
35) (M____, N_LG, 5, <null>, 5)
36) (MMM__, N_G_, 5, -3, <null>)
37) (_M___, N_EG, 5, -3, -3)
38) (M____, N_LG, 5, -3, 0)
39) (M____, N_LG, 5, -3, 5)
40) (MMM__, N_G_, 5, 0, <null>)
41) (MMM__, N_G_, 5, 0, -3)
42) (_M___, N_EG, 5, 0, 0)
43) (M____, N_LG, 5, 0, 5)
44) (_M___, N_EG, 5, 5, <null>)
45) (_M___, N_EG, 5, 5, -3)
46) (_M___, N_EG, 5, 5, 0)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yi_q, ForEach(*2: zi_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi__, ChainMap(*2: yi_q, ForEach(*3: zi_q, (*1, *2, *3))))
###
> G(xi2_, yi2q, zi2q)
G(xi2_, yi2q, zi2q) : (s, s, i2, i2?, i2?)*
BndKind:Call, Type:(s, s, i2, i2?, i2?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2_), Call(∂.ChainMap([map:2] Global(yi2q), Call(∂.ForEach([map:3] Global(zi2q), (Scope(1), Scope(2), Scope(3)):(i2, i2?, i2?)):(i2, i2?, i2?)*)):(i2, i2?, i2?)*)):(i2, i2?, i2?)*)):(i2, i2?, i2?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2, i2?, i2?)):(b, b, b, b, b, i2, i2?, i2?))):(b, b, b, b, b, i2, i2?, i2?)*)):(b, b, b, b, b, i2, i2?, i2?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2, i2?, i2?))):(s, s, i2, i2?, i2?))):(s, s, i2, i2?, i2?)*))
ForEach_1(Arr<obj>, (i2,Opt<i2>,Opt<i2>)):(bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)
      1) ldarg.1 [(i2,Opt<i2>,Opt<i2>)]
      5) ldfld (i2,Opt<i2>,Opt<i2>)::_F0:i2
      5) call static WrapFuncGen::Exec(i2):i2
      1) stloc.0 [i2]
      1) ldarg.1 [(i2,Opt<i2>,Opt<i2>)]
      5) ldfld (i2,Opt<i2>,Opt<i2>)::_F1:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.1 [Opt<i2>]
      1) ldarg.1 [(i2,Opt<i2>,Opt<i2>)]
      5) ldfld (i2,Opt<i2>,Opt<i2>)::_F2:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.2 [Opt<i2>]
      5) newobj (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)()
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [i2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [i2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) blt [5]
  Label [4]:
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) ble [8]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) bgt [11]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      1) ldloc.0 [i2]
      1) ldloc.3 [i2]
      5) bge [13]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F4:bool
      1) dup
      1) ldloc.0 [i2]
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F5:i2
      1) dup
      1) ldloc.1 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F6:Opt<i2>
      1) dup
      1) ldloc.2 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,i2,Opt<i2>,Opt<i2>)::_F7:Opt<i2>
      1) ret
  Total Size: 422

Func sig: (<ctx>:x, xi2_:i2*, yi2q:i2?*, zi2q:i2?*) to (s, s, i2, i2?, i2?)*
Sequence: Seq<(str,str,i2,Opt<i2>,Opt<i2>)>
 0) (_M___, N_EG, -3, <null>, <null>)
 1) (M____, N_LG, -3, <null>, -3)
 2) (M____, N_LG, -3, <null>, 0)
 3) (M____, N_LG, -3, <null>, 5)
 4) (_M___, N_EG, -3, -3, <null>)
 5) (_M_M_, N_E_, -3, -3, -3)
 6) (___M_, N_EL, -3, -3, 0)
 7) (___M_, N_EL, -3, -3, 5)
 8) (M____, N_LG, -3, 0, <null>)
 9) (M____, N_LG, -3, 0, -3)
10) (___M_, N_EL, -3, 0, 0)
11) (M__MM, N_L_, -3, 0, 5)
12) (M____, N_LG, -3, 5, <null>)
13) (M____, N_LG, -3, 5, -3)
14) (M____, N_LG, -3, 5, 0)
15) (___M_, N_EL, -3, 5, 5)
16) (_M___, N_EG, 0, <null>, <null>)
17) (M____, N_LG, 0, <null>, -3)
18) (M____, N_LG, 0, <null>, 0)
19) (M____, N_LG, 0, <null>, 5)
20) (MMM__, N_G_, 0, -3, <null>)
21) (_M___, N_EG, 0, -3, -3)
22) (M____, N_LG, 0, -3, 0)
23) (M____, N_LG, 0, -3, 5)
24) (_M___, N_EG, 0, 0, <null>)
25) (_M___, N_EG, 0, 0, -3)
26) (_M_M_, N_E_, 0, 0, 0)
27) (___M_, N_EL, 0, 0, 5)
28) (M____, N_LG, 0, 5, <null>)
29) (M____, N_LG, 0, 5, -3)
30) (M____, N_LG, 0, 5, 0)
31) (___M_, N_EL, 0, 5, 5)
32) (_M___, N_EG, 5, <null>, <null>)
33) (M____, N_LG, 5, <null>, -3)
34) (M____, N_LG, 5, <null>, 0)
35) (M____, N_LG, 5, <null>, 5)
36) (MMM__, N_G_, 5, -3, <null>)
37) (_M___, N_EG, 5, -3, -3)
38) (M____, N_LG, 5, -3, 0)
39) (M____, N_LG, 5, -3, 5)
40) (MMM__, N_G_, 5, 0, <null>)
41) (MMM__, N_G_, 5, 0, -3)
42) (_M___, N_EG, 5, 0, 0)
43) (M____, N_LG, 5, 0, 5)
44) (_M___, N_EG, 5, 5, <null>)
45) (_M___, N_EG, 5, 5, -3)
46) (_M___, N_EG, 5, 5, 0)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yi2q, ForEach(*2: zi2q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xi2_, ChainMap(*2: yi2q, ForEach(*3: zi2q, (*1, *2, *3))))
###
> G(xu4_, yu4q, zu4q)
G(xu4_, yu4q, zu4q) : (s, s, u4, u4?, u4?)*
BndKind:Call, Type:(s, s, u4, u4?, u4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4_), Call(∂.ChainMap([map:2] Global(yu4q), Call(∂.ForEach([map:3] Global(zu4q), (Scope(1), Scope(2), Scope(3)):(u4, u4?, u4?)):(u4, u4?, u4?)*)):(u4, u4?, u4?)*)):(u4, u4?, u4?)*)):(u4, u4?, u4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4, u4?, u4?)):(b, b, b, b, b, u4, u4?, u4?))):(b, b, b, b, b, u4, u4?, u4?)*)):(b, b, b, b, b, u4, u4?, u4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4, u4?, u4?))):(s, s, u4, u4?, u4?))):(s, s, u4, u4?, u4?)*))
ForEach_1(Arr<obj>, (u4,Opt<u4>,Opt<u4>)):(bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)
      1) ldarg.1 [(u4,Opt<u4>,Opt<u4>)]
      5) ldfld (u4,Opt<u4>,Opt<u4>)::_F0:u4
      5) call static WrapFuncGen::Exec(u4):u4
      1) stloc.0 [u4]
      1) ldarg.1 [(u4,Opt<u4>,Opt<u4>)]
      5) ldfld (u4,Opt<u4>,Opt<u4>)::_F1:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [(u4,Opt<u4>,Opt<u4>)]
      5) ldfld (u4,Opt<u4>,Opt<u4>)::_F2:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.2 [Opt<u4>]
      5) newobj (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)()
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [u4]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [u4]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) blt.un [5]
  Label [4]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [8]
      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) ble.un [8]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [11]
      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) bgt.un [11]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [13]
      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) bge.un [13]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F4:bool
      1) dup
      1) ldloc.0 [u4]
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F5:u4
      1) dup
      1) ldloc.1 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F6:Opt<u4>
      1) dup
      1) ldloc.2 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,u4,Opt<u4>,Opt<u4>)::_F7:Opt<u4>
      1) ret
  Total Size: 422

Func sig: (<ctx>:x, xu4_:u4*, yu4q:u4?*, zu4q:u4?*) to (s, s, u4, u4?, u4?)*
Sequence: Seq<(str,str,u4,Opt<u4>,Opt<u4>)>
 0) (_M___, N_EG, 0, <null>, <null>)
 1) (M____, N_LG, 0, <null>, 0)
 2) (M____, N_LG, 0, <null>, 3)
 3) (M____, N_LG, 0, <null>, 5)
 4) (_M___, N_EG, 0, 0, <null>)
 5) (_M_M_, N_E_, 0, 0, 0)
 6) (___M_, N_EL, 0, 0, 3)
 7) (___M_, N_EL, 0, 0, 5)
 8) (M____, N_LG, 0, 3, <null>)
 9) (M____, N_LG, 0, 3, 0)
10) (___M_, N_EL, 0, 3, 3)
11) (M__MM, N_L_, 0, 3, 5)
12) (M____, N_LG, 0, 5, <null>)
13) (M____, N_LG, 0, 5, 0)
14) (M____, N_LG, 0, 5, 3)
15) (___M_, N_EL, 0, 5, 5)
16) (_M___, N_EG, 3, <null>, <null>)
17) (M____, N_LG, 3, <null>, 0)
18) (M____, N_LG, 3, <null>, 3)
19) (M____, N_LG, 3, <null>, 5)
20) (MMM__, N_G_, 3, 0, <null>)
21) (_M___, N_EG, 3, 0, 0)
22) (M____, N_LG, 3, 0, 3)
23) (M____, N_LG, 3, 0, 5)
24) (_M___, N_EG, 3, 3, <null>)
25) (_M___, N_EG, 3, 3, 0)
26) (_M_M_, N_E_, 3, 3, 3)
27) (___M_, N_EL, 3, 3, 5)
28) (M____, N_LG, 3, 5, <null>)
29) (M____, N_LG, 3, 5, 0)
30) (M____, N_LG, 3, 5, 3)
31) (___M_, N_EL, 3, 5, 5)
32) (_M___, N_EG, 5, <null>, <null>)
33) (M____, N_LG, 5, <null>, 0)
34) (M____, N_LG, 5, <null>, 3)
35) (M____, N_LG, 5, <null>, 5)
36) (MMM__, N_G_, 5, 0, <null>)
37) (_M___, N_EG, 5, 0, 0)
38) (M____, N_LG, 5, 0, 3)
39) (M____, N_LG, 5, 0, 5)
40) (MMM__, N_G_, 5, 3, <null>)
41) (MMM__, N_G_, 5, 3, 0)
42) (_M___, N_EG, 5, 3, 3)
43) (M____, N_LG, 5, 3, 5)
44) (_M___, N_EG, 5, 5, <null>)
45) (_M___, N_EG, 5, 5, 0)
46) (_M___, N_EG, 5, 5, 3)
47) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yu4q, ForEach(*2: zu4q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xu4_, ChainMap(*2: yu4q, ForEach(*3: zu4q, (*1, *2, *3))))
###
> G(xd__, yd_q, zd_q)
G(xd__, yd_q, zd_q) : (s, s, d, d?, d?)*
BndKind:Call, Type:(s, s, d, d?, d?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd__), Call(∂.ChainMap([map:2] Global(yd_q), Call(∂.ForEach([map:3] Global(zd_q), (Scope(1), Scope(2), Scope(3)):(d, d?, d?)):(d, d?, d?)*)):(d, d?, d?)*)):(d, d?, d?)*)):(d, d?, d?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d, d?, d?)):(b, b, b, b, b, d, d?, d?))):(b, b, b, b, b, d, d?, d?)*)):(b, b, b, b, b, d, d?, d?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d, d?, d?))):(s, s, d, d?, d?))):(s, s, d, d?, d?)*))
ForEach_1(Arr<obj>, (Date,Opt<Date>,Opt<Date>)):(bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)
      1) ldarg.1 [(Date,Opt<Date>,Opt<Date>)]
      5) ldfld (Date,Opt<Date>,Opt<Date>)::_F0:Date
      5) call static WrapFuncGen::Exec(Date):Date
      1) stloc.0 [Date]
      1) ldarg.1 [(Date,Opt<Date>,Opt<Date>)]
      5) ldfld (Date,Opt<Date>,Opt<Date>)::_F1:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [(Date,Opt<Date>,Opt<Date>)]
      5) ldfld (Date,Opt<Date>,Opt<Date>)::_F2:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.2 [Opt<Date>]
      5) newobj (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)()
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [Date]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Inequality(Date, Date):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [Date]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [8]
      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_GreaterThan(Date, Date):bool
      5) brfalse [8]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [11]
      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_LessThanOrEqual(Date, Date):bool
      5) brfalse [11]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [13]
      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_LessThan(Date, Date):bool
      5) brfalse [13]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F4:bool
      1) dup
      1) ldloc.0 [Date]
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F5:Date
      1) dup
      1) ldloc.1 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F6:Opt<Date>
      1) dup
      1) ldloc.2 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Date,Opt<Date>,Opt<Date>)::_F7:Opt<Date>
      1) ret
  Total Size: 453

Func sig: (<ctx>:x, xd__:d*, yd_q:d?*, zd_q:d?*) to (s, s, d, d?, d?)*
Sequence: Seq<(str,str,Date,Opt<Date>,Opt<Date>)>
 0) (_M___, N_EG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, <null>)
 1) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
 2) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
 3) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
 4) (_M___, N_EG, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
 5) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 6) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 7) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 8) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
 9) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
13) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
14) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
15) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
16) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, <null>)
17) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
18) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
19) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
20) (MMM__, N_G_, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
21) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
25) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
26) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
27) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
28) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
29) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
30) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
31) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
32) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, <null>)
33) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
34) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
35) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
36) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
37) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
38) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
39) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
40) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
41) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
42) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
43) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
44) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
45) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
46) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
47) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yd_q, ForEach(*2: zd_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xd__, ChainMap(*2: yd_q, ForEach(*3: zd_q, (*1, *2, *3))))
###
> G(xt__, yt_q, zt_q)
G(xt__, yt_q, zt_q) : (s, s, t, t?, t?)*
BndKind:Call, Type:(s, s, t, t?, t?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt__), Call(∂.ChainMap([map:2] Global(yt_q), Call(∂.ForEach([map:3] Global(zt_q), (Scope(1), Scope(2), Scope(3)):(t, t?, t?)):(t, t?, t?)*)):(t, t?, t?)*)):(t, t?, t?)*)):(t, t?, t?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t, t?, t?)):(b, b, b, b, b, t, t?, t?))):(b, b, b, b, b, t, t?, t?)*)):(b, b, b, b, b, t, t?, t?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t, t?, t?))):(s, s, t, t?, t?))):(s, s, t, t?, t?)*))
ForEach_1(Arr<obj>, (Time,Opt<Time>,Opt<Time>)):(bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)
      1) ldarg.1 [(Time,Opt<Time>,Opt<Time>)]
      5) ldfld (Time,Opt<Time>,Opt<Time>)::_F0:Time
      5) call static WrapFuncGen::Exec(Time):Time
      1) stloc.0 [Time]
      1) ldarg.1 [(Time,Opt<Time>,Opt<Time>)]
      5) ldfld (Time,Opt<Time>,Opt<Time>)::_F1:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [(Time,Opt<Time>,Opt<Time>)]
      5) ldfld (Time,Opt<Time>,Opt<Time>)::_F2:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.2 [Opt<Time>]
      5) newobj (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)()
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [0]
      1) ldloc.0 [Time]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Inequality(Time, Time):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      1) ldloc.0 [Time]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [8]
      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_GreaterThan(Time, Time):bool
      5) brfalse [8]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [11]
      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_LessThanOrEqual(Time, Time):bool
      5) brfalse [11]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [11]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [12]
  Label [11]:
      1) ldc.i4.0
  Label [12]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [13]
      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_LessThan(Time, Time):bool
      5) brfalse [13]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [13]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F4:bool
      1) dup
      1) ldloc.0 [Time]
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F5:Time
      1) dup
      1) ldloc.1 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F6:Opt<Time>
      1) dup
      1) ldloc.2 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Time,Opt<Time>,Opt<Time>)::_F7:Opt<Time>
      1) ret
  Total Size: 453

Func sig: (<ctx>:x, xt__:t*, yt_q:t?*, zt_q:t?*) to (s, s, t, t?, t?)*
Sequence: Seq<(str,str,Time,Opt<Time>,Opt<Time>)>
 0) (_M___, N_EG, -2.00:00:00, <null>, <null>)
 1) (M____, N_LG, -2.00:00:00, <null>, -2.00:00:00)
 2) (M____, N_LG, -2.00:00:00, <null>, 00:00:00)
 3) (M____, N_LG, -2.00:00:00, <null>, 3.00:00:00)
 4) (_M___, N_EG, -2.00:00:00, -2.00:00:00, <null>)
 5) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
 6) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
 7) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
 8) (M____, N_LG, -2.00:00:00, 00:00:00, <null>)
 9) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
10) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
11) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
12) (M____, N_LG, -2.00:00:00, 3.00:00:00, <null>)
13) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
14) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
15) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
16) (_M___, N_EG, 00:00:00, <null>, <null>)
17) (M____, N_LG, 00:00:00, <null>, -2.00:00:00)
18) (M____, N_LG, 00:00:00, <null>, 00:00:00)
19) (M____, N_LG, 00:00:00, <null>, 3.00:00:00)
20) (MMM__, N_G_, 00:00:00, -2.00:00:00, <null>)
21) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
22) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
23) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
24) (_M___, N_EG, 00:00:00, 00:00:00, <null>)
25) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
26) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
27) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
28) (M____, N_LG, 00:00:00, 3.00:00:00, <null>)
29) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
30) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
31) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
32) (_M___, N_EG, 3.00:00:00, <null>, <null>)
33) (M____, N_LG, 3.00:00:00, <null>, -2.00:00:00)
34) (M____, N_LG, 3.00:00:00, <null>, 00:00:00)
35) (M____, N_LG, 3.00:00:00, <null>, 3.00:00:00)
36) (MMM__, N_G_, 3.00:00:00, -2.00:00:00, <null>)
37) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
38) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
39) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
40) (MMM__, N_G_, 3.00:00:00, 00:00:00, <null>)
41) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
42) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
43) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
44) (_M___, N_EG, 3.00:00:00, 3.00:00:00, <null>)
45) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
46) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
47) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 19
    [0](15): ChainMap(*1: yt_q, ForEach(*2: zt_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xt__, ChainMap(*2: yt_q, ForEach(*3: zt_q, (*1, *2, *3))))
###
> G(xb_q, yb_q, zb_q) // QQQ
G(xb_q, yb_q, zb_q) : (s, s, b?, b?, b?)*
BndKind:Call, Type:(s, s, b?, b?, b?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xb_q), Call(∂.ChainMap([map:2] Global(yb_q), Call(∂.ForEach([map:3] Global(zb_q), (Scope(1), Scope(2), Scope(3)):(b?, b?, b?)):(b?, b?, b?)*)):(b?, b?, b?)*)):(b?, b?, b?)*)):(b?, b?, b?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):b?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):b?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):b?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, b?, b?, b?)):(b, b, b, b, b, b?, b?, b?))):(b, b, b, b, b, b?, b?, b?)*)):(b, b, b, b, b, b?, b?, b?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(b?, b?, b?))):(s, s, b?, b?, b?))):(s, s, b?, b?, b?)*))
ForEach_1(Arr<obj>, (Opt<bool>,Opt<bool>,Opt<bool>)):(bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)
      1) ldarg.1 [(Opt<bool>,Opt<bool>,Opt<bool>)]
      5) ldfld (Opt<bool>,Opt<bool>,Opt<bool>)::_F0:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.0 [Opt<bool>]
      1) ldarg.1 [(Opt<bool>,Opt<bool>,Opt<bool>)]
      5) ldfld (Opt<bool>,Opt<bool>,Opt<bool>)::_F1:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.1 [Opt<bool>]
      1) ldarg.1 [(Opt<bool>,Opt<bool>,Opt<bool>)]
      5) ldfld (Opt<bool>,Opt<bool>,Opt<bool>)::_F2:Opt<bool>
      5) call static WrapFuncGen::Exec(Opt<bool>):Opt<bool>
      1) stloc.2 [Opt<bool>]
      5) newobj (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)()
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) xor
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) blt.un [5]
  Label [4]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) ble.un [8]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      5) bgt.un [12]
  Label [11]:
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<bool> (1)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<bool> (0)]
      5) call Opt<bool>::GetValueOrDefault():bool
      1) ldloc.3 [bool]
      5) bge.un [15]
  Label [16]:
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [bool]
      2) ldloca.s [Opt<bool> (2)]
      5) call Opt<bool>::GetValueOrDefault():bool
      2) clt.un
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F5:Opt<bool>
      1) dup
      1) ldloc.1 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F6:Opt<bool>
      1) dup
      1) ldloc.2 [Opt<bool>]
      5) stfld (bool,bool,bool,bool,bool,Opt<bool>,Opt<bool>,Opt<bool>)::_F7:Opt<bool>
      1) ret
  Total Size: 525

Func sig: (<ctx>:x, xb_q:b?*, yb_q:b?*, zb_q:b?*) to (s, s, b?, b?, b?)*
Sequence: Seq<(str,str,Opt<bool>,Opt<bool>,Opt<bool>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, false)
 2) (___M_, N_EL, <null>, <null>, true )
 3) (M____, N_LG, <null>, false, <null>)
 4) (___M_, N_EL, <null>, false, false)
 5) (M__MM, N_L_, <null>, false, true )
 6) (M____, N_LG, <null>, true , <null>)
 7) (M____, N_LG, <null>, true , false)
 8) (___M_, N_EL, <null>, true , true )
 9) (_M___, N_EG, false, <null>, <null>)
10) (M____, N_LG, false, <null>, false)
11) (M____, N_LG, false, <null>, true )
12) (_M___, N_EG, false, false, <null>)
13) (_M_M_, N_E_, false, false, false)
14) (___M_, N_EL, false, false, true )
15) (M____, N_LG, false, true , <null>)
16) (M____, N_LG, false, true , false)
17) (___M_, N_EL, false, true , true )
18) (_M___, N_EG, true , <null>, <null>)
19) (M____, N_LG, true , <null>, false)
20) (M____, N_LG, true , <null>, true )
21) (MMM__, N_G_, true , false, <null>)
22) (_M___, N_EG, true , false, false)
23) (M____, N_LG, true , false, true )
24) (_M___, N_EG, true , true , <null>)
25) (_M___, N_EG, true , true , false)
26) (_M_M_, N_E_, true , true , true )
*** Ctx ping count: 16
    [0](12): ChainMap(*1: yb_q, ForEach(*2: zb_q, (*3x, *1, *2)))
    [1](4): ChainMap(*1: xb_q, ChainMap(*2: yb_q, ForEach(*3: zb_q, (*1, *2, *3))))
###
> G(xr8q, yr8q, zr8q)
G(xr8q, yr8q, zr8q) : (s, s, r8?, r8?, r8?)*
BndKind:Call, Type:(s, s, r8?, r8?, r8?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr8q), Call(∂.ChainMap([map:2] Global(yr8q), Call(∂.ForEach([map:3] Global(zr8q), (Scope(1), Scope(2), Scope(3)):(r8?, r8?, r8?)):(r8?, r8?, r8?)*)):(r8?, r8?, r8?)*)):(r8?, r8?, r8?)*)):(r8?, r8?, r8?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r8?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r8?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r8?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r8?, r8?, r8?)):(b, b, b, b, b, r8?, r8?, r8?))):(b, b, b, b, b, r8?, r8?, r8?)*)):(b, b, b, b, b, r8?, r8?, r8?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r8?, r8?, r8?))):(s, s, r8?, r8?, r8?))):(s, s, r8?, r8?, r8?)*))
ForEach_1(Arr<obj>, (Opt<r8>,Opt<r8>,Opt<r8>)):(bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)
      1) ldarg.1 [(Opt<r8>,Opt<r8>,Opt<r8>)]
      5) ldfld (Opt<r8>,Opt<r8>,Opt<r8>)::_F0:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.0 [Opt<r8>]
      1) ldarg.1 [(Opt<r8>,Opt<r8>,Opt<r8>)]
      5) ldfld (Opt<r8>,Opt<r8>,Opt<r8>)::_F1:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.1 [Opt<r8>]
      1) ldarg.1 [(Opt<r8>,Opt<r8>,Opt<r8>)]
      5) ldfld (Opt<r8>,Opt<r8>,Opt<r8>)::_F2:Opt<r8>
      5) call static WrapFuncGen::Exec(Opt<r8>):Opt<r8>
      1) stloc.2 [Opt<r8>]
      5) newobj (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)()
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Eq(r8, r8):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Ge(r8, r8):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Ge(r8, r8):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Gt(r8, r8):bool
      5) brfalse [8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Gt(r8, r8):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Le(r8, r8):bool
      5) brfalse [12]
  Label [11]:
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::GetValueOrDefault():r8
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Le(r8, r8):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r8> (1)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<r8> (0)]
      5) call Opt<r8>::GetValueOrDefault():r8
      1) ldloc.3 [r8]
      5) call static NumUtil::Lt(r8, r8):bool
      5) brfalse [15]
  Label [16]:
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [r8]
      2) ldloca.s [Opt<r8> (2)]
      5) call Opt<r8>::GetValueOrDefault():r8
      5) call static NumUtil::Lt(r8, r8):bool
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F5:Opt<r8>
      1) dup
      1) ldloc.1 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F6:Opt<r8>
      1) dup
      1) ldloc.2 [Opt<r8>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r8>,Opt<r8>,Opt<r8>)::_F7:Opt<r8>
      1) ret
  Total Size: 563

Func sig: (<ctx>:x, xr8q:r8?*, yr8q:r8?*, zr8q:r8?*) to (s, s, r8?, r8?, r8?)*
Sequence: Seq<(str,str,Opt<r8>,Opt<r8>,Opt<r8>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, NaN)
 2) (___M_, N_EL, <null>, <null>, -3)
 3) (___M_, N_EL, <null>, <null>, 0)
 4) (___M_, N_EL, <null>, <null>, 5)
 5) (M____, N_LG, <null>, NaN, <null>)
 6) (___M_, N_EL, <null>, NaN, NaN)
 7) (M__MM, N_L_, <null>, NaN, -3)
 8) (M__MM, N_L_, <null>, NaN, 0)
 9) (M__MM, N_L_, <null>, NaN, 5)
10) (M____, N_LG, <null>, -3, <null>)
11) (M____, N_LG, <null>, -3, NaN)
12) (___M_, N_EL, <null>, -3, -3)
13) (M__MM, N_L_, <null>, -3, 0)
14) (M__MM, N_L_, <null>, -3, 5)
15) (M____, N_LG, <null>, 0, <null>)
16) (M____, N_LG, <null>, 0, NaN)
17) (M____, N_LG, <null>, 0, -3)
18) (___M_, N_EL, <null>, 0, 0)
19) (M__MM, N_L_, <null>, 0, 5)
20) (M____, N_LG, <null>, 5, <null>)
21) (M____, N_LG, <null>, 5, NaN)
22) (M____, N_LG, <null>, 5, -3)
23) (M____, N_LG, <null>, 5, 0)
24) (___M_, N_EL, <null>, 5, 5)
25) (_M___, N_EG, NaN, <null>, <null>)
26) (M____, N_LG, NaN, <null>, NaN)
27) (M____, N_LG, NaN, <null>, -3)
28) (M____, N_LG, NaN, <null>, 0)
29) (M____, N_LG, NaN, <null>, 5)
30) (_M___, N_EG, NaN, NaN, <null>)
31) (_M_M_, N_E_, NaN, NaN, NaN)
32) (___M_, N_EL, NaN, NaN, -3)
33) (___M_, N_EL, NaN, NaN, 0)
34) (___M_, N_EL, NaN, NaN, 5)
35) (M____, N_LG, NaN, -3, <null>)
36) (M____, N_LG, NaN, -3, NaN)
37) (___M_, N_EL, NaN, -3, -3)
38) (M__MM, N_L_, NaN, -3, 0)
39) (M__MM, N_L_, NaN, -3, 5)
40) (M____, N_LG, NaN, 0, <null>)
41) (M____, N_LG, NaN, 0, NaN)
42) (M____, N_LG, NaN, 0, -3)
43) (___M_, N_EL, NaN, 0, 0)
44) (M__MM, N_L_, NaN, 0, 5)
45) (M____, N_LG, NaN, 5, <null>)
46) (M____, N_LG, NaN, 5, NaN)
47) (M____, N_LG, NaN, 5, -3)
48) (M____, N_LG, NaN, 5, 0)
49) (___M_, N_EL, NaN, 5, 5)
50) (_M___, N_EG, -3, <null>, <null>)
51) (M____, N_LG, -3, <null>, NaN)
52) (M____, N_LG, -3, <null>, -3)
53) (M____, N_LG, -3, <null>, 0)
54) (M____, N_LG, -3, <null>, 5)
55) (MMM__, N_G_, -3, NaN, <null>)
56) (_M___, N_EG, -3, NaN, NaN)
57) (M____, N_LG, -3, NaN, -3)
58) (M____, N_LG, -3, NaN, 0)
59) (M____, N_LG, -3, NaN, 5)
60) (_M___, N_EG, -3, -3, <null>)
61) (_M___, N_EG, -3, -3, NaN)
62) (_M_M_, N_E_, -3, -3, -3)
63) (___M_, N_EL, -3, -3, 0)
64) (___M_, N_EL, -3, -3, 5)
65) (M____, N_LG, -3, 0, <null>)
66) (M____, N_LG, -3, 0, NaN)
67) (M____, N_LG, -3, 0, -3)
68) (___M_, N_EL, -3, 0, 0)
69) (M__MM, N_L_, -3, 0, 5)
70) (M____, N_LG, -3, 5, <null>)
71) (M____, N_LG, -3, 5, NaN)
72) (M____, N_LG, -3, 5, -3)
73) (M____, N_LG, -3, 5, 0)
74) (___M_, N_EL, -3, 5, 5)
75) (_M___, N_EG, 0, <null>, <null>)
76) (M____, N_LG, 0, <null>, NaN)
77) (M____, N_LG, 0, <null>, -3)
78) (M____, N_LG, 0, <null>, 0)
79) (M____, N_LG, 0, <null>, 5)
80) (MMM__, N_G_, 0, NaN, <null>)
81) (_M___, N_EG, 0, NaN, NaN)
82) (M____, N_LG, 0, NaN, -3)
83) (M____, N_LG, 0, NaN, 0)
84) (M____, N_LG, 0, NaN, 5)
85) (MMM__, N_G_, 0, -3, <null>)
86) (MMM__, N_G_, 0, -3, NaN)
87) (_M___, N_EG, 0, -3, -3)
88) (M____, N_LG, 0, -3, 0)
89) (M____, N_LG, 0, -3, 5)
90) (_M___, N_EG, 0, 0, <null>)
91) (_M___, N_EG, 0, 0, NaN)
92) (_M___, N_EG, 0, 0, -3)
93) (_M_M_, N_E_, 0, 0, 0)
94) (___M_, N_EL, 0, 0, 5)
95) (M____, N_LG, 0, 5, <null>)
96) (M____, N_LG, 0, 5, NaN)
97) (M____, N_LG, 0, 5, -3)
98) (M____, N_LG, 0, 5, 0)
99) (___M_, N_EL, 0, 5, 5)
100) (_M___, N_EG, 5, <null>, <null>)
101) (M____, N_LG, 5, <null>, NaN)
102) (M____, N_LG, 5, <null>, -3)
103) (M____, N_LG, 5, <null>, 0)
104) (M____, N_LG, 5, <null>, 5)
105) (MMM__, N_G_, 5, NaN, <null>)
106) (_M___, N_EG, 5, NaN, NaN)
107) (M____, N_LG, 5, NaN, -3)
108) (M____, N_LG, 5, NaN, 0)
109) (M____, N_LG, 5, NaN, 5)
110) (MMM__, N_G_, 5, -3, <null>)
111) (MMM__, N_G_, 5, -3, NaN)
112) (_M___, N_EG, 5, -3, -3)
113) (M____, N_LG, 5, -3, 0)
114) (M____, N_LG, 5, -3, 5)
115) (MMM__, N_G_, 5, 0, <null>)
116) (MMM__, N_G_, 5, 0, NaN)
117) (MMM__, N_G_, 5, 0, -3)
118) (_M___, N_EG, 5, 0, 0)
119) (M____, N_LG, 5, 0, 5)
120) (_M___, N_EG, 5, 5, <null>)
121) (_M___, N_EG, 5, 5, NaN)
122) (_M___, N_EG, 5, 5, -3)
123) (_M___, N_EG, 5, 5, 0)
124) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 36
    [0](30): ChainMap(*1: yr8q, ForEach(*2: zr8q, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr8q, ChainMap(*2: yr8q, ForEach(*3: zr8q, (*1, *2, *3))))
###
> G(xr4q, yr4q, zr4q)
G(xr4q, yr4q, zr4q) : (s, s, r4?, r4?, r4?)*
BndKind:Call, Type:(s, s, r4?, r4?, r4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xr4q), Call(∂.ChainMap([map:2] Global(yr4q), Call(∂.ForEach([map:3] Global(zr4q), (Scope(1), Scope(2), Scope(3)):(r4?, r4?, r4?)):(r4?, r4?, r4?)*)):(r4?, r4?, r4?)*)):(r4?, r4?, r4?)*)):(r4?, r4?, r4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):r4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):r4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):r4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, r4?, r4?, r4?)):(b, b, b, b, b, r4?, r4?, r4?))):(b, b, b, b, b, r4?, r4?, r4?)*)):(b, b, b, b, b, r4?, r4?, r4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(r4?, r4?, r4?))):(s, s, r4?, r4?, r4?))):(s, s, r4?, r4?, r4?)*))
ForEach_1(Arr<obj>, (Opt<r4>,Opt<r4>,Opt<r4>)):(bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)
      1) ldarg.1 [(Opt<r4>,Opt<r4>,Opt<r4>)]
      5) ldfld (Opt<r4>,Opt<r4>,Opt<r4>)::_F0:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.0 [Opt<r4>]
      1) ldarg.1 [(Opt<r4>,Opt<r4>,Opt<r4>)]
      5) ldfld (Opt<r4>,Opt<r4>,Opt<r4>)::_F1:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.1 [Opt<r4>]
      1) ldarg.1 [(Opt<r4>,Opt<r4>,Opt<r4>)]
      5) ldfld (Opt<r4>,Opt<r4>,Opt<r4>)::_F2:Opt<r4>
      5) call static WrapFuncGen::Exec(Opt<r4>):Opt<r4>
      1) stloc.2 [Opt<r4>]
      5) newobj (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)()
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Eq(r4, r4):bool
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Ge(r4, r4):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Ge(r4, r4):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Gt(r4, r4):bool
      5) brfalse [8]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Gt(r4, r4):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Le(r4, r4):bool
      5) brfalse [12]
  Label [11]:
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::GetValueOrDefault():r4
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Le(r4, r4):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<r4> (1)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<r4> (0)]
      5) call Opt<r4>::GetValueOrDefault():r4
      1) ldloc.3 [r4]
      5) call static NumUtil::Lt(r4, r4):bool
      5) brfalse [15]
  Label [16]:
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [r4]
      2) ldloca.s [Opt<r4> (2)]
      5) call Opt<r4>::GetValueOrDefault():r4
      5) call static NumUtil::Lt(r4, r4):bool
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F5:Opt<r4>
      1) dup
      1) ldloc.1 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F6:Opt<r4>
      1) dup
      1) ldloc.2 [Opt<r4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<r4>,Opt<r4>,Opt<r4>)::_F7:Opt<r4>
      1) ret
  Total Size: 563

Func sig: (<ctx>:x, xr4q:r4?*, yr4q:r4?*, zr4q:r4?*) to (s, s, r4?, r4?, r4?)*
Sequence: Seq<(str,str,Opt<r4>,Opt<r4>,Opt<r4>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, NaN)
 2) (___M_, N_EL, <null>, <null>, -3)
 3) (___M_, N_EL, <null>, <null>, 0)
 4) (___M_, N_EL, <null>, <null>, 5)
 5) (M____, N_LG, <null>, NaN, <null>)
 6) (___M_, N_EL, <null>, NaN, NaN)
 7) (M__MM, N_L_, <null>, NaN, -3)
 8) (M__MM, N_L_, <null>, NaN, 0)
 9) (M__MM, N_L_, <null>, NaN, 5)
10) (M____, N_LG, <null>, -3, <null>)
11) (M____, N_LG, <null>, -3, NaN)
12) (___M_, N_EL, <null>, -3, -3)
13) (M__MM, N_L_, <null>, -3, 0)
14) (M__MM, N_L_, <null>, -3, 5)
15) (M____, N_LG, <null>, 0, <null>)
16) (M____, N_LG, <null>, 0, NaN)
17) (M____, N_LG, <null>, 0, -3)
18) (___M_, N_EL, <null>, 0, 0)
19) (M__MM, N_L_, <null>, 0, 5)
20) (M____, N_LG, <null>, 5, <null>)
21) (M____, N_LG, <null>, 5, NaN)
22) (M____, N_LG, <null>, 5, -3)
23) (M____, N_LG, <null>, 5, 0)
24) (___M_, N_EL, <null>, 5, 5)
25) (_M___, N_EG, NaN, <null>, <null>)
26) (M____, N_LG, NaN, <null>, NaN)
27) (M____, N_LG, NaN, <null>, -3)
28) (M____, N_LG, NaN, <null>, 0)
29) (M____, N_LG, NaN, <null>, 5)
30) (_M___, N_EG, NaN, NaN, <null>)
31) (_M_M_, N_E_, NaN, NaN, NaN)
32) (___M_, N_EL, NaN, NaN, -3)
33) (___M_, N_EL, NaN, NaN, 0)
34) (___M_, N_EL, NaN, NaN, 5)
35) (M____, N_LG, NaN, -3, <null>)
36) (M____, N_LG, NaN, -3, NaN)
37) (___M_, N_EL, NaN, -3, -3)
38) (M__MM, N_L_, NaN, -3, 0)
39) (M__MM, N_L_, NaN, -3, 5)
40) (M____, N_LG, NaN, 0, <null>)
41) (M____, N_LG, NaN, 0, NaN)
42) (M____, N_LG, NaN, 0, -3)
43) (___M_, N_EL, NaN, 0, 0)
44) (M__MM, N_L_, NaN, 0, 5)
45) (M____, N_LG, NaN, 5, <null>)
46) (M____, N_LG, NaN, 5, NaN)
47) (M____, N_LG, NaN, 5, -3)
48) (M____, N_LG, NaN, 5, 0)
49) (___M_, N_EL, NaN, 5, 5)
50) (_M___, N_EG, -3, <null>, <null>)
51) (M____, N_LG, -3, <null>, NaN)
52) (M____, N_LG, -3, <null>, -3)
53) (M____, N_LG, -3, <null>, 0)
54) (M____, N_LG, -3, <null>, 5)
55) (MMM__, N_G_, -3, NaN, <null>)
56) (_M___, N_EG, -3, NaN, NaN)
57) (M____, N_LG, -3, NaN, -3)
58) (M____, N_LG, -3, NaN, 0)
59) (M____, N_LG, -3, NaN, 5)
60) (_M___, N_EG, -3, -3, <null>)
61) (_M___, N_EG, -3, -3, NaN)
62) (_M_M_, N_E_, -3, -3, -3)
63) (___M_, N_EL, -3, -3, 0)
64) (___M_, N_EL, -3, -3, 5)
65) (M____, N_LG, -3, 0, <null>)
66) (M____, N_LG, -3, 0, NaN)
67) (M____, N_LG, -3, 0, -3)
68) (___M_, N_EL, -3, 0, 0)
69) (M__MM, N_L_, -3, 0, 5)
70) (M____, N_LG, -3, 5, <null>)
71) (M____, N_LG, -3, 5, NaN)
72) (M____, N_LG, -3, 5, -3)
73) (M____, N_LG, -3, 5, 0)
74) (___M_, N_EL, -3, 5, 5)
75) (_M___, N_EG, 0, <null>, <null>)
76) (M____, N_LG, 0, <null>, NaN)
77) (M____, N_LG, 0, <null>, -3)
78) (M____, N_LG, 0, <null>, 0)
79) (M____, N_LG, 0, <null>, 5)
80) (MMM__, N_G_, 0, NaN, <null>)
81) (_M___, N_EG, 0, NaN, NaN)
82) (M____, N_LG, 0, NaN, -3)
83) (M____, N_LG, 0, NaN, 0)
84) (M____, N_LG, 0, NaN, 5)
85) (MMM__, N_G_, 0, -3, <null>)
86) (MMM__, N_G_, 0, -3, NaN)
87) (_M___, N_EG, 0, -3, -3)
88) (M____, N_LG, 0, -3, 0)
89) (M____, N_LG, 0, -3, 5)
90) (_M___, N_EG, 0, 0, <null>)
91) (_M___, N_EG, 0, 0, NaN)
92) (_M___, N_EG, 0, 0, -3)
93) (_M_M_, N_E_, 0, 0, 0)
94) (___M_, N_EL, 0, 0, 5)
95) (M____, N_LG, 0, 5, <null>)
96) (M____, N_LG, 0, 5, NaN)
97) (M____, N_LG, 0, 5, -3)
98) (M____, N_LG, 0, 5, 0)
99) (___M_, N_EL, 0, 5, 5)
100) (_M___, N_EG, 5, <null>, <null>)
101) (M____, N_LG, 5, <null>, NaN)
102) (M____, N_LG, 5, <null>, -3)
103) (M____, N_LG, 5, <null>, 0)
104) (M____, N_LG, 5, <null>, 5)
105) (MMM__, N_G_, 5, NaN, <null>)
106) (_M___, N_EG, 5, NaN, NaN)
107) (M____, N_LG, 5, NaN, -3)
108) (M____, N_LG, 5, NaN, 0)
109) (M____, N_LG, 5, NaN, 5)
110) (MMM__, N_G_, 5, -3, <null>)
111) (MMM__, N_G_, 5, -3, NaN)
112) (_M___, N_EG, 5, -3, -3)
113) (M____, N_LG, 5, -3, 0)
114) (M____, N_LG, 5, -3, 5)
115) (MMM__, N_G_, 5, 0, <null>)
116) (MMM__, N_G_, 5, 0, NaN)
117) (MMM__, N_G_, 5, 0, -3)
118) (_M___, N_EG, 5, 0, 0)
119) (M____, N_LG, 5, 0, 5)
120) (_M___, N_EG, 5, 5, <null>)
121) (_M___, N_EG, 5, 5, NaN)
122) (_M___, N_EG, 5, 5, -3)
123) (_M___, N_EG, 5, 5, 0)
124) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 36
    [0](30): ChainMap(*1: yr4q, ForEach(*2: zr4q, (*3x, *1, *2)))
    [1](6): ChainMap(*1: xr4q, ChainMap(*2: yr4q, ForEach(*3: zr4q, (*1, *2, *3))))
###
> G(xi_q, yi_q, zi_q)
G(xi_q, yi_q, zi_q) : (s, s, i?, i?, i?)*
BndKind:Call, Type:(s, s, i?, i?, i?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi_q), Call(∂.ChainMap([map:2] Global(yi_q), Call(∂.ForEach([map:3] Global(zi_q), (Scope(1), Scope(2), Scope(3)):(i?, i?, i?)):(i?, i?, i?)*)):(i?, i?, i?)*)):(i?, i?, i?)*)):(i?, i?, i?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i?, i?, i?)):(b, b, b, b, b, i?, i?, i?))):(b, b, b, b, b, i?, i?, i?)*)):(b, b, b, b, b, i?, i?, i?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i?, i?, i?))):(s, s, i?, i?, i?))):(s, s, i?, i?, i?)*))
ForEach_1(Arr<obj>, (Opt<ia>,Opt<ia>,Opt<ia>)):(bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)
      1) ldarg.1 [(Opt<ia>,Opt<ia>,Opt<ia>)]
      5) ldfld (Opt<ia>,Opt<ia>,Opt<ia>)::_F0:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.0 [Opt<ia>]
      1) ldarg.1 [(Opt<ia>,Opt<ia>,Opt<ia>)]
      5) ldfld (Opt<ia>,Opt<ia>,Opt<ia>)::_F1:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.1 [Opt<ia>]
      1) ldarg.1 [(Opt<ia>,Opt<ia>,Opt<ia>)]
      5) ldfld (Opt<ia>,Opt<ia>,Opt<ia>)::_F2:Opt<ia>
      5) call static WrapFuncGen::Exec(Opt<ia>):Opt<ia>
      1) stloc.2 [Opt<ia>]
      5) newobj (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)()
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Equality(ia, ia):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_Inequality(ia, ia):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThanOrEqual(ia, ia):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) brfalse [8]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_GreaterThan(ia, ia):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) brfalse [12]
  Label [11]:
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::GetValueOrDefault():ia
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThanOrEqual(ia, ia):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<ia> (1)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<ia> (0)]
      5) call Opt<ia>::GetValueOrDefault():ia
      1) ldloc.3 [ia]
      5) call static ia::op_LessThan(ia, ia):bool
      5) brfalse [15]
  Label [16]:
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [ia]
      2) ldloca.s [Opt<ia> (2)]
      5) call Opt<ia>::GetValueOrDefault():ia
      5) call static ia::op_LessThan(ia, ia):bool
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F5:Opt<ia>
      1) dup
      1) ldloc.1 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F6:Opt<ia>
      1) dup
      1) ldloc.2 [Opt<ia>]
      5) stfld (bool,bool,bool,bool,bool,Opt<ia>,Opt<ia>,Opt<ia>)::_F7:Opt<ia>
      1) ret
  Total Size: 560

Func sig: (<ctx>:x, xi_q:i?*, yi_q:i?*, zi_q:i?*) to (s, s, i?, i?, i?)*
Sequence: Seq<(str,str,Opt<ia>,Opt<ia>,Opt<ia>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, -3)
 2) (___M_, N_EL, <null>, <null>, 0)
 3) (___M_, N_EL, <null>, <null>, 5)
 4) (M____, N_LG, <null>, -3, <null>)
 5) (___M_, N_EL, <null>, -3, -3)
 6) (M__MM, N_L_, <null>, -3, 0)
 7) (M__MM, N_L_, <null>, -3, 5)
 8) (M____, N_LG, <null>, 0, <null>)
 9) (M____, N_LG, <null>, 0, -3)
10) (___M_, N_EL, <null>, 0, 0)
11) (M__MM, N_L_, <null>, 0, 5)
12) (M____, N_LG, <null>, 5, <null>)
13) (M____, N_LG, <null>, 5, -3)
14) (M____, N_LG, <null>, 5, 0)
15) (___M_, N_EL, <null>, 5, 5)
16) (_M___, N_EG, -3, <null>, <null>)
17) (M____, N_LG, -3, <null>, -3)
18) (M____, N_LG, -3, <null>, 0)
19) (M____, N_LG, -3, <null>, 5)
20) (_M___, N_EG, -3, -3, <null>)
21) (_M_M_, N_E_, -3, -3, -3)
22) (___M_, N_EL, -3, -3, 0)
23) (___M_, N_EL, -3, -3, 5)
24) (M____, N_LG, -3, 0, <null>)
25) (M____, N_LG, -3, 0, -3)
26) (___M_, N_EL, -3, 0, 0)
27) (M__MM, N_L_, -3, 0, 5)
28) (M____, N_LG, -3, 5, <null>)
29) (M____, N_LG, -3, 5, -3)
30) (M____, N_LG, -3, 5, 0)
31) (___M_, N_EL, -3, 5, 5)
32) (_M___, N_EG, 0, <null>, <null>)
33) (M____, N_LG, 0, <null>, -3)
34) (M____, N_LG, 0, <null>, 0)
35) (M____, N_LG, 0, <null>, 5)
36) (MMM__, N_G_, 0, -3, <null>)
37) (_M___, N_EG, 0, -3, -3)
38) (M____, N_LG, 0, -3, 0)
39) (M____, N_LG, 0, -3, 5)
40) (_M___, N_EG, 0, 0, <null>)
41) (_M___, N_EG, 0, 0, -3)
42) (_M_M_, N_E_, 0, 0, 0)
43) (___M_, N_EL, 0, 0, 5)
44) (M____, N_LG, 0, 5, <null>)
45) (M____, N_LG, 0, 5, -3)
46) (M____, N_LG, 0, 5, 0)
47) (___M_, N_EL, 0, 5, 5)
48) (_M___, N_EG, 5, <null>, <null>)
49) (M____, N_LG, 5, <null>, -3)
50) (M____, N_LG, 5, <null>, 0)
51) (M____, N_LG, 5, <null>, 5)
52) (MMM__, N_G_, 5, -3, <null>)
53) (_M___, N_EG, 5, -3, -3)
54) (M____, N_LG, 5, -3, 0)
55) (M____, N_LG, 5, -3, 5)
56) (MMM__, N_G_, 5, 0, <null>)
57) (MMM__, N_G_, 5, 0, -3)
58) (_M___, N_EG, 5, 0, 0)
59) (M____, N_LG, 5, 0, 5)
60) (_M___, N_EG, 5, 5, <null>)
61) (_M___, N_EG, 5, 5, -3)
62) (_M___, N_EG, 5, 5, 0)
63) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yi_q, ForEach(*2: zi_q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi_q, ChainMap(*2: yi_q, ForEach(*3: zi_q, (*1, *2, *3))))
###
> G(xi2q, yi2q, zi2q)
G(xi2q, yi2q, zi2q) : (s, s, i2?, i2?, i2?)*
BndKind:Call, Type:(s, s, i2?, i2?, i2?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xi2q), Call(∂.ChainMap([map:2] Global(yi2q), Call(∂.ForEach([map:3] Global(zi2q), (Scope(1), Scope(2), Scope(3)):(i2?, i2?, i2?)):(i2?, i2?, i2?)*)):(i2?, i2?, i2?)*)):(i2?, i2?, i2?)*)):(i2?, i2?, i2?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):i2?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):i2?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):i2?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, i2?, i2?, i2?)):(b, b, b, b, b, i2?, i2?, i2?))):(b, b, b, b, b, i2?, i2?, i2?)*)):(b, b, b, b, b, i2?, i2?, i2?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(i2?, i2?, i2?))):(s, s, i2?, i2?, i2?))):(s, s, i2?, i2?, i2?)*))
ForEach_1(Arr<obj>, (Opt<i2>,Opt<i2>,Opt<i2>)):(bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)
      1) ldarg.1 [(Opt<i2>,Opt<i2>,Opt<i2>)]
      5) ldfld (Opt<i2>,Opt<i2>,Opt<i2>)::_F0:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.0 [Opt<i2>]
      1) ldarg.1 [(Opt<i2>,Opt<i2>,Opt<i2>)]
      5) ldfld (Opt<i2>,Opt<i2>,Opt<i2>)::_F1:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.1 [Opt<i2>]
      1) ldarg.1 [(Opt<i2>,Opt<i2>,Opt<i2>)]
      5) ldfld (Opt<i2>,Opt<i2>,Opt<i2>)::_F2:Opt<i2>
      5) call static WrapFuncGen::Exec(Opt<i2>):Opt<i2>
      1) stloc.2 [Opt<i2>]
      5) newobj (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)()
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) blt [5]
  Label [4]:
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.3 [i2]
      5) ble [8]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      5) bgt [12]
  Label [11]:
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) cgt
      1) ldc.i4.0
      2) ceq
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [15]
      2) ldloca.s [Opt<i2> (1)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) stloc.3 [i2]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [16]
      2) ldloca.s [Opt<i2> (0)]
      5) call Opt<i2>::GetValueOrDefault():i2
      1) ldloc.3 [i2]
      5) bge [15]
  Label [16]:
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [i2]
      2) ldloca.s [Opt<i2> (2)]
      5) call Opt<i2>::GetValueOrDefault():i2
      2) clt
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F5:Opt<i2>
      1) dup
      1) ldloc.1 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F6:Opt<i2>
      1) dup
      1) ldloc.2 [Opt<i2>]
      5) stfld (bool,bool,bool,bool,bool,Opt<i2>,Opt<i2>,Opt<i2>)::_F7:Opt<i2>
      1) ret
  Total Size: 529

Func sig: (<ctx>:x, xi2q:i2?*, yi2q:i2?*, zi2q:i2?*) to (s, s, i2?, i2?, i2?)*
Sequence: Seq<(str,str,Opt<i2>,Opt<i2>,Opt<i2>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, -3)
 2) (___M_, N_EL, <null>, <null>, 0)
 3) (___M_, N_EL, <null>, <null>, 5)
 4) (M____, N_LG, <null>, -3, <null>)
 5) (___M_, N_EL, <null>, -3, -3)
 6) (M__MM, N_L_, <null>, -3, 0)
 7) (M__MM, N_L_, <null>, -3, 5)
 8) (M____, N_LG, <null>, 0, <null>)
 9) (M____, N_LG, <null>, 0, -3)
10) (___M_, N_EL, <null>, 0, 0)
11) (M__MM, N_L_, <null>, 0, 5)
12) (M____, N_LG, <null>, 5, <null>)
13) (M____, N_LG, <null>, 5, -3)
14) (M____, N_LG, <null>, 5, 0)
15) (___M_, N_EL, <null>, 5, 5)
16) (_M___, N_EG, -3, <null>, <null>)
17) (M____, N_LG, -3, <null>, -3)
18) (M____, N_LG, -3, <null>, 0)
19) (M____, N_LG, -3, <null>, 5)
20) (_M___, N_EG, -3, -3, <null>)
21) (_M_M_, N_E_, -3, -3, -3)
22) (___M_, N_EL, -3, -3, 0)
23) (___M_, N_EL, -3, -3, 5)
24) (M____, N_LG, -3, 0, <null>)
25) (M____, N_LG, -3, 0, -3)
26) (___M_, N_EL, -3, 0, 0)
27) (M__MM, N_L_, -3, 0, 5)
28) (M____, N_LG, -3, 5, <null>)
29) (M____, N_LG, -3, 5, -3)
30) (M____, N_LG, -3, 5, 0)
31) (___M_, N_EL, -3, 5, 5)
32) (_M___, N_EG, 0, <null>, <null>)
33) (M____, N_LG, 0, <null>, -3)
34) (M____, N_LG, 0, <null>, 0)
35) (M____, N_LG, 0, <null>, 5)
36) (MMM__, N_G_, 0, -3, <null>)
37) (_M___, N_EG, 0, -3, -3)
38) (M____, N_LG, 0, -3, 0)
39) (M____, N_LG, 0, -3, 5)
40) (_M___, N_EG, 0, 0, <null>)
41) (_M___, N_EG, 0, 0, -3)
42) (_M_M_, N_E_, 0, 0, 0)
43) (___M_, N_EL, 0, 0, 5)
44) (M____, N_LG, 0, 5, <null>)
45) (M____, N_LG, 0, 5, -3)
46) (M____, N_LG, 0, 5, 0)
47) (___M_, N_EL, 0, 5, 5)
48) (_M___, N_EG, 5, <null>, <null>)
49) (M____, N_LG, 5, <null>, -3)
50) (M____, N_LG, 5, <null>, 0)
51) (M____, N_LG, 5, <null>, 5)
52) (MMM__, N_G_, 5, -3, <null>)
53) (_M___, N_EG, 5, -3, -3)
54) (M____, N_LG, 5, -3, 0)
55) (M____, N_LG, 5, -3, 5)
56) (MMM__, N_G_, 5, 0, <null>)
57) (MMM__, N_G_, 5, 0, -3)
58) (_M___, N_EG, 5, 0, 0)
59) (M____, N_LG, 5, 0, 5)
60) (_M___, N_EG, 5, 5, <null>)
61) (_M___, N_EG, 5, 5, -3)
62) (_M___, N_EG, 5, 5, 0)
63) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yi2q, ForEach(*2: zi2q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xi2q, ChainMap(*2: yi2q, ForEach(*3: zi2q, (*1, *2, *3))))
###
> G(xu4q, yu4q, zu4q)
G(xu4q, yu4q, zu4q) : (s, s, u4?, u4?, u4?)*
BndKind:Call, Type:(s, s, u4?, u4?, u4?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xu4q), Call(∂.ChainMap([map:2] Global(yu4q), Call(∂.ForEach([map:3] Global(zu4q), (Scope(1), Scope(2), Scope(3)):(u4?, u4?, u4?)):(u4?, u4?, u4?)*)):(u4?, u4?, u4?)*)):(u4?, u4?, u4?)*)):(u4?, u4?, u4?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):u4?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):u4?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):u4?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, u4?, u4?, u4?)):(b, b, b, b, b, u4?, u4?, u4?))):(b, b, b, b, b, u4?, u4?, u4?)*)):(b, b, b, b, b, u4?, u4?, u4?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(u4?, u4?, u4?))):(s, s, u4?, u4?, u4?))):(s, s, u4?, u4?, u4?)*))
ForEach_1(Arr<obj>, (Opt<u4>,Opt<u4>,Opt<u4>)):(bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)
      1) ldarg.1 [(Opt<u4>,Opt<u4>,Opt<u4>)]
      5) ldfld (Opt<u4>,Opt<u4>,Opt<u4>)::_F0:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.0 [Opt<u4>]
      1) ldarg.1 [(Opt<u4>,Opt<u4>,Opt<u4>)]
      5) ldfld (Opt<u4>,Opt<u4>,Opt<u4>)::_F1:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.1 [Opt<u4>]
      1) ldarg.1 [(Opt<u4>,Opt<u4>,Opt<u4>)]
      5) ldfld (Opt<u4>,Opt<u4>,Opt<u4>)::_F2:Opt<u4>
      5) call static WrapFuncGen::Exec(Opt<u4>):Opt<u4>
      1) stloc.2 [Opt<u4>]
      5) newobj (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)()
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) beq [1]
  Label [0]:
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ceq
      1) ldc.i4.0
      2) ceq
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) blt.un [5]
  Label [4]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      1) ldc.i4.0
      2) ceq
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) ble.un [8]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      5) bgt.un [12]
  Label [11]:
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) cgt.un
      1) ldc.i4.0
      2) ceq
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<u4> (1)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<u4> (0)]
      5) call Opt<u4>::GetValueOrDefault():u4
      1) ldloc.3 [u4]
      5) bge.un [15]
  Label [16]:
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [u4]
      2) ldloca.s [Opt<u4> (2)]
      5) call Opt<u4>::GetValueOrDefault():u4
      2) clt.un
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F5:Opt<u4>
      1) dup
      1) ldloc.1 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F6:Opt<u4>
      1) dup
      1) ldloc.2 [Opt<u4>]
      5) stfld (bool,bool,bool,bool,bool,Opt<u4>,Opt<u4>,Opt<u4>)::_F7:Opt<u4>
      1) ret
  Total Size: 529

Func sig: (<ctx>:x, xu4q:u4?*, yu4q:u4?*, zu4q:u4?*) to (s, s, u4?, u4?, u4?)*
Sequence: Seq<(str,str,Opt<u4>,Opt<u4>,Opt<u4>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, 0)
 2) (___M_, N_EL, <null>, <null>, 3)
 3) (___M_, N_EL, <null>, <null>, 5)
 4) (M____, N_LG, <null>, 0, <null>)
 5) (___M_, N_EL, <null>, 0, 0)
 6) (M__MM, N_L_, <null>, 0, 3)
 7) (M__MM, N_L_, <null>, 0, 5)
 8) (M____, N_LG, <null>, 3, <null>)
 9) (M____, N_LG, <null>, 3, 0)
10) (___M_, N_EL, <null>, 3, 3)
11) (M__MM, N_L_, <null>, 3, 5)
12) (M____, N_LG, <null>, 5, <null>)
13) (M____, N_LG, <null>, 5, 0)
14) (M____, N_LG, <null>, 5, 3)
15) (___M_, N_EL, <null>, 5, 5)
16) (_M___, N_EG, 0, <null>, <null>)
17) (M____, N_LG, 0, <null>, 0)
18) (M____, N_LG, 0, <null>, 3)
19) (M____, N_LG, 0, <null>, 5)
20) (_M___, N_EG, 0, 0, <null>)
21) (_M_M_, N_E_, 0, 0, 0)
22) (___M_, N_EL, 0, 0, 3)
23) (___M_, N_EL, 0, 0, 5)
24) (M____, N_LG, 0, 3, <null>)
25) (M____, N_LG, 0, 3, 0)
26) (___M_, N_EL, 0, 3, 3)
27) (M__MM, N_L_, 0, 3, 5)
28) (M____, N_LG, 0, 5, <null>)
29) (M____, N_LG, 0, 5, 0)
30) (M____, N_LG, 0, 5, 3)
31) (___M_, N_EL, 0, 5, 5)
32) (_M___, N_EG, 3, <null>, <null>)
33) (M____, N_LG, 3, <null>, 0)
34) (M____, N_LG, 3, <null>, 3)
35) (M____, N_LG, 3, <null>, 5)
36) (MMM__, N_G_, 3, 0, <null>)
37) (_M___, N_EG, 3, 0, 0)
38) (M____, N_LG, 3, 0, 3)
39) (M____, N_LG, 3, 0, 5)
40) (_M___, N_EG, 3, 3, <null>)
41) (_M___, N_EG, 3, 3, 0)
42) (_M_M_, N_E_, 3, 3, 3)
43) (___M_, N_EL, 3, 3, 5)
44) (M____, N_LG, 3, 5, <null>)
45) (M____, N_LG, 3, 5, 0)
46) (M____, N_LG, 3, 5, 3)
47) (___M_, N_EL, 3, 5, 5)
48) (_M___, N_EG, 5, <null>, <null>)
49) (M____, N_LG, 5, <null>, 0)
50) (M____, N_LG, 5, <null>, 3)
51) (M____, N_LG, 5, <null>, 5)
52) (MMM__, N_G_, 5, 0, <null>)
53) (_M___, N_EG, 5, 0, 0)
54) (M____, N_LG, 5, 0, 3)
55) (M____, N_LG, 5, 0, 5)
56) (MMM__, N_G_, 5, 3, <null>)
57) (MMM__, N_G_, 5, 3, 0)
58) (_M___, N_EG, 5, 3, 3)
59) (M____, N_LG, 5, 3, 5)
60) (_M___, N_EG, 5, 5, <null>)
61) (_M___, N_EG, 5, 5, 0)
62) (_M___, N_EG, 5, 5, 3)
63) (_M_M_, N_E_, 5, 5, 5)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yu4q, ForEach(*2: zu4q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xu4q, ChainMap(*2: yu4q, ForEach(*3: zu4q, (*1, *2, *3))))
###
> G(xd_q, yd_q, zd_q)
G(xd_q, yd_q, zd_q) : (s, s, d?, d?, d?)*
BndKind:Call, Type:(s, s, d?, d?, d?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xd_q), Call(∂.ChainMap([map:2] Global(yd_q), Call(∂.ForEach([map:3] Global(zd_q), (Scope(1), Scope(2), Scope(3)):(d?, d?, d?)):(d?, d?, d?)*)):(d?, d?, d?)*)):(d?, d?, d?)*)):(d?, d?, d?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):d?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):d?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):d?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, d?, d?, d?)):(b, b, b, b, b, d?, d?, d?))):(b, b, b, b, b, d?, d?, d?)*)):(b, b, b, b, b, d?, d?, d?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(d?, d?, d?))):(s, s, d?, d?, d?))):(s, s, d?, d?, d?)*))
ForEach_1(Arr<obj>, (Opt<Date>,Opt<Date>,Opt<Date>)):(bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)
      1) ldarg.1 [(Opt<Date>,Opt<Date>,Opt<Date>)]
      5) ldfld (Opt<Date>,Opt<Date>,Opt<Date>)::_F0:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.0 [Opt<Date>]
      1) ldarg.1 [(Opt<Date>,Opt<Date>,Opt<Date>)]
      5) ldfld (Opt<Date>,Opt<Date>,Opt<Date>)::_F1:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.1 [Opt<Date>]
      1) ldarg.1 [(Opt<Date>,Opt<Date>,Opt<Date>)]
      5) ldfld (Opt<Date>,Opt<Date>,Opt<Date>)::_F2:Opt<Date>
      5) call static WrapFuncGen::Exec(Opt<Date>):Opt<Date>
      1) stloc.2 [Opt<Date>]
      5) newobj (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)()
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Equality(Date, Date):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_Inequality(Date, Date):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThanOrEqual(Date, Date):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) brfalse [8]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_GreaterThan(Date, Date):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) brfalse [12]
  Label [11]:
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::GetValueOrDefault():Date
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThanOrEqual(Date, Date):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Date> (1)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<Date> (0)]
      5) call Opt<Date>::GetValueOrDefault():Date
      1) ldloc.3 [Date]
      5) call static Date::op_LessThan(Date, Date):bool
      5) brfalse [15]
  Label [16]:
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [Date]
      2) ldloca.s [Opt<Date> (2)]
      5) call Opt<Date>::GetValueOrDefault():Date
      5) call static Date::op_LessThan(Date, Date):bool
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F5:Opt<Date>
      1) dup
      1) ldloc.1 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F6:Opt<Date>
      1) dup
      1) ldloc.2 [Opt<Date>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Date>,Opt<Date>,Opt<Date>)::_F7:Opt<Date>
      1) ret
  Total Size: 560

Func sig: (<ctx>:x, xd_q:d?*, yd_q:d?*, zd_q:d?*) to (s, s, d?, d?, d?)*
Sequence: Seq<(str,str,Opt<Date>,Opt<Date>,Opt<Date>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, DT(1900, 1, 1, 0, 0, 0, 0))
 2) (___M_, N_EL, <null>, <null>, DT(2023, 7, 1, 0, 0, 0, 0))
 3) (___M_, N_EL, <null>, <null>, DT(2023, 9, 1, 0, 0, 0, 0))
 4) (M____, N_LG, <null>, DT(1900, 1, 1, 0, 0, 0, 0), <null>)
 5) (___M_, N_EL, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
 6) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
 7) (M__MM, N_L_, <null>, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
 8) (M____, N_LG, <null>, DT(2023, 7, 1, 0, 0, 0, 0), <null>)
 9) (M____, N_LG, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
10) (___M_, N_EL, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
11) (M__MM, N_L_, <null>, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
12) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), <null>)
13) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
14) (M____, N_LG, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
15) (___M_, N_EL, <null>, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
16) (_M___, N_EG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, <null>)
17) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
18) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
19) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
20) (_M___, N_EG, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
21) (_M_M_, N_E_, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
22) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
23) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
24) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
25) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
26) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
27) (M__MM, N_L_, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
28) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
29) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
30) (M____, N_LG, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
31) (___M_, N_EL, DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
32) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, <null>)
33) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
34) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
35) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
36) (MMM__, N_G_, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
37) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
38) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
39) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
40) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
41) (_M___, N_EG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
42) (_M_M_, N_E_, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
43) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
44) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
45) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
46) (M____, N_LG, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
47) (___M_, N_EL, DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
48) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, <null>)
49) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(1900, 1, 1, 0, 0, 0, 0))
50) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 7, 1, 0, 0, 0, 0))
51) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), <null>, DT(2023, 9, 1, 0, 0, 0, 0))
52) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), <null>)
53) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
54) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
55) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
56) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), <null>)
57) (MMM__, N_G_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
58) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
59) (M____, N_LG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
60) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), <null>)
61) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(1900, 1, 1, 0, 0, 0, 0))
62) (_M___, N_EG, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 7, 1, 0, 0, 0, 0))
63) (_M_M_, N_E_, DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0), DT(2023, 9, 1, 0, 0, 0, 0))
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yd_q, ForEach(*2: zd_q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xd_q, ChainMap(*2: yd_q, ForEach(*3: zd_q, (*1, *2, *3))))
###
> G(xt_q, yt_q, zt_q)
G(xt_q, yt_q, zt_q) : (s, s, t?, t?, t?)*
BndKind:Call, Type:(s, s, t?, t?, t?)*, Bnd:(Call(∂.ForEach([map:8] Call(∂.Test.Wrap(Call(∂.ForEach([map:4] Call(∂.Test.Wrap(Call(∂.ChainMap([map:1] Global(xt_q), Call(∂.ChainMap([map:2] Global(yt_q), Call(∂.ForEach([map:3] Global(zt_q), (Scope(1), Scope(2), Scope(3)):(t?, t?, t?)):(t?, t?, t?)*)):(t?, t?, t?)*)):(t?, t?, t?)*)):(t?, t?, t?)*), Call(∂.With([with:5] Call(∂.Test.Wrap(GetSlot(Scope(4), 0)):t?), [with:6] Call(∂.Test.Wrap(GetSlot(Scope(4), 1)):t?), [with:7] Call(∂.Test.Wrap(GetSlot(Scope(4), 2)):t?), (Cmp(Scope(5) !@= Scope(6) !@= Scope(7)), Cmp(Scope(5) @>= Scope(6) @>= Scope(7)), Cmp(Scope(5) @> Scope(6) @> Scope(7)), Cmp(Scope(5) @<= Scope(6) @<= Scope(7)), Cmp(Scope(5) @< Scope(6) @< Scope(7)), Scope(5), Scope(6), Scope(7)):(b, b, b, b, b, t?, t?, t?)):(b, b, b, b, b, t?, t?, t?))):(b, b, b, b, b, t?, t?, t?)*)):(b, b, b, b, b, t?, t?, t?)*), Call(∂.With([with:9] StrConcat(If(GetSlot(Scope(8), 0), str(M), str(_)), If(GetSlot(Scope(8), 1), str(M), str(_)), If(GetSlot(Scope(8), 2), str(M), str(_)), If(GetSlot(Scope(8), 3), str(M), str(_)), If(GetSlot(Scope(8), 4), str(M), str(_))), TupleConcat((Scope(9), If(Cmp(Scope(9) @= str(_____)), str(__), If(Cmp(Scope(9) @= str(M_M_M)), str(EQ), If(Cmp(Scope(9) @= str(__M__)), str(LE), If(Cmp(Scope(9) @= str(_MM__)), str(LT), If(Cmp(Scope(9) @= str(____M)), str(GE), If(Cmp(Scope(9) @= str(___MM)), str(GT), If(Cmp(Scope(9) @= str(MMMMM)), str(N___), If(Cmp(Scope(9) @= str(_M_M_)), str(N_E_), If(Cmp(Scope(9) @= str(M__MM)), str(N_L_), If(Cmp(Scope(9) @= str(MMM__)), str(N_G_), If(Cmp(Scope(9) @= str(___M_)), str(N_EL), If(Cmp(Scope(9) @= str(_M___)), str(N_EG), If(Cmp(Scope(9) @= str(M____)), str(N_LG), str(***BAD!***))))))))))))))):(s, s), GetSlice(Scope(8), 5:8:1):(t?, t?, t?))):(s, s, t?, t?, t?))):(s, s, t?, t?, t?)*))
ForEach_1(Arr<obj>, (Opt<Time>,Opt<Time>,Opt<Time>)):(bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)
      1) ldarg.1 [(Opt<Time>,Opt<Time>,Opt<Time>)]
      5) ldfld (Opt<Time>,Opt<Time>,Opt<Time>)::_F0:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.0 [Opt<Time>]
      1) ldarg.1 [(Opt<Time>,Opt<Time>,Opt<Time>)]
      5) ldfld (Opt<Time>,Opt<Time>,Opt<Time>)::_F1:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.1 [Opt<Time>]
      1) ldarg.1 [(Opt<Time>,Opt<Time>,Opt<Time>)]
      5) ldfld (Opt<Time>,Opt<Time>,Opt<Time>)::_F2:Opt<Time>
      5) call static WrapFuncGen::Exec(Opt<Time>):Opt<Time>
      1) stloc.2 [Opt<Time>]
      5) newobj (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)()
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) bne.un [0]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Equality(Time, Time):bool
      5) brtrue [1]
  Label [0]:
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) bne.un [2]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_Inequality(Time, Time):bool
      5) br [3]
  Label [2]:
      1) ldc.i4.1
      5) br [3]
  Label [1]:
      1) ldc.i4.0
  Label [3]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F0:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [4]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) brfalse [5]
  Label [4]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [6]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [5]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThanOrEqual(Time, Time):bool
      5) br [7]
  Label [6]:
      1) ldc.i4.1
      5) br [7]
  Label [5]:
      1) ldc.i4.0
  Label [7]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F1:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [8]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [8]
      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>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) brfalse [8]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [9]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_GreaterThan(Time, Time):bool
      5) br [10]
  Label [9]:
      1) ldc.i4.1
      5) br [10]
  Label [8]:
      1) ldc.i4.0
  Label [10]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F2:bool
      1) dup
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [11]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) brfalse [12]
  Label [11]:
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [13]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [12]
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::GetValueOrDefault():Time
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThanOrEqual(Time, Time):bool
      5) br [14]
  Label [13]:
      1) ldc.i4.1
      5) br [14]
  Label [12]:
      1) ldc.i4.0
  Label [14]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F3:bool
      1) dup
      2) ldloca.s [Opt<Time> (1)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [15]
      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 [16]
      2) ldloca.s [Opt<Time> (0)]
      5) call Opt<Time>::GetValueOrDefault():Time
      1) ldloc.3 [Time]
      5) call static Time::op_LessThan(Time, Time):bool
      5) brfalse [15]
  Label [16]:
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::get_HasValue():bool
      5) brfalse [15]
      1) ldloc.3 [Time]
      2) ldloca.s [Opt<Time> (2)]
      5) call Opt<Time>::GetValueOrDefault():Time
      5) call static Time::op_LessThan(Time, Time):bool
      5) br [17]
  Label [15]:
      1) ldc.i4.0
  Label [17]:
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F4:bool
      1) dup
      1) ldloc.0 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F5:Opt<Time>
      1) dup
      1) ldloc.1 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F6:Opt<Time>
      1) dup
      1) ldloc.2 [Opt<Time>]
      5) stfld (bool,bool,bool,bool,bool,Opt<Time>,Opt<Time>,Opt<Time>)::_F7:Opt<Time>
      1) ret
  Total Size: 560

Func sig: (<ctx>:x, xt_q:t?*, yt_q:t?*, zt_q:t?*) to (s, s, t?, t?, t?)*
Sequence: Seq<(str,str,Opt<Time>,Opt<Time>,Opt<Time>)>
 0) (_M_M_, N_E_, <null>, <null>, <null>)
 1) (___M_, N_EL, <null>, <null>, -2.00:00:00)
 2) (___M_, N_EL, <null>, <null>, 00:00:00)
 3) (___M_, N_EL, <null>, <null>, 3.00:00:00)
 4) (M____, N_LG, <null>, -2.00:00:00, <null>)
 5) (___M_, N_EL, <null>, -2.00:00:00, -2.00:00:00)
 6) (M__MM, N_L_, <null>, -2.00:00:00, 00:00:00)
 7) (M__MM, N_L_, <null>, -2.00:00:00, 3.00:00:00)
 8) (M____, N_LG, <null>, 00:00:00, <null>)
 9) (M____, N_LG, <null>, 00:00:00, -2.00:00:00)
10) (___M_, N_EL, <null>, 00:00:00, 00:00:00)
11) (M__MM, N_L_, <null>, 00:00:00, 3.00:00:00)
12) (M____, N_LG, <null>, 3.00:00:00, <null>)
13) (M____, N_LG, <null>, 3.00:00:00, -2.00:00:00)
14) (M____, N_LG, <null>, 3.00:00:00, 00:00:00)
15) (___M_, N_EL, <null>, 3.00:00:00, 3.00:00:00)
16) (_M___, N_EG, -2.00:00:00, <null>, <null>)
17) (M____, N_LG, -2.00:00:00, <null>, -2.00:00:00)
18) (M____, N_LG, -2.00:00:00, <null>, 00:00:00)
19) (M____, N_LG, -2.00:00:00, <null>, 3.00:00:00)
20) (_M___, N_EG, -2.00:00:00, -2.00:00:00, <null>)
21) (_M_M_, N_E_, -2.00:00:00, -2.00:00:00, -2.00:00:00)
22) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 00:00:00)
23) (___M_, N_EL, -2.00:00:00, -2.00:00:00, 3.00:00:00)
24) (M____, N_LG, -2.00:00:00, 00:00:00, <null>)
25) (M____, N_LG, -2.00:00:00, 00:00:00, -2.00:00:00)
26) (___M_, N_EL, -2.00:00:00, 00:00:00, 00:00:00)
27) (M__MM, N_L_, -2.00:00:00, 00:00:00, 3.00:00:00)
28) (M____, N_LG, -2.00:00:00, 3.00:00:00, <null>)
29) (M____, N_LG, -2.00:00:00, 3.00:00:00, -2.00:00:00)
30) (M____, N_LG, -2.00:00:00, 3.00:00:00, 00:00:00)
31) (___M_, N_EL, -2.00:00:00, 3.00:00:00, 3.00:00:00)
32) (_M___, N_EG, 00:00:00, <null>, <null>)
33) (M____, N_LG, 00:00:00, <null>, -2.00:00:00)
34) (M____, N_LG, 00:00:00, <null>, 00:00:00)
35) (M____, N_LG, 00:00:00, <null>, 3.00:00:00)
36) (MMM__, N_G_, 00:00:00, -2.00:00:00, <null>)
37) (_M___, N_EG, 00:00:00, -2.00:00:00, -2.00:00:00)
38) (M____, N_LG, 00:00:00, -2.00:00:00, 00:00:00)
39) (M____, N_LG, 00:00:00, -2.00:00:00, 3.00:00:00)
40) (_M___, N_EG, 00:00:00, 00:00:00, <null>)
41) (_M___, N_EG, 00:00:00, 00:00:00, -2.00:00:00)
42) (_M_M_, N_E_, 00:00:00, 00:00:00, 00:00:00)
43) (___M_, N_EL, 00:00:00, 00:00:00, 3.00:00:00)
44) (M____, N_LG, 00:00:00, 3.00:00:00, <null>)
45) (M____, N_LG, 00:00:00, 3.00:00:00, -2.00:00:00)
46) (M____, N_LG, 00:00:00, 3.00:00:00, 00:00:00)
47) (___M_, N_EL, 00:00:00, 3.00:00:00, 3.00:00:00)
48) (_M___, N_EG, 3.00:00:00, <null>, <null>)
49) (M____, N_LG, 3.00:00:00, <null>, -2.00:00:00)
50) (M____, N_LG, 3.00:00:00, <null>, 00:00:00)
51) (M____, N_LG, 3.00:00:00, <null>, 3.00:00:00)
52) (MMM__, N_G_, 3.00:00:00, -2.00:00:00, <null>)
53) (_M___, N_EG, 3.00:00:00, -2.00:00:00, -2.00:00:00)
54) (M____, N_LG, 3.00:00:00, -2.00:00:00, 00:00:00)
55) (M____, N_LG, 3.00:00:00, -2.00:00:00, 3.00:00:00)
56) (MMM__, N_G_, 3.00:00:00, 00:00:00, <null>)
57) (MMM__, N_G_, 3.00:00:00, 00:00:00, -2.00:00:00)
58) (_M___, N_EG, 3.00:00:00, 00:00:00, 00:00:00)
59) (M____, N_LG, 3.00:00:00, 00:00:00, 3.00:00:00)
60) (_M___, N_EG, 3.00:00:00, 3.00:00:00, <null>)
61) (_M___, N_EG, 3.00:00:00, 3.00:00:00, -2.00:00:00)
62) (_M___, N_EG, 3.00:00:00, 3.00:00:00, 00:00:00)
63) (_M_M_, N_E_, 3.00:00:00, 3.00:00:00, 3.00:00:00)
*** Ctx ping count: 25
    [0](20): ChainMap(*1: yt_q, ForEach(*2: zt_q, (*3x, *1, *2)))
    [1](5): ChainMap(*1: xt_q, ChainMap(*2: yt_q, ForEach(*3: zt_q, (*1, *2, *3))))
###
